diff --git a/.cirrus.yml b/.cirrus.yml index 0aed3f6b23a10..1863cc0e5f342 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -25,4 +25,4 @@ task: tests_script: - export SKIP_IO_CAPTURE_TESTS=1 - export CI_NO_IPV6=1 - - sapi/cli/php run-tests.php -P -q -j2 -g FAIL,BORK,LEAK,XLEAK --offline --show-diff --show-slow 1000 --set-timeout 120 -d zend_extension=opcache.so + - sapi/cli/php run-tests.php -P -q -j2 -g FAIL,BORK,LEAK,XLEAK --no-progress --offline --show-diff --show-slow 1000 --set-timeout 120 -d zend_extension=opcache.so diff --git a/.github/actions/apt-x64/action.yml b/.github/actions/apt-x64/action.yml index a5b0db49e8270..abae59c8fdea4 100644 --- a/.github/actions/apt-x64/action.yml +++ b/.github/actions/apt-x64/action.yml @@ -5,6 +5,7 @@ runs: - shell: bash run: | set -x + sudo apt-get update sudo apt-get install \ bison \ @@ -58,11 +59,15 @@ runs: libjpeg-dev \ libpng-dev \ libfreetype6-dev + mkdir /opt/oracle wget -nv https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip unzip instantclient-basiclite-linuxx64.zip && rm instantclient-basiclite-linuxx64.zip wget -nv https://download.oracle.com/otn_software/linux/instantclient/instantclient-sdk-linuxx64.zip unzip instantclient-sdk-linuxx64.zip && rm instantclient-sdk-linuxx64.zip mv instantclient_*_* /opt/oracle/instantclient - # Interferes with libldap2 headers. + # interferes with libldap2 headers rm /opt/oracle/instantclient/sdk/include/ldap.h + # fix debug build warning: zend_signal: handler was replaced for signal (2) after startup + echo DISABLE_INTERRUPT=on > /opt/oracle/instantclient/network/admin/sqlnet.ora + sudo sh -c 'echo /opt/oracle/instantclient >/etc/ld.so.conf.d/oracle-instantclient.conf && ldconfig' diff --git a/.github/actions/brew/action.yml b/.github/actions/brew/action.yml index 36b76392048d4..8bdbeec7ab6b8 100644 --- a/.github/actions/brew/action.yml +++ b/.github/actions/brew/action.yml @@ -27,8 +27,9 @@ runs: gd \ libzip \ gmp \ - tidyp \ + tidy-html5 \ libxml2 \ + libjpeg \ libxslt \ postgresql brew link icu4c gettext --force diff --git a/.github/actions/configure-macos/action.yml b/.github/actions/configure-macos/action.yml index 319a00595ffc4..57a9b63a06ea2 100644 --- a/.github/actions/configure-macos/action.yml +++ b/.github/actions/configure-macos/action.yml @@ -38,7 +38,7 @@ runs: --enable-soap \ --enable-xmlreader \ --with-xsl \ - --with-tidy=/usr/local/opt/tidyp \ + --with-tidy=/usr/local/opt/tidy-html5 \ --with-libxml \ --enable-sysvsem \ --enable-sysvshm \ diff --git a/.github/actions/install-linux/action.yml b/.github/actions/install-linux/action.yml index e0f6726dbd1d3..7ac2ae4c4fcb1 100644 --- a/.github/actions/install-linux/action.yml +++ b/.github/actions/install-linux/action.yml @@ -10,3 +10,5 @@ runs: sudo chmod 777 /etc/php.d echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini + echo extension=oci8.so > /etc/php.d/oci8.ini + echo extension=pdo_oci.so > /etc/php.d/pdo_oci.ini diff --git a/.github/actions/mssql/action.yml b/.github/actions/setup-mssql/action.yml similarity index 91% rename from .github/actions/mssql/action.yml rename to .github/actions/setup-mssql/action.yml index 894380644c1ea..c069744a21b59 100644 --- a/.github/actions/mssql/action.yml +++ b/.github/actions/setup-mssql/action.yml @@ -1,4 +1,4 @@ -name: Create mssql container +name: Create MSSQL container runs: using: composite steps: diff --git a/.github/actions/setup-oracle/action.yml b/.github/actions/setup-oracle/action.yml new file mode 100644 index 0000000000000..11c16fe93d525 --- /dev/null +++ b/.github/actions/setup-oracle/action.yml @@ -0,0 +1,13 @@ +name: Create Oracle container +runs: + using: composite + steps: + - shell: bash + run: | + set -x + docker run \ + -e "ORACLE_PASSWORD=pass" \ + -p 1521:1521 \ + --name oracle \ + -h oracle \ + -d gvenzl/oracle-xe:slim diff --git a/.github/actions/setup-x64/action.yml b/.github/actions/setup-x64/action.yml index 6cec51d4c8079..bb014bfe9de11 100644 --- a/.github/actions/setup-x64/action.yml +++ b/.github/actions/setup-x64/action.yml @@ -17,7 +17,7 @@ runs: docker exec sql1 /opt/mssql-tools/bin/sqlcmd -S 127.0.0.1 -U SA -P "" -Q "create login pdo_test with password='password', check_policy=off; create user pdo_test for login pdo_test; grant alter, control to pdo_test;" sudo locale-gen de_DE - ./.github/scripts/setup-slapd.sh + ./.github/scripts/setup-slapd.sh &>/dev/null sudo cp ext/snmp/tests/snmpd.conf /etc/snmp sudo cp ext/snmp/tests/bigtest /etc/snmp diff --git a/.github/actions/test-linux/action.yml b/.github/actions/test-linux/action.yml index a0ec94ed80c31..cc32e9e693c91 100644 --- a/.github/actions/test-linux/action.yml +++ b/.github/actions/test-linux/action.yml @@ -20,11 +20,18 @@ runs: export PDO_DBLIB_TEST_DSN="dblib:host=127.0.0.1;dbname=master;version=7.0" export PDO_DBLIB_TEST_USER="pdo_test" export PDO_DBLIB_TEST_PASS="password" + export PHP_OCI8_TEST_USER="system" + export PHP_OCI8_TEST_PASS="pass" + export PHP_OCI8_TEST_DB="localhost/XEPDB1" + export PDO_OCI_TEST_USER="system" + export PDO_OCI_TEST_PASS="pass" + export PDO_OCI_TEST_DSN="oci:dbname=localhost/XEPDB1;charset=AL32UTF8" export SKIP_IO_CAPTURE_TESTS=1 export TEST_PHP_JUNIT=junit.out.xml sapi/cli/php run-tests.php -P -q ${{ inputs.runTestsParameters }} \ -j$(/usr/bin/nproc) \ -g FAIL,BORK,LEAK,XLEAK \ + --no-progress \ --offline \ --show-diff \ --show-slow 1000 \ diff --git a/.github/actions/test-macos/action.yml b/.github/actions/test-macos/action.yml index 46c7d39444350..3deafde06200c 100644 --- a/.github/actions/test-macos/action.yml +++ b/.github/actions/test-macos/action.yml @@ -18,6 +18,7 @@ runs: sapi/cli/php run-tests.php -P -q ${{ inputs.runTestsParameters }} \ -j$(sysctl -n hw.ncpu) \ -g FAIL,BORK,LEAK,XLEAK \ + --no-progress \ --offline \ --show-diff \ --show-slow 1000 \ diff --git a/.github/nightly_matrix.php b/.github/nightly_matrix.php index a099a3ba2ad67..9174f7dcd8d2d 100644 --- a/.github/nightly_matrix.php +++ b/.github/nightly_matrix.php @@ -1,6 +1,6 @@ - - There has not been any recent activity in this feature request. It will automatically be closed in 7 days + There has not been any recent activity in this feature request. It will automatically be closed in 14 days if no further action is taken. Please see https://github.com/probot/stale#is-closing-stale-issues-really-a-good-idea to understand why we auto-close stale feature requests. diff --git a/.github/workflows/close-stale-prs.yml b/.github/workflows/close-stale-prs.yml index e5fbacff5d152..ca4317be1e0f9 100644 --- a/.github/workflows/close-stale-prs.yml +++ b/.github/workflows/close-stale-prs.yml @@ -4,10 +4,16 @@ on: schedule: - cron: "0 0 * * *" +permissions: + contents: read + jobs: stale: if: github.repository_owner == 'php' runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write steps: - uses: actions/stale@v4 with: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 73921ad6c073b..13f0dc0864749 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -3,6 +3,8 @@ on: schedule: - cron: "0 1 * * *" workflow_dispatch: ~ +permissions: + contents: read jobs: GENERATE_MATRIX: name: Generate Matrix @@ -47,8 +49,10 @@ jobs: uses: actions/checkout@v2 with: ref: ${{ matrix.branch.ref }} - - name: Create mssql container - uses: ./.github/actions/mssql + - name: Create MSSQL container + uses: ./.github/actions/setup-mssql + - name: Create Oracle container + uses: ./.github/actions/setup-oracle - name: apt uses: ./.github/actions/apt-x64 - name: ./configure @@ -109,7 +113,7 @@ jobs: debug: [true, false] zts: [true, false] name: "${{ matrix.branch.name }}_MACOS_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}" - runs-on: macos-10.15 + runs-on: macos-11 steps: - name: git checkout uses: actions/checkout@v2 @@ -167,8 +171,10 @@ jobs: steps: - name: git checkout uses: actions/checkout@v2 - - name: Create mssql container - uses: ./.github/actions/mssql + - name: Create MSSQL container + uses: ./.github/actions/setup-mssql + - name: Create Oracle container + uses: ./.github/actions/setup-oracle - name: apt uses: ./.github/actions/apt-x64 - name: Install gcovr diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index f5a943dc583d4..862ff5240f42d 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -13,10 +13,13 @@ on: - PHP-7.4 - PHP-8.0 - PHP-8.1 + - PHP-8.2 - master pull_request: branches: - '**' +permissions: + contents: read jobs: LINUX_X64: strategy: @@ -32,8 +35,10 @@ jobs: steps: - name: git checkout uses: actions/checkout@v2 - - name: Create mssql container - uses: ./.github/actions/mssql + - name: Create MSSQL container + uses: ./.github/actions/setup-mssql + - name: Create Oracle container + uses: ./.github/actions/setup-oracle - name: apt uses: ./.github/actions/apt-x64 - name: ./configure @@ -63,7 +68,7 @@ jobs: - name: Verify generated files are up to date uses: ./.github/actions/verify-generated-files MACOS_DEBUG_NTS: - runs-on: macos-10.15 + runs-on: macos-11 steps: - name: git checkout uses: actions/checkout@v2 diff --git a/.github/workflows/remove-needs-feedback.yml b/.github/workflows/remove-needs-feedback.yml index fded33b442081..8d1ff3e0a0712 100644 --- a/.github/workflows/remove-needs-feedback.yml +++ b/.github/workflows/remove-needs-feedback.yml @@ -5,10 +5,16 @@ on: types: - created +permissions: + contents: read + jobs: build: if: "github.repository_owner == 'php' && contains(github.event.issue.labels.*.name, 'Status: Needs Feedback') && github.event.issue.user.login == github.event.sender.login" runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write steps: - uses: actions-ecosystem/action-remove-labels@v1 with: diff --git a/.gitignore b/.gitignore index afa85395322f5..7a4ba0e0222ba 100644 --- a/.gitignore +++ b/.gitignore @@ -202,6 +202,9 @@ php # Generated by x64 compiler, includes Debug, Debug_TS, Release, Release_TS /x64/ +# Generated by arm64 compiler, includes Debug, Debug_TS, Release, Release_TS +/arm64/ + # Miscellaneous files generated by Windows build system /main/config.w32.h /win32/build/deplister.exe diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 860e6ae0f3b8e..aa12fe0366aee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -331,7 +331,8 @@ Currently we have the following branches in use: | Branch | | | --------- | --------- | -| master | Active development branch for PHP 8.2, which is open for backwards incompatible changes and major internal API changes. | +| master | Active development branch for PHP 8.3, which is open for backwards incompatible changes and major internal API changes. | +| PHP-8.2 | Is used to release the PHP 8.2.x series. This is a current stable version and is open for bugfixes only. | | PHP-8.1 | Is used to release the PHP 8.1.x series. This is a current stable version and is open for bugfixes only. | | PHP-8.0 | Is used to release the PHP 8.0.x series. This is a current stable version and is open for bugfixes only. | | PHP-7.4 | Is used to release the PHP 7.4.x series. This is an old stable version and is open for security fixes only. | diff --git a/NEWS b/NEWS index 7fb9b27dc7688..011f3fe666e53 100644 --- a/NEWS +++ b/NEWS @@ -1,309 +1,13 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| -?? ??? ????, PHP 8.2.0beta3 - -- Random: - . Fixed bug GH-9235 (non-existant $sequence parameter in stub for - PcgOneseq128XslRr64::__construct()). (timwolla) - . Removed redundant RuntimeExceptions from Randomizer methods. The - exceptions thrown by the engines will be exposed directly. (timwolla) - . Added extension specific Exceptions/Errors (RandomException, RandomError, - BrokenRandomEngineError). (timwolla) - -- Standard: - . Fixed bug #65489 (glob() basedir check is inconsistent). (Jakub Zelenka) - -04 Aug 2022, PHP 8.2.0beta2 - -- Core: - . Fixed bug GH-7900 (Arrow function with never return type compile-time - errors). (ilutov) - -- Date: - . Fixed bug GH-8730 (DateTime::diff miscalculation is same time zone of - different type). (Derick) - . Fixed bug GH-8964 (DateTime object comparison after applying delta less - than 1 second). (Derick) - . Fixed bug GH-9106: (DateInterval 1.5s added to DateTimeInterface is rounded - down since PHP 8.1.0). (Derick) - . Fixed bug #75035 (Datetime fails to unserialize "extreme" dates). - (Derick) - . Fixed bug #80483 (DateTime Object with 5-digit year can't unserialized). - (Derick) - . Fixed bug #81263 (Wrong result from DateTimeImmutable::diff). (Derick) - -- DBA: - . Fixed LMDB driver memory leak on DB creation failure (Girgias) - . Fixed GH-8856 (dba: lmdb: allow to override the MDB_NOSUBDIR flag). (Girgias) - -- FFI: - . Fixed bug GH-9090 (Support assigning function pointers in FFI). (Adam - Saponara) - -- Intl: - . Declared Transliterator::$id as readonly to unlock subclassing it. (Nicolas - Grekas) - -- OPcache: - . Fixed bug GH-9164 (Segfault in zend_accel_class_hash_copy). - (Arnaud, Sergei Turchanov) - -- PCNTL: - . Fixed pcntl_(get|set)priority error handling for MacOS. (Juan Morales) - -- Random: - . Fixed bug GH-9067 (random extension is not thread safe). (cmb) - . Fixed bug GH-9055 (segmentation fault if user engine throws). (timwolla) - . Fixed bug GH-9066 (signed integer overflow). (zeriyoshi) - . Fixed bug GH-9083 (undefined behavior during shifting). (timwolla) - . Fixed bug GH-9088, GH-9056 (incorrect expansion of bytes when - generating uniform integers within a given range). (timwolla) - . Fixed bug GH-9089 (Fix memory leak on Randomizer::__construct() - call twice). (zeriyoshi) - . Fixed bug GH-9212 (PcgOneseq128XslRr64::jump() should not allow negative - $advance). (Anton Smirnov) - . Changed Mt19937 to throw a ValueError instead of InvalidArgumentException - for invalid $mode. (timwolla) - . Splitted Random\Randomizer::getInt() (without arguments) to - Random\Randomizer::nextInt(). (zeriyoshi) - -- Sockets: - . Added SOL_FILTER socket option for Solaris. (David Carlier) - -- SPL: - . Fixed bug #69181 (READ_CSV|DROP_NEW_LINE drops newlines within fields). - (cmb) - . Fixed bug #65069 (GlobIterator incorrect handling of open_basedir check). - (Jakub Zelenka) - -21 Jul 2022, PHP 8.2.0beta1 - -- CLI: - . Updated the mime-type table for the builtin-server. (Ayesh Karunaratne) - . Fixed potential overflow for the builtin server via the - PHP_CLI_SERVER_WORKERS environment variable. (yiyuaner) - . Fixed GH-8575 by changing STDOUT, STDERR and STDIN to not close on resource - destruction. (Jakub Zelenka) - -- Core: - . Reduced the memory footprint of strings returned by var_export(), - json_encode(), serialize(), iconv_*(), mb_ereg*(), session_create_id(), - http_build_query(), strstr(), Reflection*::__toString(). (Arnaud) - . Fixed bug GH-8995 (WeakMap object reference offset causing TypeError). - (Tobias Bachert) - . Added error_log_mode ini setting. (Mikhail Galanin) - . Updated request startup messages. (Eric Norris) - -- COM: - . Fixed bug GH-8750 (Can not create VT_ERROR variant type). (cmb) - -- Filter: - . Added FILTER_FLAG_GLOBAL_RANGE to filter Global IPs. (vnsavage) - -- FPM: - . Added listen.setfib pool option to set route FIB on FreeBSD. (David Carlier) - . Added access.suppress_path pool option to filter access log entries. - (Mark Gallagher) - . Fixed on fpm scoreboard occasional warning on acquisition failure. - (Felix Wiedemann) - -- Opcache: - . Added initial support for JIT performance profiling generation - for macOs Instrument. (David Carlier) - . Fixed bug GH-8030 (Segfault with JIT and large match/switch statements). - (Arnaud) - . Added JIT support improvement for macOs for segments and executable permission - bit handling. (David Carlier) - . Added JIT buffer allocation near the .text section on FreeNSD. (David Carlier) - -- PCRE: - . Updated bundled libpcre to 10.40. (cmb) - -- PDO_Firebird: - . Fixed bug GH-8576 (Bad interpretation of length when char is UTF-8). (cmb) - -- Random: - . Added new random extension. (Go Kudo) - -- SPL: - . Widen iterator_to_array() and iterator_count()'s $iterator parameter to - iterable. (timwolla) - -- Standard: - . Implemented FR GH-8924 (str_split should return empty array for empty - string). (Michael Vorisek) - . Added ini_parse_quantity function to convert ini quantities shorthand - notation to int. (Dennis Snell) - . Enable arc4random_buf for Linux glibc 2.36 and onwards - for the random_bytes. (Cristian Rodriguez) - . Uses CCRandomGenerateBytes instead of arc4random_buf on macOs. (David Carlier). - -- Windows: - . Added preliminary support for (cross-)building for ARM64. (Yun Dou) - -07 Jul 2022, PHP 8.2.0alpha3 - -- Core: - . Uses safe_perealloc instead of perealloc for the - ZEND_PTR_STACK_RESIZE_IF_NEEDED to avoid possible overflows. (David Carlier) - -- DBA: - . Fixed LMDB driver hanging when attempting to delete a non-existing key - (Girgias) - -- Intl: - . Fixed build for ICU 69.x and onwards. (David Carlier) +?? ??? ????, PHP 8.3.0alpha1 - Opcache: - . Allocate JIT buffer close to PHP .text segemnt to allow using direct - IP-relative calls and jumps. - (Su Tao, Wang Xue, Chen Hu, Lizhen Lizhen, Dmitry) - -- Sockets: - . Added TCP_CONGESTION socket option. (David Carlier) - . Added SO_ZEROCOPY/MSG_ZEROCOPY options. (David Carlier) - -- SPL: - . Uses safe_erealloc instead of erealloc to handle heap growth - for the SplHeap::insert method to avoid possible overflows. (David Carlier) - -- Standard: - . Fixed the crypt_sha256/512 api build with clang > 12. (David Carlier) - . Uses safe_erealloc instead of erealloc to handle options in getopt - to avoid possible overflows. (David Carlier) - -- Zip: - - . Implement fseek for zip stream when possible with libzip 1.9.1. (Remi) - -23 Jun 2022, PHP 8.2.0alpha2 - -- Core: - . Fixed bug GH-8655 (Casting an object to array does not unwrap refcount=1 - references). (Nicolas Grekas) - . Fixed bug GH-8661 (Nullsafe in coalesce triggers undefined variable - warning). (ilutov) - . Fixed bug GH-7821 and GH-8418 (Allow arbitrary const expressions in backed - enums). (ilutov) - . Fixed bug GH-8810 (Incorrect lineno in backtrace of multi-line function - calls). (ilutov) - . Optimised code path for newly created file with the stream plain wrapper. (Max Kellermann) - -- Curl: - . Added new constants from cURL 7.62 to 7.80. (Pierrick) - . New function curl_upkeep(). (Pierrick) - -- OpenSSL: - . Discard poll calls on socket when no timeout/non blocking/MSG_DONTWAIT. (Max Kellermann) - -- PCRE: - . Implemented FR #77726 (Allow null character in regex patterns). (cmb) - -- Standard: - . Deprecated utf8_encode() and utf8_decode(). (Rowan Tommins) - -- Streams: - . Discard poll calls on socket when no timeout/non blocking/MSG_DONTWAIT. (Max Kellermann) - -09 Jun 2022, PHP 8.2.0alpha1 - -- CLI: - . Fixed bug #81496 (Server logs incorrect request method). (lauri) - -- Core: - . Fixed bug #81380 (Observer may not be initialized properly). (krakjoe) - . Fixed bug GH-7771 (Fix filename/lineno of constant expressions). (ilutov) - . Fixed bug GH-7792 (Improve class type in error messages). (ilutov) - . Support huge pages on MacOS. (David CARLIER) - -- Curl: - . Added support for CURLOPT_XFERINFOFUNCTION. (David Carlier) - . Added support for CURLOPT_MAXFILESIZE_LARGE. (David Carlier) - -- Date: - . Fixed GH-8458 (DateInterval::createFromDateString does not throw if - non-relative items are present). (Derick) - . Fixed bug #52015 (Allow including end date in DatePeriod iterations) - (Daniel Egeberg, Derick) - . idate() now accepts format specifiers "N" (ISO Day-of-Week) and "o" (ISO - Year). (Pavel Djundik) - -- FPM: - . Emit error for invalid port setting. (David Carlier) - . Added extra check for FPM proc dumpable on SELinux based systems. - (David Carlier) - . Added support for listening queue on macOS. (David Carlier) - . Changed default for listen.backlog on Linux to -1. (Cristian Rodríguez) - -- FTP: - . Fix datetime format string to follow POSIX spec in ftp_mdtm(). (Jihwan Kim) - -- Intl: - . Update all grandfathered language tags with preferred values - . Fixed GH-7939 (Cannot unserialize IntlTimeZone objects). (cmb) - -- OCI8: - . Added oci8.prefetch_lob_size directive to tune LOB query performance - . Support for building against Oracle Client libraries 10.1 and 10.2 has been - dropped. Oracle Client libraries 11.2 or newer are now required. - -- ODBC: - . Fixed bug GH-8300 (User input not escaped when building connection string). - (Calvin Buckley) - -- PDO_ODBC: - . Fixed bug #80909 (crash with persistent connections in PDO_ODBC). (Calvin - Buckley) - . Fixed bug GH-8300 (User input not escaped when building connection string). - (Calvin Buckley) - -- Reflection: - . Added ReflectionFunction::isAnonymous(). (Nicolas Grekas) - . Added ReflectionMethod::hasPrototype(). (Ollie Read) - . Narrow ReflectionEnum::getBackingType() return type to ReflectionNamedType. - (SamMousa) - -- Session: - . Fixed bug GH-7787 (Improve session write failure message for user error - handlers). (ilutov) - -- Sockets: - . Added TCP_NOTSENT_LOWAT socket option. (David Carlier) - . Added SO_MEMINFO socket option. (David Carlier) - . Added SO_RTABLE socket option (OpenBSD), equivalent of SO_MARK (Linux). - (David Carlier) - . Added TCP_KEEPALIVE, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT socket - options. (David Carlier) - . Added ancillary data support for FreeBSD. (David Carlier) - . Added ancillary data support for NetBSD. (David Carlier) - . Added SO_BPF_EXTENSIONS socket option. (David Carlier) - . Added SO_SETFIB socket option. (David Carlier) - -- Sodium: - . Added sodium_crypto_stream_xchacha20_xor_ic(). (Scott) - -- SQLite3: - . Changed sqlite3.defensive from PHP_INI_SYSTEM to PHP_INI_USER. (bohwaz) - -- Standard: - . net_get_interfaces() also reports wireless network interfaces on Windows. - (Yurun) - . Finished AVIF support in getimagesize(). (Yannis Guyon) - . Fixed bug GH-7847 (stripos with large haystack has bad performance). - (ilutov) - . New function memory_reset_peak_usage(). (Patrick Allaert) - . Fixed parse_url(): can not recognize port without scheme. (pandaLIU) - -- Streams: - . Set IP_BIND_ADDRESS_NO_PORT if available when connecting to remote host. - (Cristian Rodríguez) - . Fixed bug GH-8548 (stream_wrapper_unregister() leaks memory). (ilutov) + . Added start, restart and force restart time to opcache's + phpinfo section. (Mikhail Galanin) + +- Posix: + . Added posix_sysconf. (David Carlier) -- Zip: - . add ZipArchive::clearError() method - . add ZipArchive::getStreamName() method - . add ZipArchive::getStreamIndex() method - . On Windows, the Zip extension is now built as shared library (DLL) by - default. (cmb) <<< NOTE: Insert NEWS from last stable release here prior to actual release! >>> diff --git a/UPGRADING b/UPGRADING index 39bc307be46f8..e44936416e2c0 100644 --- a/UPGRADING +++ b/UPGRADING @@ -1,4 +1,4 @@ -PHP 8.2 UPGRADE NOTES +PHP 8.3 UPGRADE NOTES 1. Backward Incompatible Changes 2. New Features @@ -19,116 +19,10 @@ PHP 8.2 UPGRADE NOTES 1. Backward Incompatible Changes ======================================== -- Date: - . DateTime::createFromImmutable() now has a tentative return type of static, - previously it was DateTime. - . DateTimeImmutable::createFromMutable() now has a tentative return type of static, - previously it was DateTimeImmutable. - -- ODBC: - . The ODBC extension now escapes the username and password for the case when - both a connection string and username/password are passed, and the string - must be appended to. Before, user values containing values needing escaping - could have created a malformed connection string, or injected values from - user-provided data. The escaping rules should be identical to the .NET BCL - DbConnectionOptions behaviour. - -- PDO_ODBC: - . The PDO_ODBC extension also escapes the username and password when a - connection string is passed. See the change to the ODBC extension for - further details. - -- Standard: - . glob() returns empty array if all paths are restricted by open_basedir. - Previously the error was returned but that behavior was not consistent and - did not work correctly for all patterns. - . strtolower() and strtoupper() are no longer locale-sensitive. They now - perform ASCII case conversion, as if the locale were "C". Use - mb_strtolower() if you want localized case conversion. Similarly, stristr, - stripos, strripos, lcfirst, ucfirst, ucwords, str_ireplace, - array_change_key_case and sorting with SORT_FLAG_CASE use ASCII case - conversion. - . str_split() returns an empty array for an empty string now. Previously it - returned an array with a single empty string entry. mb_str_split() is not - affected by this change since it was already behaving like that. - -- SPL: - . The following methods now enforce their signature: - * SplFileInfo::_bad_state_ex() - * SplFileObject::getCsvControl() - * SplFileObject::fflush() - * SplFileObject::ftell() - * SplFileObject::fgetc() - * SplFileObject::fpassthru() - . SplFileObject::hasChildren() now has a tentative return type of false, - previously it was bool - . SplFileObject::getChildren() now has a tentative return type of null, - previously it was ?RecursiveIterator - . GlogIterator returns empty array if all paths are restricted by - open_basedir. Previously the error was returned but that behavior was not - consistent and did not work correctly. - ======================================== 2. New Features ======================================== -- Core: - . Added the #[\SensitiveParameter] attribute to redact sensitive data in - backtraces. - RFC: https://wiki.php.net/rfc/redact_parameters_in_back_traces - . It is now possible to use null and false as standalone types. - RFC: https://wiki.php.net/rfc/null-false-standalone-types - . Added support for readonly classes. - RFC: https://wiki.php.net/rfc/readonly_classes - . Added support for true type. - RFC: https://wiki.php.net/rfc/true-type - . Added support for Disjoint Normal Form (DNF) types. - RFC: https://wiki.php.net/rfc/dnf_types - . Added error_log_mode ini setting that allows setting of permissions for - error log file. - . Added support for fetching properties of enums in constant expressions. - RFC: https://wiki.php.net/rfc/fetch_property_in_const_expressions - - -- Curl: - . Added CURLINFO_EFFECTIVE_METHOD option and returning the effective - HTTP method in curl_getinfo() return value. - . Exposed multiple new constants from libcurl 7.62 to 7.80. - . Added new function curl_upkeep() to perform any connection upkeep checks. - -- DBA: - . The LMDB Driver now accepts the DBA_LMDB_USE_SUB_DIR or DBA_LMDB_NO_SUB_DIR - flags to determine if it should create a sub directory or not when creating - a database file. - -- OCI8: - . Added an oci8.prefetch_lob_size directive and oci_set_prefetch_lob() - function to tune LOB query performance by reducing the number of - round-trips between PHP and Oracle Database when fetching LOBS. This is - usable with Oracle Database 12.2 or later. - -- ODBC: - . Added odbc_connection_string_is_quoted, odbc_connection_string_should_quote, - and odbc_connection_string_quote. These are primarily used behind the scenes - in the ODBC and PDO_ODBC extensions, but is exposed to userland for easier - unit testing, and for user applications and libraries to perform quoting - themselves. - -- PCRE: - . Added support for the "n" (NO_AUTO_CAPTURE) modifier, which makes simple - `(xyz)` groups non-capturing. Only named groups like `(?xyz)` are - capturing. This only affects which groups are capturing, it is still - possible to use numbered subpattern references, and the matches array will - still contain numbered results. - -- Random: - . New extension that organizes and consolidates existing implementations - related to random number generators. New, higher quality RNGs are available - and scope issues are eliminated. - RFC: https://wiki.php.net/rfc/rng_extension - RFC: https://wiki.php.net/rfc/random_extension_improvement - - ======================================== 3. Changes in SAPI modules ======================================== @@ -137,111 +31,16 @@ PHP 8.2 UPGRADE NOTES 4. Deprecated Functionality ======================================== -- Core: - . Creation of dynamic properties is deprecated, unless the class opts in by - using the #[AllowDynamicProperties] attribute. stdClass allows dynamic - properties. Usage of __get()/__set() is not affected by this change. A - dynamic properties deprecation warning can be addressed by: - - Declaring the property (preferred). - - Adding the #[AllowDynamicProperties] attribute to the class (which also - applies to all child classes). - - Using a WeakMap if you wish to associate additional data with an object - you do not own. - - . Callables that are not accepted by the $callable() syntax (but are accepted - by call_user_func) are deprecated. In particular: - - "self::method" - "parent::method" - "static::method" - ["self", "method"] - ["parent", "method"] - ["static", "method"] - ["Foo", "Bar::method"] - [new Foo, "Bar::method"] - - This does not affect normal method callables like "A::method" or - ["A", "method"]. - - RFC: https://wiki.php.net/rfc/deprecate_partially_supported_callables - RFC: https://wiki.php.net/rfc/partially-supported-callables-expand-deprecation-notices - - . The "${var}" and "${expr}" style string interpolations are deprecated and - will be removed in PHP 9. Use "$var"/"{$var}" or "{${expr}}", respectively. - RFC: https://wiki.php.net/rfc/deprecate_dollar_brace_string_interpolation - -- Mbstring: - . Use of QPrint, Base64, Uuencode, and HTML-ENTITIES 'text encodings' is - deprecated for all Mbstring functions. Unlike all the other text - encodings supported by Mbstring, these do not encode a sequence of - Unicode codepoints, but rather a sequence of raw bytes. It is not - clear what the correct return values for most Mbstring functions should - be when one of these non-encodings is specified. Further, PHP has - separate, built-in implementations of all of them; for example, UUencoded - data can be handled using convert_uuencode/convert_uudecode. - -- SPL: - . The SplFileInfo::_bad_state_ex() internal method has been deprecated. - -- Standard: - . utf8_encode() and utf8_decode() have been deprecated. - ======================================== 5. Changed Functions ======================================== -- Core - . str*cmp, str*pos, substr_compare functions, using binary safe string - comparison now return -1, 0 and 1. - -- DBA - . dba_open() and dba_popen() now have the following enforced function signature - dba_open(string $path, string $mode, ?string $handler = null, int $permission = 0o644, int $map_size = 0, ?int $flags = null) - . dba_fetch()'s optional skip argument is now at the end in line with - PHP userland semantics its signature now is: - dba_fetch(string|array $key, $dba, int $skip = 0): string|false - The overloaded signature - dba_fetch(string|array $key, $skip, $dba): string|false - is still accepted, but it is recommended to use the new standard variant. - -- Random - . random_bytes() and random_int() now throw \Random\RandomException on CSPRNG failure. - Previously a plain \Exception was thrown. - -- SPL - . The $iterator parameter of iterator_to_array() and iterator_count() is - widened to iterable from Iterator, allowing arrays to be passed. - RFC: https://wiki.php.net/rfc/iterator_xyz_accept_array - ======================================== 6. New Functions ======================================== -- Curl: - . curl_upkeep() (libcurl >= 7.62.0) - -- mysqli: - . mysqli_execute_query() - -- Reflection: - . ReflectionFunction::isAnonymous() - . ReflectionMethod::hasPrototype() - -- Sodium: - . sodium_crypto_stream_xchacha20_xor_ic() - -- Standard: - . The peak memory usage can now be reset to the current usage thanks to - memory_reset_peak_usage(). - . ini_parse_quantity(): Parses "shorthand bytes" quantities returned by - ini_get(). The function is suitable for parsing quantities whose int value - is in the range [PHP_INT_MIN, PHP_INT_MAX]. - Parsing and interpretation is consistent with ini_set() (see also the - "Changes to INI File Handling" section). - Caveats: Some ini settings may apply additional constraints to the resuling - int value, such as a smaller range, that will not be reflected by - ini_parse_quantity(). The `memory_limit` setting accepts values higher than - PHP_INT_MAX, than can not be parsed by ini_parse_quantity(). +- Posix: + . Added posix_sysconf call to get runtime informations. ======================================== 7. New Classes and Interfaces @@ -255,278 +54,28 @@ PHP 8.2 UPGRADE NOTES 9. Other Changes to Extensions ======================================== -- Date: - . DatePeriod properties are now properly declared. - -- Intl: - . IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, - IntlPartsIterator, IntlCalendar, IntlCalendar, Collator, IntlIterator, - UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter, - ResourceBundle, Spoofchecker, IntlTimeZone and Transliterator instances are - no longer serializable. Previously, they could be serialized, but - unserialization yielded unusable objects or failed. - -- mysqli: - . The support for libmysql has been removed. It's no longer possible to compile - mysqli with libmysql and all relevant functionality has been removed. - . The reconnect property of mysqli_driver has been removed. It was supported only by libmysql. - . The INI directive mysqli.reconnect has been removed. - . The constant MYSQLI_IS_MARIADB has been deprecated. - -- OCI8: - . The minimum Oracle Client library version required is now 11.2. - -- PCRE: - . NUL characters (\0) in pattern strings are now supported. - -- SQLite3: - . sqlite3.defensive is now PHP_INI_USER. - -- Standard: - . getimagesize() now reports the actual image dimensions, bits and channels - of AVIF images. Previously, the dimensions have been reported as 0x0, and - bits and channels have not been reported at all. - -- Tidy: - . tidy properties are now properly declared. - . tidyNode properties are now properly declared as readonly. - -- Zip: - . extension updated to 1.20.0 with new methods: - ZipArchive::clearError, getStreamName and getStreamIndex - ======================================== 10. New Global Constants ======================================== -- COM_DOTNET: - . DISP_E_PARAMNOTFOUND - . LOCALE_NEUTRAL - -- Curl: - . CURLALTSVC_H1 (libcurl >= 7.64.1) - . CURLALTSVC_H2 (libcurl >= 7.64.1) - . CURLALTSVC_H3 (libcurl >= 7.64.1) - . CURLALTSVC_READONLYFILE (libcurl >= 7.64.1) - . CURLAUTH_AWS_SIGV4 (libcurl >= 7.75.0) - . CURLE_PROXY (libcurl >= 7.73.0) - . CURLFTPMETHOD_DEFAULT - . CURLHSTS_ENABLE (libcurl >= 7.74.0) - . CURLHSTS_READONLYFILE (libcurl >= 7.74.0) - . CURLINFO_PROXY_ERROR (libcurl >= 7.73.0) - . CURLINFO_REFERER (libcurl >= 7.76.0) - . CURLINFO_RETRY_AFTER (libcurl >= 7.66.0) - . CURLMOPT_MAX_CONCURRENT_STREAMS (libcurl >= 7.67.0) - . CURLOPT_ALTSVC_CTRL (libcurl >= 7.64.1) - . CURLOPT_ALTSVC (libcurl >= 7.64.1) - . CURLOPT_AWS_SIGV4 (libcurl >= 7.75.0) - . CURLOPT_CAINFO_BLOB (libcurl >= 7.77.0) - . CURLOPT_DOH_SSL_VERIFYHOST (libcurl >= 7.76.0) - . CURLOPT_DOH_SSL_VERIFYPEER (libcurl >= 7.76.0) - . CURLOPT_DOH_SSL_VERIFYSTATUS (libcurl >= 7.76.0) - . CURLOPT_HSTS_CTRL (libcurl >= 7.74.0) - . CURLOPT_HSTS (libcurl >= 7.74.0) - . CURLOPT_MAIL_RCPT_ALLLOWFAILS (libcurl >= 7.69.0) - . CURLOPT_MAXAGE_CONN (libcurl >= 7.65.0) - . CURLOPT_MAXFILESIZE_LARGE - . CURLOPT_MAXLIFETIME_CONN (libcurl >= 7.80.0) - . CURLOPT_PROXY_CAINFO_BLOB (libcurl >= 7.77.0) - . CURLOPT_SASL_AUTHZID (libcurl >= 7.66.0) - . CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 (libcurl >= 7.80.0) - . CURLOPT_SSL_EC_CURVES (libcurl >= 7.73.0) - . CURLOPT_UPKEEP_INTERVAL_MS (libcurl >= 7.62.0) - . CURLOPT_UPLOAD_BUFFERSIZE (libcurl >= 7.62.0) - . CURLOPT_XFERINFOFUNCTION (libcurl >= 7.32.0) - . CURLPROTO_MQTT (libcurl >= 7.71.0) - . CURLPX_BAD_ADDRESS_TYPE (libcurl >= 7.73.0) - . CURLPX_BAD_VERSION (libcurl >= 7.73.0) - . CURLPX_CLOSED (libcurl >= 7.73.0) - . CURLPX_GSSAPI (libcurl >= 7.73.0) - . CURLPX_GSSAPI_PERMSG (libcurl >= 7.73.0) - . CURLPX_GSSAPI_PROTECTION (libcurl >= 7.73.0) - . CURLPX_IDENTD_DIFFER (libcurl >= 7.73.0) - . CURLPX_IDENTD (libcurl >= 7.73.0) - . CURLPX_LONG_HOSTNAME (libcurl >= 7.73.0) - . CURLPX_LONG_PASSWD (libcurl >= 7.73.0) - . CURLPX_LONG_USER (libcurl >= 7.73.0) - . CURLPX_NO_AUTH (libcurl >= 7.73.0) - . CURLPX_OK (libcurl >= 7.73.0) - . CURLPX_RECV_ADDRESS (libcurl >= 7.73.0) - . CURLPX_RECV_AUTH (libcurl >= 7.73.0) - . CURLPX_RECV_CONNECT (libcurl >= 7.73.0) - . CURLPX_RECV_REQACK (libcurl >= 7.73.0) - . CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED (libcurl >= 7.73.0) - . CURLPX_REPLY_COMMAND_NOT_SUPPORTED (libcurl >= 7.73.0) - . CURLPX_REPLY_CONNECTION_REFUSED (libcurl >= 7.73.0) - . CURLPX_REPLY_GENERAL_SERVER_FAILURE (libcurl >= 7.73.0) - . CURLPX_REPLY_HOST_UNREACHABLE (libcurl >= 7.73.0) - . CURLPX_REPLY_NETWORK_UNREACHABLE (libcurl >= 7.73.0) - . CURLPX_REPLY_NOT_ALLOWED (libcurl >= 7.73.0) - . CURLPX_REPLY_TTL_EXPIRED (libcurl >= 7.73.0) - . CURLPX_REPLY_UNASSIGNED (libcurl >= 7.73.0) - . CURLPX_REQUEST_FAILED (libcurl >= 7.73.0) - . CURLPX_RESOLVE_HOST (libcurl >= 7.73.0) - . CURLPX_SEND_AUTH (libcurl >= 7.73.0) - . CURLPX_SEND_CONNECT (libcurl >= 7.73.0) - . CURLPX_SEND_REQUEST (libcurl >= 7.73.0) - . CURLPX_UNKNOWN_FAIL (libcurl >= 7.73.0) - . CURLPX_UNKNOWN_MODE (libcurl >= 7.73.0) - . CURLPX_USER_REJECTED (libcurl >= 7.73.0) - . CURLSSLOPT_AUTO_CLIENT_CERT (libcurl >= 7.77.0) - . CURLSSLOPT_NATIVE_CA (libcurl >= 7.71.0) - . CURLSSLOPT_NO_PARTIALCHAIN (libcurl >= 7.68.0) - . CURLSSLOPT_REVOKE_BEST_EFFORT (libcurl >= 7.70.0) - . CURL_VERSION_GSASL (libcurl >= 7.76.0) - . CURL_VERSION_HSTS (libcurl >= 7.74.0) - . CURL_VERSION_HTTP3 (libcurl >= 7.66.0) - . CURL_VERSION_UNICODE (libcurl >= 7.72.0) - . CURL_VERSION_ZSTD (libcurl >= 7.72.0) - -- Filter - . FILTER_FLAG_GLOBAL_RANGE - -- Sockets: - . SO_INCOMING_CPU - . SO_MEMINFO - . SO_RTABLE (OpenBSD) - . TCP_KEEPALIVE (MacOS) - . TCP_KEEPCNT (Linux, others) - . TCP_KEEPIDLE (Linux, others) - . TCP_KEEPINTVL (Linux, others) - . TCP_NOTSENT_LOWAT - . LOCAL_CREDS_PERSISTENT (FreeBSD) - . SCM_CREDS2 (FreeBSD) - . LOCAL_CREDS (NetBSD) - . SO_BPF_EXTENSIONS - . SO_SETFIB - . TCP_CONGESTION (Linux, FreeBSD) - . SO_ZEROCOPY (Linux) - . MSG_ZEROCOPY (Linux) +- Posix: + . POSIX_SC_ARG_MAX + . POSIX_SC_PAGESIZE + . POSIX_SC_NPROCESSORS_CONF + . POSIX_SC_NPROCESSORS_ONLN ======================================== 11. Changes to INI File Handling ======================================== -- Parsing of some ill-formatted values will now trigger a warning when this was - silently ignored before. Interpretation of these values is not changed, for - backwards compatibility. This affects the following settings: - . bcmath.scale - . com.code_page - . default_socket_timeout - . fiber.stack_size - . hard_timeout - . intl.error_level - . ldap.max_links - . max_input_nesting_level - . max_input_vars - . mbstring.regex_retry_limit - . mbstring.regex_stack_limit - . mysqli.allow_local_infile - . mysqli.allow_persistent - . mysqli.default_port - . mysqli.max_links - . mysqli.max_persistent - . mysqli.reconnect - . mysqli.rollback_on_cached_plink - . mysqlnd.log_mask - . mysqlnd.mempool_default_size - . mysqlnd.net_read_buffer_size - . mysqlnd.net_read_timeout - . oci8.default_prefetch - . oci8.max_persistent - . oci8.persistent_timeout - . oci8.ping_interval - . oci8.prefetch_lob_size - . oci8.privileged_connect - . oci8.statement_cache_size - . odbc.allow_persistent - . odbc.check_persistent - . odbc.defaultbinmode - . odbc.default_cursortype - . odbc.defaultlrl - . odbc.max_links - . odbc.max_persistent - . opcache.consistency_checks - . opcache.file_update_protection - . opcache.force_restart_timeout - . opcache.interned_strings_buffer - . opcache.jit_bisect_limit - . opcache.jit_blacklist_root_trace - . opcache.jit_blacklist_side_trace - . opcache.jit_debug - . opcache.jit_hot_func - . opcache.jit_hot_loop - . opcache.jit_hot_return - . opcache.jit_hot_side_exit - . opcache.jit_max_exit_counters - . opcache.jit_max_loop_unrolls - . opcache.jit_max_polymorphic_calls - . opcache.jit_max_recursive_calls - . opcache.jit_max_recursive_returns - . opcache.jit_max_root_traces - . opcache.jit_max_side_traces - . opcache.log_verbosity_level - . opcache.max_file_size - . opcache.opt_debug_level - . opcache.optimization_level - . opcache.revalidate_freq - . output_buffering - . pcre.backtrack_limit - . pcre.recursion_limit - . pgsql.max_links - . pgsql.max_persistent - . post_max_size - . realpath_cache_size - . realpath_cache_ttl - . session.cache_expire - . session.cookie_lifetime - . session.gc_divisor - . session.gc_maxlifetime - . session.gc_probability - . soap.wsdl_cache_limit - . soap.wsdl_cache_ttl - . unserialize_max_depth - . upload_max_filesize - . user_ini.cache_ttl - . xmlrpc_error_number - . zend.assertions - . zlib.output_compression_level - ======================================== 12. Windows Support ======================================== -- Core: - . Windows specific error messages are no longer localized, but instead in - English to better match PHP error messages. - . Preliminary and highly experimental support for building on ARM64 has been - added. - -- OCI8: - . Since building against Oracle Client 10g is no longer supported anyway, - the configuration option --with-oci8 has been dropped. --with-oci8-11g, - --with-oci8-12c and --with-oci8-19 are still supported. - -- Zip: - . The Zip extension upgraded to version 1.21.0 - . The Zip extension is now built as shared library (DLL) by default. - ======================================== 13. Other Changes ======================================== -- CLI: - . The STDOUT, STDERR and STDIN are no longer closed on resource destruction - which is mostly when the CLI finishes. It is however still possible to - explicitly close those streams using fclose and similar. - -- Core: - . The iterable type is now a built-in compile time alias for array|Traversable. - Error messages relating to iterable will therefore now use array|Traversable. - Type Reflection is preserved for single iterable (and ?iterable) to produce - a ReflectionNamedType with name iterable, however usage of iterable in - union types will be converted to array|Traversable - ======================================== 14. Performance Improvements ======================================== diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index 47c42d48d4274..8171455c0952c 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -1,4 +1,4 @@ -PHP 8.2 INTERNALS UPGRADE NOTES +PHP 8.3 INTERNALS UPGRADE NOTES 1. Internal API changes @@ -14,45 +14,6 @@ PHP 8.2 INTERNALS UPGRADE NOTES 1. Internal API changes ======================== -* Removed zend_binary_zval_str(n)casecmp() APIs. These were thin wrappers - around zend_binary_str(n)casecmp_l() -- rather than - zend_binary_str(n)casecmp() as one would expect. Call the appropriate - wrapped function directly instead. -* Removed the (ZEND_)WRONG_PARAM_COUNT_WITH_RETVAL() macros. -* php_stristr() no longer lowercases the haystack and needle as a side effect. - Call zend_str_tolower() yourself if necessary. You no longer need to copy - the haystack and needle before passing them to php_stristr(). -* zend_register_module_ex() no longer copies the module entry. -* The main/php_stdint.h header has been removed. - Include the standard and/or headers instead. - Replace usage of u_char by the standard C99 uint8_t type. -* A new ZEND_THREEWAY_COMPARE() macro has been introduced which does a - three-way comparison of two integers and returns -1, 0 or 1 if the LHS is - smaller, equal or larger than the RHS -* Deprecated zend_atoi() and zend_atol(). Use ZEND_STRTOL() for general purpose - string to long conversion, or a variant of zend_ini_parse_quantity() for - parsing ini quantities. -* The return types of the following object handlers has changed from int to zend_result - - zend_object_cast_t - - zend_object_count_elements_t - - zend_object_get_closure_t - - zend_object_do_operation_t -* Added a new zero_position argument to php_stream_fopen_from_fd_rel to reflect - if this a newly created file so the current file offset needs not to be checked. -* Added smart_str_trim_to_size(). The function trims the memory allocated for the - string. This can considerably reduce the memory footprint of strings smaller - than approximately 4096 bytes. -* smart_str_extract() and the spprintf family of functions now use - smart_str_trim_to_size() before returning the string. -* It is recommended to use smart_str_extract() or smart_str_trim_to_size() when - using the smart_str API. -* zend_is_callable_ex, and functions which call it such as zend_is_callable and - zend_fcall_info_init, will issue deprecation notices if passed values which - are deprecated (see main UPGRADING notes). To suppress the notice, e.g. to - avoid duplicates when processing the same value multiple times, pass or add - IS_CALLABLE_SUPPRESS_DEPRECATIONS to the check_flags parameter. -* Registered zend_observer_fcall_init handlers are now also called for internal functions. - ======================== 2. Build system changes ======================== @@ -61,37 +22,10 @@ PHP 8.2 INTERNALS UPGRADE NOTES 3. Module changes ======================== - a. ext/standard - - The PHP APIs string_natural_compare_function_ex(), - string_natural_case_compare_function(), and string_natural_compare_function() - have been removed. They always returned SUCCESS and were a wrapper around - strnatcmp_ex(). Use strnatcmp_ex() directly instead. - - The PHP API php_fgetcsv() now returns a HashTable* instead of having an in-out - zval parameter. - It now returns NULL on an empty line instead of [null]. - A new function php_bc_fgetcsv_empty_line() has been added to get a HashTable* which - represents [null]. - b. ext/pdo - - pdo_raise_impl_error()'s parameter sqlstate has been changed from - const char * to pdo_error_type (aka char [6]). - ======================== 4. OpCode changes ======================== -* The ZEND_INIT_FCALL opcode now asserts that the function exists in the symbol - table as the function's existence is checked at compile time. - For extensions modifying the function symbol table, setting - CG(compiler_options) |= ZEND_COMPILE_IGNORE_USER_FUNCTIONS | ZEND_COMPILE_IGNORE_INTERNAL_FUNCTIONS; - will produce ZEND_INIT_FCALL_BY_NAME opcodes instead which check for the - existence of the function at runtime. - ======================== 5. SAPI changes ======================== - - * The signature of php_module_startup() has changed from - int php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_modules, uint32_t num_additional_modules) - to - zend_result php_module_startup(sapi_module_struct *sf, zend_module_entry *additional_module) - as only one additional module was ever provided. diff --git a/Zend/Optimizer/dfa_pass.c b/Zend/Optimizer/dfa_pass.c index 72e109b70f085..d0342068620ff 100644 --- a/Zend/Optimizer/dfa_pass.c +++ b/Zend/Optimizer/dfa_pass.c @@ -353,7 +353,9 @@ static bool opline_supports_assign_contraction( return opline->op1_type != IS_CV || opline->op1.var != cv_var; } - if (opline->opcode == ZEND_ASSIGN_OP + if ((opline->opcode == ZEND_ASSIGN_OP + || opline->opcode == ZEND_ASSIGN_OBJ + || opline->opcode == ZEND_ASSIGN_DIM) && opline->op1_type == IS_CV && opline->op1.var == cv_var && zend_may_throw(opline, &ssa->ops[ssa->vars[src_var].definition], op_array, ssa)) { diff --git a/Zend/Optimizer/pass1.c b/Zend/Optimizer/pass1.c index 770f4ce2dc231..00bc30160ab7b 100644 --- a/Zend/Optimizer/pass1.c +++ b/Zend/Optimizer/pass1.c @@ -164,7 +164,7 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx) if (ce) { zend_class_constant *cc = zend_hash_find_ptr( &ce->constants_table, Z_STR(ZEND_OP2_LITERAL(opline))); - if (cc && (ZEND_CLASS_CONST_FLAGS(cc) & ZEND_ACC_PPP_MASK) == ZEND_ACC_PUBLIC) { + if (cc && (ZEND_CLASS_CONST_FLAGS(cc) & ZEND_ACC_PPP_MASK) == ZEND_ACC_PUBLIC && !(ce->ce_flags & ZEND_ACC_TRAIT)) { zval *c = &cc->value; if (Z_TYPE_P(c) == IS_CONSTANT_AST) { zend_ast *ast = Z_ASTVAL_P(c); diff --git a/Zend/Optimizer/zend_func_infos.h b/Zend/Optimizer/zend_func_infos.h index 74f57797fdf06..10f8d950ee094 100644 --- a/Zend/Optimizer/zend_func_infos.h +++ b/Zend/Optimizer/zend_func_infos.h @@ -222,7 +222,6 @@ static const func_info_t func_infos[] = { F1("mb_strrichr", MAY_BE_STRING|MAY_BE_FALSE), F1("mb_substr", MAY_BE_STRING), F1("mb_strcut", MAY_BE_STRING), - F1("mb_strimwidth", MAY_BE_STRING), F1("mb_convert_encoding", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_STRING|MAY_BE_FALSE), F1("mb_convert_case", MAY_BE_STRING), F1("mb_strtoupper", MAY_BE_STRING), @@ -519,7 +518,7 @@ static const func_info_t func_infos[] = { F1("gethostbyaddr", MAY_BE_STRING|MAY_BE_FALSE), F1("gethostbyname", MAY_BE_STRING), F1("gethostbynamel", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_FALSE), -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) F1("dns_get_record", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_FALSE), #endif F1("md5", MAY_BE_STRING), @@ -622,7 +621,7 @@ static const func_info_t func_infos[] = { F1("php_ini_loaded_file", MAY_BE_STRING|MAY_BE_FALSE), F1("iptcembed", MAY_BE_STRING|MAY_BE_BOOL), F1("iptcparse", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_FALSE), -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) F1("readlink", MAY_BE_STRING|MAY_BE_FALSE), #endif F1("decbin", MAY_BE_STRING), diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index 5f7a06b2a19a3..c1b75a3b743a5 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -1017,15 +1017,6 @@ static bool zend_inference_calc_range(const zend_op_array *op_array, zend_ssa *s } return (tmp->min <= tmp->max); } else if (ssa->vars[var].definition < 0) { - if (var < op_array->last_var && - op_array->function_name) { - - tmp->min = 0; - tmp->max = 0; - tmp->underflow = 0; - tmp->overflow = 0; - return 1; - } return 0; } line = ssa->vars[var].definition; @@ -1976,6 +1967,9 @@ static uint32_t assign_dim_array_result_type( tmp |= MAY_BE_ARRAY_KEY_STRING; if (dim_op_type != IS_CONST) { // FIXME: numeric string + if (arr_type & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE)) { + tmp |= MAY_BE_ARRAY_PACKED; + } tmp |= MAY_BE_HASH_ONLY(arr_type) ? MAY_BE_ARRAY_NUMERIC_HASH : MAY_BE_ARRAY_KEY_LONG; } } @@ -3405,6 +3399,9 @@ static zend_always_inline zend_result _zend_update_type_info( opline->opcode != ZEND_FETCH_DIM_R && opline->opcode != ZEND_FETCH_DIM_IS && opline->opcode != ZEND_FETCH_LIST_R, opline->op2_type == IS_UNUSED); + if (opline->opcode == ZEND_FETCH_DIM_FUNC_ARG && (t1 & (MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE|MAY_BE_RESOURCE))) { + tmp |= MAY_BE_NULL; + } if (opline->opcode == ZEND_FETCH_DIM_IS && (t1 & MAY_BE_STRING)) { tmp |= MAY_BE_NULL; } @@ -4196,52 +4193,7 @@ static void zend_func_return_info(const zend_op_array *op_array, if (opline->op1_type == IS_CONST) { zval *zv = CRT_CONSTANT(opline->op1); - if (Z_TYPE_P(zv) == IS_NULL) { - if (tmp_has_range < 0) { - tmp_has_range = 1; - tmp_range.underflow = 0; - tmp_range.min = 0; - tmp_range.max = 0; - tmp_range.overflow = 0; - } else if (tmp_has_range) { - if (!tmp_range.underflow) { - tmp_range.min = MIN(tmp_range.min, 0); - } - if (!tmp_range.overflow) { - tmp_range.max = MAX(tmp_range.max, 0); - } - } - } else if (Z_TYPE_P(zv) == IS_FALSE) { - if (tmp_has_range < 0) { - tmp_has_range = 1; - tmp_range.underflow = 0; - tmp_range.min = 0; - tmp_range.max = 0; - tmp_range.overflow = 0; - } else if (tmp_has_range) { - if (!tmp_range.underflow) { - tmp_range.min = MIN(tmp_range.min, 0); - } - if (!tmp_range.overflow) { - tmp_range.max = MAX(tmp_range.max, 0); - } - } - } else if (Z_TYPE_P(zv) == IS_TRUE) { - if (tmp_has_range < 0) { - tmp_has_range = 1; - tmp_range.underflow = 0; - tmp_range.min = 1; - tmp_range.max = 1; - tmp_range.overflow = 0; - } else if (tmp_has_range) { - if (!tmp_range.underflow) { - tmp_range.min = MIN(tmp_range.min, 1); - } - if (!tmp_range.overflow) { - tmp_range.max = MAX(tmp_range.max, 1); - } - } - } else if (Z_TYPE_P(zv) == IS_LONG) { + if (Z_TYPE_P(zv) == IS_LONG) { if (tmp_has_range < 0) { tmp_has_range = 1; tmp_range.underflow = 0; diff --git a/Zend/Optimizer/zend_inference.h b/Zend/Optimizer/zend_inference.h index f3c20c3ea499a..42dcd50920a5e 100644 --- a/Zend/Optimizer/zend_inference.h +++ b/Zend/Optimizer/zend_inference.h @@ -40,7 +40,7 @@ { \ if (opline->opN##_type == IS_CONST) { \ zval *zv = CRT_CONSTANT(opline->opN); \ - return (Z_TYPE_P(zv) == IS_LONG || Z_TYPE_P(zv) == IS_TRUE || Z_TYPE_P(zv) == IS_FALSE || Z_TYPE_P(zv) == IS_NULL); \ + return (Z_TYPE_P(zv) == IS_LONG); \ } else { \ return (opline->opN##_type != IS_UNUSED && \ ssa->var_info && \ @@ -57,12 +57,6 @@ zval *zv = CRT_CONSTANT(opline->opN); \ if (Z_TYPE_P(zv) == IS_LONG) { \ return Z_LVAL_P(zv); \ - } else if (Z_TYPE_P(zv) == IS_TRUE) { \ - return 1; \ - } else if (Z_TYPE_P(zv) == IS_FALSE) { \ - return 0; \ - } else if (Z_TYPE_P(zv) == IS_NULL) { \ - return 0; \ } \ } else if (opline->opN##_type != IS_UNUSED && \ ssa->var_info && \ @@ -80,12 +74,6 @@ zval *zv = CRT_CONSTANT(opline->opN); \ if (Z_TYPE_P(zv) == IS_LONG) { \ return Z_LVAL_P(zv); \ - } else if (Z_TYPE_P(zv) == IS_TRUE) { \ - return 1; \ - } else if (Z_TYPE_P(zv) == IS_FALSE) { \ - return 0; \ - } else if (Z_TYPE_P(zv) == IS_NULL) { \ - return 0; \ } \ } else if (opline->opN##_type != IS_UNUSED && \ ssa->var_info && \ @@ -101,7 +89,7 @@ { \ if (opline->opN##_type == IS_CONST) { \ zval *zv = CRT_CONSTANT(opline->opN); \ - if (Z_TYPE_P(zv) == IS_LONG || Z_TYPE_P(zv) == IS_TRUE || Z_TYPE_P(zv) == IS_FALSE || Z_TYPE_P(zv) == IS_NULL) { \ + if (Z_TYPE_P(zv) == IS_LONG) { \ return 0; \ } \ } else if (opline->opN##_type != IS_UNUSED && \ @@ -118,7 +106,7 @@ { \ if (opline->opN##_type == IS_CONST) { \ zval *zv = CRT_CONSTANT(opline->opN); \ - if (Z_TYPE_P(zv) == IS_LONG || Z_TYPE_P(zv) == IS_TRUE || Z_TYPE_P(zv) == IS_FALSE || Z_TYPE_P(zv) == IS_NULL) { \ + if (Z_TYPE_P(zv) == IS_LONG) { \ return 0; \ } \ } else if (opline->opN##_type != IS_UNUSED && \ diff --git a/Zend/Optimizer/zend_optimizer.c b/Zend/Optimizer/zend_optimizer.c index bb2936fd40a38..b5841159bf12c 100644 --- a/Zend/Optimizer/zend_optimizer.c +++ b/Zend/Optimizer/zend_optimizer.c @@ -31,6 +31,7 @@ #include "zend_inference.h" #include "zend_dump.h" #include "php.h" +#include "zend_observer.h" #ifndef ZEND_OPTIMIZER_MAX_REGISTERED_PASSES # define ZEND_OPTIMIZER_MAX_REGISTERED_PASSES 32 @@ -1094,6 +1095,8 @@ static void zend_revert_pass_two(zend_op_array *op_array) } #endif + op_array->T -= ZEND_OBSERVER_ENABLED; + op_array->fn_flags &= ~ZEND_ACC_DONE_PASS_TWO; } @@ -1123,6 +1126,8 @@ static void zend_redo_pass_two(zend_op_array *op_array) } #endif + op_array->T += ZEND_OBSERVER_ENABLED; // reserve last temporary for observers if enabled + opline = op_array->opcodes; end = opline + op_array->last; while (opline < end) { @@ -1550,6 +1555,12 @@ ZEND_API void zend_optimize_script(zend_script *script, zend_long optimization_l } } + if (ZEND_OBSERVER_ENABLED) { + for (i = 0; i < call_graph.op_arrays_count; i++) { + ++call_graph.op_arrays[i]->T; // ensure accurate temporary count for stack size precalculation + } + } + if (ZEND_OPTIMIZER_PASS_12 & optimization_level) { for (i = 0; i < call_graph.op_arrays_count; i++) { zend_adjust_fcall_stack_size_graph(call_graph.op_arrays[i]); @@ -1565,6 +1576,8 @@ ZEND_API void zend_optimize_script(zend_script *script, zend_long optimization_l zend_recalc_live_ranges(op_array, needs_live_range); } } else { + op_array->T -= ZEND_OBSERVER_ENABLED; // redo_pass_two will re-increment it + zend_redo_pass_two(op_array); if (op_array->live_range) { zend_recalc_live_ranges(op_array, NULL); diff --git a/Zend/Zend.m4 b/Zend/Zend.m4 index fe28134dd92d6..fd00dc7270de5 100644 --- a/Zend/Zend.m4 +++ b/Zend/Zend.m4 @@ -149,40 +149,6 @@ dnl Checks for library functions. AC_CHECK_FUNCS(getpid kill sigsetjmp) ZEND_CHECK_FLOAT_PRECISION - -dnl Test whether double cast to long preserves least significant bits. -AC_MSG_CHECKING(whether double cast to long preserves least significant bits) - -AC_RUN_IFELSE([AC_LANG_SOURCE([[ -#include -#include - -int main() -{ - if (sizeof(long) == 4) { - double d = (double) LONG_MIN * LONG_MIN + 2e9; - - if ((long) d == 2e9 && (long) -d == -2e9) { - return 0; - } - } else if (sizeof(long) == 8) { - double correct = 18e18 - ((double) LONG_MIN * -2); /* Subtract ULONG_MAX + 1 */ - - if ((long) 18e18 == correct) { /* On 64-bit, only check between LONG_MAX and ULONG_MAX */ - return 0; - } - } - return 1; -} -]])], [ - AC_DEFINE([ZEND_DVAL_TO_LVAL_CAST_OK], 1, [Define if double cast to long preserves least significant bits]) - AC_MSG_RESULT(yes) -], [ - AC_MSG_RESULT(no) -], [ - AC_MSG_RESULT(no) -]) - ]) dnl diff --git a/Zend/asm/jump_arm64_aapcs_pe_armasm.asm b/Zend/asm/jump_arm64_aapcs_pe_armasm.asm new file mode 100644 index 0000000000000..d2e7d221415a3 --- /dev/null +++ b/Zend/asm/jump_arm64_aapcs_pe_armasm.asm @@ -0,0 +1,133 @@ +; Copyright Edward Nevill + Oliver Kowalke 2015 +; Distributed under the Boost Software License, Version 1.0. +; (See accompanying file LICENSE_1_0.txt or copy at +; http://www.boost.org/LICENSE_1_0.txt) + +;******************************************************* +;* * +;* ------------------------------------------------- * +;* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * +;* ------------------------------------------------- * +;* | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * +;* ------------------------------------------------- * +;* | d8 | d9 | d10 | d11 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * +;* ------------------------------------------------- * +;* | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * +;* ------------------------------------------------- * +;* | d12 | d13 | d14 | d15 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * +;* ------------------------------------------------- * +;* | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * +;* ------------------------------------------------- * +;* | x19 | x20 | x21 | x22 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * +;* ------------------------------------------------- * +;* | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * +;* ------------------------------------------------- * +;* | x23 | x24 | x25 | x26 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * +;* ------------------------------------------------- * +;* | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * +;* ------------------------------------------------- * +;* | x27 | x28 | FP | LR | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * +;* ------------------------------------------------- * +;* | 0xa0| 0xa4| 0xa8| 0xac| 0xb0| 0xb4| 0xb8| 0xbc| * +;* ------------------------------------------------- * +;* | fiber data| base | limit | dealloc | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 48 | 49 | 50 | 51 | | | * +;* ------------------------------------------------- * +;* | 0xc0| 0xc4| 0xc8| 0xcc| | | * +;* ------------------------------------------------- * +;* | PC | align | | | * +;* ------------------------------------------------- * +;* * +;******************************************************* + + AREA |.text|, CODE, READONLY, ALIGN=4, CODEALIGN + EXPORT jump_fcontext + +jump_fcontext proc + ; prepare stack for GP + FPU + sub sp, sp, #0xd0 + + ; save d8 - d15 + stp d8, d9, [sp, #0x00] + stp d10, d11, [sp, #0x10] + stp d12, d13, [sp, #0x20] + stp d14, d15, [sp, #0x30] + + ; save x19-x30 + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50] + stp x23, x24, [sp, #0x60] + stp x25, x26, [sp, #0x70] + stp x27, x28, [sp, #0x80] + stp x29, x30, [sp, #0x90] + + ; save LR as PC + str x30, [sp, #0xc0] + + ; save current stack base and limit + ldp x5, x6, [x18, #0x08] ; TeStackBase and TeStackLimit at ksarm64.h + stp x5, x6, [sp, #0xa0] + ; save current fiber data and deallocation stack + ldr x5, [x18, #0x1478] ; TeDeallocationStack at ksarm64.h + ldr x6, [x18, #0x20] ; TeFiberData at ksarm64.h + stp x5, x6, [sp, #0xb0] + + ; store RSP (pointing to context-data) in X0 + mov x4, sp + + ; restore RSP (pointing to context-data) from X1 + mov sp, x0 + + ; restore stack base and limit + ldp x5, x6, [sp, #0xa0] + stp x5, x6, [x18, #0x08] ; TeStackBase and TeStackLimit at ksarm64.h + ; restore fiber data and deallocation stack + ldp x5, x6, [sp, #0xb0] + str x5, [x18, #0x1478] ; TeDeallocationStack at ksarm64.h + str x6, [x18, #0x20] ; TeFiberData at ksarm64.h + + ; load d8 - d15 + ldp d8, d9, [sp, #0x00] + ldp d10, d11, [sp, #0x10] + ldp d12, d13, [sp, #0x20] + ldp d14, d15, [sp, #0x30] + + ; load x19-x30 + ldp x19, x20, [sp, #0x40] + ldp x21, x22, [sp, #0x50] + ldp x23, x24, [sp, #0x60] + ldp x25, x26, [sp, #0x70] + ldp x27, x28, [sp, #0x80] + ldp x29, x30, [sp, #0x90] + + ; return transfer_t from jump + ; pass transfer_t as first arg in context function + ; X0 == FCTX, X1 == DATA + mov x0, x4 + + ; load pc + ldr x4, [sp, #0xc0] + + ; restore stack from GP + FPU + add sp, sp, #0xd0 + + ret x4 + ENDP + END \ No newline at end of file diff --git a/Zend/asm/make_arm64_aapcs_pe_armasm.asm b/Zend/asm/make_arm64_aapcs_pe_armasm.asm new file mode 100644 index 0000000000000..16fcdc7d8f7e8 --- /dev/null +++ b/Zend/asm/make_arm64_aapcs_pe_armasm.asm @@ -0,0 +1,107 @@ +; Copyright Edward Nevill + Oliver Kowalke 2015 +; Distributed under the Boost Software License, Version 1.0. +; (See accompanying file LICENSE_1_0.txt or copy at +; http://www.boost.org/LICENSE_1_0.txt) + +;******************************************************* +;* * +;* ------------------------------------------------- * +;* | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | * +;* ------------------------------------------------- * +;* | 0x0 | 0x4 | 0x8 | 0xc | 0x10| 0x14| 0x18| 0x1c| * +;* ------------------------------------------------- * +;* | d8 | d9 | d10 | d11 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | * +;* ------------------------------------------------- * +;* | 0x20| 0x24| 0x28| 0x2c| 0x30| 0x34| 0x38| 0x3c| * +;* ------------------------------------------------- * +;* | d12 | d13 | d14 | d15 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | * +;* ------------------------------------------------- * +;* | 0x40| 0x44| 0x48| 0x4c| 0x50| 0x54| 0x58| 0x5c| * +;* ------------------------------------------------- * +;* | x19 | x20 | x21 | x22 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | * +;* ------------------------------------------------- * +;* | 0x60| 0x64| 0x68| 0x6c| 0x70| 0x74| 0x78| 0x7c| * +;* ------------------------------------------------- * +;* | x23 | x24 | x25 | x26 | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | * +;* ------------------------------------------------- * +;* | 0x80| 0x84| 0x88| 0x8c| 0x90| 0x94| 0x98| 0x9c| * +;* ------------------------------------------------- * +;* | x27 | x28 | FP | LR | * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | * +;* ------------------------------------------------- * +;* | 0xa0| 0xa4| 0xa8| 0xac| 0xb0| 0xb4| 0xb8| 0xbc| * +;* ------------------------------------------------- * +;* | base | limit | dealloc | fiber data| * +;* ------------------------------------------------- * +;* ------------------------------------------------- * +;* | 48 | 49 | 50 | 51 | | | * +;* ------------------------------------------------- * +;* | 0xc0| 0xc4| 0xc8| 0xcc| | | * +;* ------------------------------------------------- * +;* | PC | align | | | * +;* ------------------------------------------------- * +;* * +;******************************************************* + + AREA |.text|, CODE, READONLY, ALIGN=4, CODEALIGN + EXPORT make_fcontext + IMPORT _exit + +make_fcontext proc + ; save stack top address to x3 + mov x3, x0 + + ; shift address in x0 (allocated stack) to lower 16 byte boundary + and x0, x0, ~0xF + + ; reserve space for context-data on context-stack + sub x0, x0, #0xd0 + + ; save top address of context_stack as 'base' + str x3, [x0, #0xa0] + ; save bottom address of context-stack as 'limit' and 'dealloction stack' + sub x3, x3, x1 + stp x3, x3, [x0, #0xa8] + ; save 0 as 'fiber data' + str xzr, [x0, #0xb8] + + ; third arg of make_fcontext() == address of context-function + ; store address as x19 for trampoline + str x2, [x0, #0x40] + ; store trampoline address as pc + adr x2, trampoline + str x2, [x0, #0xc0] + + ; save address of finish as return-address for context-function + ; will be entered after context-function returns (LR register) + adr x1, finish + str x1, [x0, #0x98] + + ret x30 ; return pointer to context-data (x0) + +trampoline + stp fp, lr, [sp, #-0x10]! + mov fp, sp + blr x19 + +finish + ; exit code is zero + mov x0, #0 + ; exit application + bl _exit + ENDP + END diff --git a/Zend/tests/alternative_offset_syntax_in_encaps_string.phpt b/Zend/tests/alternative_offset_syntax_in_encaps_string.phpt new file mode 100644 index 0000000000000..2771b33afa89c --- /dev/null +++ b/Zend/tests/alternative_offset_syntax_in_encaps_string.phpt @@ -0,0 +1,6 @@ +--TEST-- +Alternative offset syntax should emit only E_COMPILE_ERROR in string interpolation +--FILE-- + +--EXPECTF-- +Fatal error: Array and string offset access syntax with curly braces is no longer supported in %s on line 1 diff --git a/Zend/tests/bug75290.phpt b/Zend/tests/bug75290.phpt index 9d9d1a05619c1..948a56e172a14 100644 --- a/Zend/tests/bug75290.phpt +++ b/Zend/tests/bug75290.phpt @@ -9,7 +9,9 @@ var_dump(function ($someThing) {}); ?> --EXPECT-- -object(Closure)#2 (1) { +object(Closure)#2 (2) { + ["function"]=> + string(3) "sin" ["parameter"]=> array(1) { ["$num"]=> diff --git a/Zend/tests/const_expr_dim_on_null_warning.phpt b/Zend/tests/const_expr_dim_on_null_warning.phpt new file mode 100644 index 0000000000000..9bea754446ffb --- /dev/null +++ b/Zend/tests/const_expr_dim_on_null_warning.phpt @@ -0,0 +1,10 @@ +--TEST-- +DIM on null in constant expr should emit warning +--FILE-- + +--EXPECTF-- +Warning: Trying to access array offset on value of type null in %s on line %d +NULL diff --git a/Zend/tests/enum/__clone.phpt b/Zend/tests/enum/__clone.phpt new file mode 100644 index 0000000000000..fd4b4c43173b6 --- /dev/null +++ b/Zend/tests/enum/__clone.phpt @@ -0,0 +1,15 @@ +--TEST-- +Enum __clone +--FILE-- + +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __clone in %s on line %d diff --git a/Zend/tests/enum/__debugInfo.phpt b/Zend/tests/enum/__debugInfo.phpt new file mode 100644 index 0000000000000..33e0f49851f9c --- /dev/null +++ b/Zend/tests/enum/__debugInfo.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __debugInfo +--FILE-- +cases(); + } +} + +?> +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __debugInfo in %s on line %d diff --git a/Zend/tests/enum/__get.phpt b/Zend/tests/enum/__get.phpt index 885cc2f2c8302..6c77d119b7c71 100644 --- a/Zend/tests/enum/__get.phpt +++ b/Zend/tests/enum/__get.phpt @@ -14,4 +14,4 @@ enum Foo { ?> --EXPECTF-- -Fatal error: Enum may not include __get in %s on line %d +Fatal error: Enum Foo cannot include magic method __get in %s on line %d diff --git a/Zend/tests/enum/__isset.phpt b/Zend/tests/enum/__isset.phpt index 76409f075b27d..087d7d0b17275 100644 --- a/Zend/tests/enum/__isset.phpt +++ b/Zend/tests/enum/__isset.phpt @@ -13,4 +13,4 @@ enum Foo { ?> --EXPECTF-- -Fatal error: Enum may not include __isset in %s on line %d +Fatal error: Enum Foo cannot include magic method __isset in %s on line %d diff --git a/Zend/tests/enum/__serialize.phpt b/Zend/tests/enum/__serialize.phpt new file mode 100644 index 0000000000000..635bd43964284 --- /dev/null +++ b/Zend/tests/enum/__serialize.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __serialize +--FILE-- +cases(); + } +} + +?> +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __serialize in %s on line %d diff --git a/Zend/tests/enum/__set.phpt b/Zend/tests/enum/__set.phpt new file mode 100644 index 0000000000000..7fa0fcfb3a499 --- /dev/null +++ b/Zend/tests/enum/__set.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __set +--FILE-- + +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __set in %s on line %d diff --git a/Zend/tests/enum/__set_state.phpt b/Zend/tests/enum/__set_state.phpt new file mode 100644 index 0000000000000..b2bf071743091 --- /dev/null +++ b/Zend/tests/enum/__set_state.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __set_state +--FILE-- + +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __set_state in %s on line %d diff --git a/Zend/tests/enum/__sleep.phpt b/Zend/tests/enum/__sleep.phpt new file mode 100644 index 0000000000000..4da08e6a4d3f2 --- /dev/null +++ b/Zend/tests/enum/__sleep.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __sleep +--FILE-- + +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __sleep in %s on line %d diff --git a/Zend/tests/enum/__toString.phpt b/Zend/tests/enum/__toString.phpt new file mode 100644 index 0000000000000..9407e482fb727 --- /dev/null +++ b/Zend/tests/enum/__toString.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __toString +--FILE-- +name; + } +} + +?> +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __toString in %s on line %d diff --git a/Zend/tests/enum/__unserialize.phpt b/Zend/tests/enum/__unserialize.phpt new file mode 100644 index 0000000000000..f9d594176851b --- /dev/null +++ b/Zend/tests/enum/__unserialize.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __unserialize +--FILE-- + +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __unserialize in %s on line %d diff --git a/Zend/tests/enum/__unset.phpt b/Zend/tests/enum/__unset.phpt new file mode 100644 index 0000000000000..e2ada98688e63 --- /dev/null +++ b/Zend/tests/enum/__unset.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __unset +--FILE-- + +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __unset in %s on line %d diff --git a/Zend/tests/enum/__wakeup.phpt b/Zend/tests/enum/__wakeup.phpt new file mode 100644 index 0000000000000..8aea17ae53fd3 --- /dev/null +++ b/Zend/tests/enum/__wakeup.phpt @@ -0,0 +1,16 @@ +--TEST-- +Enum __wakeup +--FILE-- + +--EXPECTF-- +Fatal error: Enum Foo cannot include magic method __wakeup in %s on line %d diff --git a/Zend/tests/enum/backed-from-invalid-int.phpt b/Zend/tests/enum/backed-from-invalid-int.phpt index d976f3d0fbd39..d40cae30e6c8e 100644 --- a/Zend/tests/enum/backed-from-invalid-int.phpt +++ b/Zend/tests/enum/backed-from-invalid-int.phpt @@ -16,4 +16,4 @@ try { ?> --EXPECT-- -2 is not a valid backing value for enum "Foo" +2 is not a valid backing value for enum Foo diff --git a/Zend/tests/enum/backed-from-invalid-string.phpt b/Zend/tests/enum/backed-from-invalid-string.phpt index db8b791d8bea1..c6d784872ef0d 100644 --- a/Zend/tests/enum/backed-from-invalid-string.phpt +++ b/Zend/tests/enum/backed-from-invalid-string.phpt @@ -18,4 +18,4 @@ try { ?> --EXPECT-- -"A" is not a valid backing value for enum "Suit" +"A" is not a valid backing value for enum Suit diff --git a/Zend/tests/enum/backed-from-invalid-type.phpt b/Zend/tests/enum/backed-from-invalid-type.phpt index 3f35bef64f55a..b4e0e6d6164f1 100644 --- a/Zend/tests/enum/backed-from-invalid-type.phpt +++ b/Zend/tests/enum/backed-from-invalid-type.phpt @@ -30,5 +30,5 @@ try { ?> --EXPECT-- -"42" is not a valid backing value for enum "Suit" +"42" is not a valid backing value for enum Suit Foo::from(): Argument #1 ($value) must be of type int, string given diff --git a/Zend/tests/enum/internal_enums.phpt b/Zend/tests/enum/internal_enums.phpt index 5e36baae302cc..ae26e24cd7eaf 100644 --- a/Zend/tests/enum/internal_enums.phpt +++ b/Zend/tests/enum/internal_enums.phpt @@ -86,9 +86,9 @@ enum(ZendTestIntEnum::Foo) enum(ZendTestIntEnum::Foo) enum(ZendTestIntEnum::Foo) enum(ZendTestIntEnum::Foo) -ValueError: 2 is not a valid backing value for enum "ZendTestIntEnum" +ValueError: 2 is not a valid backing value for enum ZendTestIntEnum NULL -ValueError: 2 is not a valid backing value for enum "ZendTestIntEnum" +ValueError: 2 is not a valid backing value for enum ZendTestIntEnum NULL enum(ZendTestIntEnum::Baz) enum(ZendTestIntEnum::Baz) diff --git a/Zend/tests/enum/no-constructors.phpt b/Zend/tests/enum/no-constructors.phpt index 70504e14eb381..862c9ebb7b2f1 100644 --- a/Zend/tests/enum/no-constructors.phpt +++ b/Zend/tests/enum/no-constructors.phpt @@ -9,4 +9,4 @@ enum Foo { ?> --EXPECTF-- -Fatal error: Enum may not include __construct in %s on line %d +Fatal error: Enum Foo cannot include magic method __construct in %s on line %d diff --git a/Zend/tests/enum/no-destruct.phpt b/Zend/tests/enum/no-destruct.phpt index 730c29f8476c7..107478b9762c9 100644 --- a/Zend/tests/enum/no-destruct.phpt +++ b/Zend/tests/enum/no-destruct.phpt @@ -9,4 +9,4 @@ enum Foo { ?> --EXPECTF-- -Fatal error: Enum may not include __destruct in %s on line %d +Fatal error: Enum Foo cannot include magic method __destruct in %s on line %d diff --git a/Zend/tests/enum/no-implement-serializable-indirect.phpt b/Zend/tests/enum/no-implement-serializable-indirect.phpt index efd9229d9edc9..43231b60da845 100644 --- a/Zend/tests/enum/no-implement-serializable-indirect.phpt +++ b/Zend/tests/enum/no-implement-serializable-indirect.phpt @@ -23,4 +23,4 @@ var_dump(unserialize(serialize(Foo::Bar))); --EXPECTF-- Deprecated: %s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d -Fatal error: Enums may not implement the Serializable interface in %s on line %d +Fatal error: Enum Foo cannot implement the Serializable interface in %s on line %d diff --git a/Zend/tests/enum/no-implement-serializable.phpt b/Zend/tests/enum/no-implement-serializable.phpt index 355d62b71ba53..1099cc725c810 100644 --- a/Zend/tests/enum/no-implement-serializable.phpt +++ b/Zend/tests/enum/no-implement-serializable.phpt @@ -21,4 +21,4 @@ var_dump(unserialize(serialize(Foo::Bar))); --EXPECTF-- Deprecated: %s implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in %s on line %d -Fatal error: Enums may not implement the Serializable interface in %s on line %d +Fatal error: Enum Foo cannot implement the Serializable interface in %s on line %d diff --git a/Zend/tests/enum/no-name-property.phpt b/Zend/tests/enum/no-name-property.phpt index a565c08e83005..6ea1e1a0b0023 100644 --- a/Zend/tests/enum/no-name-property.phpt +++ b/Zend/tests/enum/no-name-property.phpt @@ -9,4 +9,4 @@ enum Foo { ?> --EXPECTF-- -Fatal error: Enums may not include properties in %s on line %d +Fatal error: Enum Foo cannot include properties in %s on line %d diff --git a/Zend/tests/enum/no-properties.phpt b/Zend/tests/enum/no-properties.phpt index e846845d22270..fb396b403e370 100644 --- a/Zend/tests/enum/no-properties.phpt +++ b/Zend/tests/enum/no-properties.phpt @@ -9,4 +9,4 @@ enum Foo { ?> --EXPECTF-- -Fatal error: Enums may not include properties in %s on line %d +Fatal error: Enum Foo cannot include properties in %s on line %d diff --git a/Zend/tests/enum/no-static-properties.phpt b/Zend/tests/enum/no-static-properties.phpt index 4b823e98e9ffd..873582637789a 100644 --- a/Zend/tests/enum/no-static-properties.phpt +++ b/Zend/tests/enum/no-static-properties.phpt @@ -9,4 +9,4 @@ enum Foo { ?> --EXPECTF-- -Fatal error: Enums may not include properties in %s on line %d +Fatal error: Enum Foo cannot include properties in %s on line %d diff --git a/Zend/tests/enum/no-value-property.phpt b/Zend/tests/enum/no-value-property.phpt index d8b12f2ca8a23..efa8a7d3420bd 100644 --- a/Zend/tests/enum/no-value-property.phpt +++ b/Zend/tests/enum/no-value-property.phpt @@ -9,4 +9,4 @@ enum Foo: int { ?> --EXPECTF-- -Fatal error: Enums may not include properties in %s on line %d +Fatal error: Enum Foo cannot include properties in %s on line %d diff --git a/Zend/tests/enum/traits-constants.phpt b/Zend/tests/enum/traits-constants.phpt new file mode 100644 index 0000000000000..3ca0508ff92ce --- /dev/null +++ b/Zend/tests/enum/traits-constants.phpt @@ -0,0 +1,33 @@ +--TEST-- +Enum can use traits having constants +--FILE-- +shape() . PHP_EOL; +echo Suit::Diamonds->shape() . PHP_EOL; +echo Suit::Clubs->shape() . PHP_EOL; +echo Suit::Spades->shape() . PHP_EOL; + +?> +--EXPECT-- +Rectangle +Rectangle +Rectangle +Rectangle diff --git a/Zend/tests/enum/traits-no-__construct.phpt b/Zend/tests/enum/traits-no-__construct.phpt index 0529a2a989013..4bac34295b8fa 100644 --- a/Zend/tests/enum/traits-no-__construct.phpt +++ b/Zend/tests/enum/traits-no-__construct.phpt @@ -18,4 +18,4 @@ var_dump(Bar::Baz); ?> --EXPECTF-- -Fatal error: Enum may not include __construct in %s on line %d +Fatal error: Enum Bar cannot include magic method __construct in %s on line %d diff --git a/Zend/tests/enum/traits-no-forbidden-methods.phpt b/Zend/tests/enum/traits-no-forbidden-methods.phpt index 1f310f48cd0c6..36e4ce780e3e1 100644 --- a/Zend/tests/enum/traits-no-forbidden-methods.phpt +++ b/Zend/tests/enum/traits-no-forbidden-methods.phpt @@ -18,4 +18,4 @@ enum Suit { ?> --EXPECTF-- -Fatal error: Enum may not include __construct in %s on line %d +Fatal error: Enum Suit cannot include magic method __construct in %s on line %d diff --git a/Zend/tests/enum/traits-no-properties.phpt b/Zend/tests/enum/traits-no-properties.phpt index 5a6faf9deac4e..0cc3c9cf3872b 100644 --- a/Zend/tests/enum/traits-no-properties.phpt +++ b/Zend/tests/enum/traits-no-properties.phpt @@ -22,4 +22,4 @@ enum Suit { ?> --EXPECTF-- -Fatal error: Enum "Suit" may not include properties in %s on line %d +Fatal error: Enum Suit cannot include properties in %s on line %d diff --git a/Zend/tests/first_class_callable_optimization.phpt b/Zend/tests/first_class_callable_optimization.phpt index 22ced0a8176c2..707b6a7299a4a 100644 --- a/Zend/tests/first_class_callable_optimization.phpt +++ b/Zend/tests/first_class_callable_optimization.phpt @@ -11,7 +11,11 @@ var_dump(test2(...)); ?> --EXPECT-- -object(Closure)#1 (0) { +object(Closure)#1 (1) { + ["function"]=> + string(5) "test1" } -object(Closure)#1 (0) { +object(Closure)#1 (1) { + ["function"]=> + string(5) "test2" } diff --git a/Zend/tests/gc_043.phpt b/Zend/tests/gc_043.phpt index 06b64de39acf9..37906a025145f 100644 --- a/Zend/tests/gc_043.phpt +++ b/Zend/tests/gc_043.phpt @@ -8,7 +8,8 @@ STR; var_dump(unserialize($s)); gc_collect_cycles(); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Creation of dynamic property RegexIterator::$5 is deprecated in %s on line %d object(stdClass)#1 (2) { ["5"]=> object(SplStack)#2 (2) { diff --git a/Zend/tests/gc_045.phpt b/Zend/tests/gc_045.phpt new file mode 100644 index 0000000000000..865462ecfbc3f --- /dev/null +++ b/Zend/tests/gc_045.phpt @@ -0,0 +1,58 @@ +--TEST-- +GC 045: Total count persisted when GC is rerun due to destructor call +--INI-- +zend.enable_gc=1 +--FILE-- +val = $val; + $this->selfRef = $this; + } +} + +for ($j = 0; $j < 10; $j++) { + for ($i = 0; $i < 3000; $i++) { + new Foo(new Value()); + } +} + +var_dump(gc_status()); +?> +--EXPECT-- +array(4) { + ["runs"]=> + int(10) + ["collected"]=> + int(25000) + ["threshold"]=> + int(10001) + ["roots"]=> + int(10000) +} diff --git a/Zend/tests/gh8083.phpt b/Zend/tests/gh8083.phpt index a98de47cbf375..b3bcfa4579130 100644 --- a/Zend/tests/gh8083.phpt +++ b/Zend/tests/gh8083.phpt @@ -13,7 +13,9 @@ var_dump($x); ?> --EXPECT-- -object(Closure)#1 (1) { +object(Closure)#1 (2) { + ["function"]=> + string(4) "func" ["static"]=> array(1) { ["i"]=> diff --git a/Zend/tests/gh8962.phpt b/Zend/tests/gh8962.phpt new file mode 100644 index 0000000000000..ea963e1958a95 --- /dev/null +++ b/Zend/tests/gh8962.phpt @@ -0,0 +1,40 @@ +--TEST-- +GH-8962: Display function name when var_dumping fake closure +--FILE-- + +--EXPECT-- +object(Closure)#2 (2) { + ["function"]=> + string(12) "Foo\Bar::baz" + ["this"]=> + object(Foo\Bar)#1 (0) { + } +} +object(Closure)#2 (1) { + ["function"]=> + string(12) "Foo\Bar::qux" +} +object(Closure)#2 (1) { + ["function"]=> + string(12) "Foo\Bar::qux" +} +object(Closure)#2 (1) { + ["function"]=> + string(8) "Foo\quux" +} diff --git a/Zend/tests/gh9136_2.phpt b/Zend/tests/gh9136_2.phpt new file mode 100644 index 0000000000000..23673e69db3d0 --- /dev/null +++ b/Zend/tests/gh9136_2.phpt @@ -0,0 +1,10 @@ +--TEST-- +GH-9136: Assertion when fetching property of magic constant in constant expression with nullsafe operator +--FILE-- +foo; + +?> +--EXPECTF-- +Warning: Attempt to read property "foo" on string in %s on line %d diff --git a/Zend/tests/gh9138_2.phpt b/Zend/tests/gh9138_2.phpt new file mode 100644 index 0000000000000..cbc350221cae2 --- /dev/null +++ b/Zend/tests/gh9138_2.phpt @@ -0,0 +1,11 @@ +--TEST-- +GH-9138: NULL pointer dereference when fetching property of "bad" list in constant expression with nullsafe operator +--FILE-- +e)] +class Foo {} + +?> +--EXPECTF-- +Fatal error: Cannot use empty array elements in arrays in %s on line %d diff --git a/Zend/tests/named_params/call_user_func_array_variadic.phpt b/Zend/tests/named_params/call_user_func_array_variadic.phpt new file mode 100644 index 0000000000000..89a8f7cb10e33 --- /dev/null +++ b/Zend/tests/named_params/call_user_func_array_variadic.phpt @@ -0,0 +1,13 @@ +--TEST-- +call_user_func_array() with extra named parameters +--FILE-- + 1); +call_user_func_array("array_multisort", $args); +?> +--EXPECTF-- +Fatal error: Uncaught ArgumentCountError: array_multisort() expects at least 1 argument, 0 given in %scall_user_func_array_variadic.php:3 +Stack trace: +#0 %scall_user_func_array_variadic.php(3): array_multisort(: 1) +#1 {main} + thrown in %scall_user_func_array_variadic.php on line 3 diff --git a/Zend/tests/readonly_classes/gh9285_error.phpt b/Zend/tests/readonly_classes/gh9285_error.phpt new file mode 100644 index 0000000000000..31658901ca347 --- /dev/null +++ b/Zend/tests/readonly_classes/gh9285_error.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug GH-9285: PHP 8.2 readonly classes allow inheriting mutable properties from traits - error +--FILE-- + +--EXPECTF-- +Fatal error: Readonly class C cannot use trait with a non-readonly property T::$prop in %s on line %d diff --git a/Zend/tests/readonly_classes/gh9285_success.phpt b/Zend/tests/readonly_classes/gh9285_success.phpt new file mode 100644 index 0000000000000..38dfdb37989fe --- /dev/null +++ b/Zend/tests/readonly_classes/gh9285_success.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug GH-9285: PHP 8.2 readonly classes allow inheriting mutable properties from traits - success +--FILE-- +prop = 1; + } +} + +$c = new C(); +var_dump($c->prop); + +?> +--EXPECT-- +int(1) diff --git a/Zend/tests/readonly_classes/readonly_class_unserialize_error.phpt b/Zend/tests/readonly_classes/readonly_class_unserialize_error.phpt new file mode 100644 index 0000000000000..e0672e4d97f80 --- /dev/null +++ b/Zend/tests/readonly_classes/readonly_class_unserialize_error.phpt @@ -0,0 +1,16 @@ +--TEST-- +Fix GH-9186 Readonly classes can have dynamic properties created by unserialize() +--FILE-- +getMessage() . "\n"; +} + +?> +--EXPECT-- +Cannot create dynamic property C::$x diff --git a/Zend/tests/throw/exit_in_finally.phpt b/Zend/tests/throw/exit_in_finally.phpt new file mode 100644 index 0000000000000..fc88d87c12da8 --- /dev/null +++ b/Zend/tests/throw/exit_in_finally.phpt @@ -0,0 +1,13 @@ +--TEST-- +Test exit with uncaught exception in finally block +--FILE-- + +--EXPECT-- +Done diff --git a/Zend/tests/traits/constant_001.phpt b/Zend/tests/traits/constant_001.phpt new file mode 100644 index 0000000000000..ad5d5a863ad14 --- /dev/null +++ b/Zend/tests/traits/constant_001.phpt @@ -0,0 +1,55 @@ +--TEST-- +Trying to access a constant on Trait via a Class +--FILE-- +f1(); +(new Base)->f2(); +echo Derived::PUBLIC, ' via derived class name', PHP_EOL; +echo (new Derived)::PUBLIC, ' via derived class object', PHP_EOL; +(new Derived)->f3(); +?> +--EXPECTF-- +public via class name +public via object +public via self +public via static +public via $this +private via self +private via static +public via derived class name +public via derived class object +protected via self +protected via static +protected via parent diff --git a/Zend/tests/traits/constant_002.phpt b/Zend/tests/traits/constant_002.phpt new file mode 100644 index 0000000000000..560aa69c75a51 --- /dev/null +++ b/Zend/tests/traits/constant_002.phpt @@ -0,0 +1,42 @@ +--TEST-- +Defining a constant in both trait and its composing class with the same name, visibility, finality and value is allowed +--FILE-- + +--EXPECTF-- +42 +42 +42 diff --git a/Zend/tests/traits/constant_003.phpt b/Zend/tests/traits/constant_003.phpt new file mode 100644 index 0000000000000..7e946f53d815d --- /dev/null +++ b/Zend/tests/traits/constant_003.phpt @@ -0,0 +1,21 @@ +--TEST-- +Non-final Constants in traits can be overridden in derived classes +--FILE-- + +--EXPECTF-- +456 diff --git a/Zend/tests/traits/constant_004.phpt b/Zend/tests/traits/constant_004.phpt new file mode 100644 index 0000000000000..b850ed7e60fd7 --- /dev/null +++ b/Zend/tests/traits/constant_004.phpt @@ -0,0 +1,19 @@ +--TEST-- +Trying to access a constant on trait via the name of trait causes a Fatal error +--FILE-- + +--EXPECTF-- +Fatal error: Uncaught Error: Cannot access trait constant Foo::A directly in %s:%d +Stack trace: +#0 {main} + thrown in %s on line %d diff --git a/Zend/tests/traits/constant_005.phpt b/Zend/tests/traits/constant_005.phpt new file mode 100644 index 0000000000000..247fa48a2a259 --- /dev/null +++ b/Zend/tests/traits/constant_005.phpt @@ -0,0 +1,22 @@ +--TEST-- +Conflicting constants in composing classes with different visibility modifiers should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +PRE-CLASS-GUARD + +Fatal error: ComposingClass and TestTrait define the same constant (Constant) in the composition of ComposingClass. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_006.phpt b/Zend/tests/traits/constant_006.phpt new file mode 100644 index 0000000000000..eabfc6ac79c9b --- /dev/null +++ b/Zend/tests/traits/constant_006.phpt @@ -0,0 +1,22 @@ +--TEST-- +Conflicting constants in composing classes with different values should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +PRE-CLASS-GUARD + +Fatal error: ComposingClass and TestTrait define the same constant (Constant) in the composition of ComposingClass. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_007.phpt b/Zend/tests/traits/constant_007.phpt new file mode 100644 index 0000000000000..a3815d1837503 --- /dev/null +++ b/Zend/tests/traits/constant_007.phpt @@ -0,0 +1,22 @@ +--TEST-- +Conflicting constants in composing classes with different finality should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +PRE-CLASS-GUARD + +Fatal error: ComposingClass and TestTrait define the same constant (Constant) in the composition of ComposingClass. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_008.phpt b/Zend/tests/traits/constant_008.phpt new file mode 100644 index 0000000000000..a55f448c13a07 --- /dev/null +++ b/Zend/tests/traits/constant_008.phpt @@ -0,0 +1,26 @@ +--TEST-- +Conflicting constants in another traits in same composing classes with different visibility modifiers should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +PRE-CLASS-GUARD + +Fatal error: Trait1 and Trait2 define the same constant (Constant) in the composition of TraitsTest. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_009.phpt b/Zend/tests/traits/constant_009.phpt new file mode 100644 index 0000000000000..530fa99739dd8 --- /dev/null +++ b/Zend/tests/traits/constant_009.phpt @@ -0,0 +1,26 @@ +--TEST-- +Conflicting constants in another traits in same composing classes with different values should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +PRE-CLASS-GUARD + +Fatal error: Trait1 and Trait2 define the same constant (Constant) in the composition of TraitsTest. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_010.phpt b/Zend/tests/traits/constant_010.phpt new file mode 100644 index 0000000000000..f74711ba786e6 --- /dev/null +++ b/Zend/tests/traits/constant_010.phpt @@ -0,0 +1,22 @@ +--TEST-- +Conflicting constants in another traits in same composing classes with different finality should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +PRE-CLASS-GUARD + +Fatal error: ComposingClass and TestTrait define the same constant (Constant) in the composition of ComposingClass. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_011.phpt b/Zend/tests/traits/constant_011.phpt new file mode 100644 index 0000000000000..b4e15a4efe1f6 --- /dev/null +++ b/Zend/tests/traits/constant_011.phpt @@ -0,0 +1,16 @@ +--TEST-- +Conflicting constants in a trait and another trait using it with different visibility modifiers should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +Fatal error: Trait2 and Trait1 define the same constant (Constant) in the composition of Trait2. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_012.phpt b/Zend/tests/traits/constant_012.phpt new file mode 100644 index 0000000000000..b7369e584f409 --- /dev/null +++ b/Zend/tests/traits/constant_012.phpt @@ -0,0 +1,16 @@ +--TEST-- +Conflicting constants in a trait and another trait using it with different values should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +Fatal error: Trait2 and Trait1 define the same constant (Constant) in the composition of Trait2. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_013.phpt b/Zend/tests/traits/constant_013.phpt new file mode 100644 index 0000000000000..ef560c52c1cc6 --- /dev/null +++ b/Zend/tests/traits/constant_013.phpt @@ -0,0 +1,16 @@ +--TEST-- +Conflicting constants in a trait and another trait using it with different finality should result in a fatal error, since this indicates that the code is incompatible. +--FILE-- + +--EXPECTF-- +Fatal error: Trait2 and Trait1 define the same constant (Constant) in the composition of Trait2. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_014.phpt b/Zend/tests/traits/constant_014.phpt new file mode 100644 index 0000000000000..5597a8b88eab6 --- /dev/null +++ b/Zend/tests/traits/constant_014.phpt @@ -0,0 +1,21 @@ +--TEST-- +Cannot override a final trait constant in a class derived from the class that uses the trait +--FILE-- + +--EXPECTF-- +Fatal error: DerivedClass::Constant cannot override final constant ComposingClass::Constant in %s on line %d diff --git a/Zend/tests/traits/constant_015.phpt b/Zend/tests/traits/constant_015.phpt new file mode 100644 index 0000000000000..24507ea9e59cd --- /dev/null +++ b/Zend/tests/traits/constant_015.phpt @@ -0,0 +1,32 @@ +--TEST-- +The same name constant of a trait used in a class that inherits a constant defined in a parent can be defined only if they are compatible. +--FILE-- + +--EXPECTF-- +Fatal error: BaseClass2 and TestTrait2 define the same constant (Constant) in the composition of DerivedClass2. However, the definition differs and is considered incompatible. Class was composed in %s on line %d diff --git a/Zend/tests/traits/constant_016.phpt b/Zend/tests/traits/constant_016.phpt new file mode 100644 index 0000000000000..9cb2b29bcc095 --- /dev/null +++ b/Zend/tests/traits/constant_016.phpt @@ -0,0 +1,25 @@ +--TEST-- +Compatibility of values of same name trait constants is checked after their constant expressions are evaluated +--ENV-- +ENSURE_CONSTANT_IS_DEFINED_AT_RUNTIME=1 +--FILE-- + +--EXPECTF-- +42 diff --git a/Zend/tests/traits/constant_017.phpt b/Zend/tests/traits/constant_017.phpt new file mode 100644 index 0000000000000..3a1c6ffb7150c --- /dev/null +++ b/Zend/tests/traits/constant_017.phpt @@ -0,0 +1,13 @@ +--TEST-- +Referencing trait constants directly on calling \defined() returns false +--FILE-- + +--EXPECTF-- +bool(false) diff --git a/Zend/tests/traits/constant_018.phpt b/Zend/tests/traits/constant_018.phpt new file mode 100644 index 0000000000000..9d040dd1530b8 --- /dev/null +++ b/Zend/tests/traits/constant_018.phpt @@ -0,0 +1,17 @@ +--TEST-- +Referencing trait constants directly on calling \constant() causes a fatal error +--FILE-- + +--EXPECTF-- +Fatal error: Uncaught Error: Cannot access trait constant TestTrait::Constant directly in %s:%d +Stack trace: +#0 %s: constant('TestTrait::Cons...') +#1 {main} + thrown in %s on line %d diff --git a/Zend/tests/traits/constant_019.phpt b/Zend/tests/traits/constant_019.phpt new file mode 100644 index 0000000000000..abbe9d11a37ca --- /dev/null +++ b/Zend/tests/traits/constant_019.phpt @@ -0,0 +1,27 @@ +--TEST-- +Flattened trait constants are retrieved as members of the composing class via Reflection +--FILE-- +getConstant('Constant')); +var_dump($reflection->getReflectionConstant('Constant')->getDeclaringClass()->getName()); + +$reflection = new \ReflectionClass(TestClass::class); +var_dump($reflection->getConstant('Constant')); +var_dump($reflection->getReflectionConstant('Constant')->getDeclaringClass()->getName()); + +?> +--EXPECTF-- +int(42) +string(9) "TestTrait" +int(42) +string(9) "TestClass" diff --git a/Zend/tests/traits/constant_020.phpt b/Zend/tests/traits/constant_020.phpt new file mode 100644 index 0000000000000..1194e2c8238af --- /dev/null +++ b/Zend/tests/traits/constant_020.phpt @@ -0,0 +1,28 @@ +--TEST-- +Attributes can be retrieved from trait constants +--FILE-- +getReflectionConstant('Constant')->getAttributes('TestAttribute')[0]->getArguments()['value']); + +$reflection = new \ReflectionClass(TestClass::class); +var_dump($reflection->getReflectionConstant('Constant')->getAttributes('TestAttribute')[0]->getArguments()['value']); + +?> +--EXPECTF-- +int(123) +int(123) diff --git a/Zend/tests/traits/constant_021.phpt b/Zend/tests/traits/constant_021.phpt new file mode 100644 index 0000000000000..713941a1102d9 --- /dev/null +++ b/Zend/tests/traits/constant_021.phpt @@ -0,0 +1,24 @@ +--TEST-- +Doc comments can be retrieved from trait constants +--FILE-- +getReflectionConstant('Constant')->getDocComment()); + +$reflection = new \ReflectionClass(TestClass::class); +var_dump($reflection->getReflectionConstant('Constant')->getDocComment()); + +?> +--EXPECTF-- +string(18) "/** DocComments */" +string(18) "/** DocComments */" diff --git a/Zend/tests/traits/error_016.phpt b/Zend/tests/traits/error_016.phpt deleted file mode 100644 index 191225ddee7a4..0000000000000 --- a/Zend/tests/traits/error_016.phpt +++ /dev/null @@ -1,12 +0,0 @@ ---TEST-- -Trying to create a constant on Trait ---FILE-- - ---EXPECTF-- -Fatal error: Traits cannot have constants in %s on line %d diff --git a/Zend/tests/use_statement/aliasing_builtin_types.phpt b/Zend/tests/use_statement/aliasing_builtin_types.phpt new file mode 100644 index 0000000000000..beeab41d7b3b0 --- /dev/null +++ b/Zend/tests/use_statement/aliasing_builtin_types.phpt @@ -0,0 +1,78 @@ +--TEST-- +Aliasing built-in types +--FILE-- +getMessage(), PHP_EOL; + } + try { + eval("use $type as A; function foo$type(A \$v): A { return \$v; }"); + } catch (\Throwable $e) { + echo $e::class, ': ', $e->getMessage(), PHP_EOL; + } +} + +?> +DONE +--EXPECT-- +CompileError: Cannot alias 'bool' as it is a built-in type +CompileError: Cannot alias 'bool' as it is a built-in type +CompileError: Cannot alias 'false' as it is a built-in type +CompileError: Cannot alias 'false' as it is a built-in type +CompileError: Cannot alias 'float' as it is a built-in type +CompileError: Cannot alias 'float' as it is a built-in type +CompileError: Cannot alias 'int' as it is a built-in type +CompileError: Cannot alias 'int' as it is a built-in type +CompileError: Cannot alias 'null' as it is a built-in type +CompileError: Cannot alias 'null' as it is a built-in type +CompileError: Cannot alias 'parent' as it is a built-in type +CompileError: Cannot alias 'parent' as it is a built-in type +CompileError: Cannot alias 'self' as it is a built-in type +CompileError: Cannot alias 'self' as it is a built-in type +ParseError: syntax error, unexpected token "static" +ParseError: syntax error, unexpected token "static" +CompileError: Cannot alias 'string' as it is a built-in type +CompileError: Cannot alias 'string' as it is a built-in type +CompileError: Cannot alias 'true' as it is a built-in type +CompileError: Cannot alias 'true' as it is a built-in type +CompileError: Cannot alias 'void' as it is a built-in type +CompileError: Cannot alias 'void' as it is a built-in type +CompileError: Cannot alias 'never' as it is a built-in type +CompileError: Cannot alias 'never' as it is a built-in type +CompileError: Cannot alias 'iterable' as it is a built-in type +CompileError: Cannot alias 'iterable' as it is a built-in type +CompileError: Cannot alias 'object' as it is a built-in type +CompileError: Cannot alias 'object' as it is a built-in type +CompileError: Cannot alias 'mixed' as it is a built-in type +CompileError: Cannot alias 'mixed' as it is a built-in type +ParseError: syntax error, unexpected token "array" +ParseError: syntax error, unexpected token "array" +ParseError: syntax error, unexpected token "list" +ParseError: syntax error, unexpected token "list" +DONE diff --git a/Zend/zend.c b/Zend/zend.c index 6eeba07d7fac7..c6a5f7f91ce0f 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -1608,6 +1608,15 @@ ZEND_API void zend_begin_record_errors(void) EG(errors) = NULL; } +ZEND_API void zend_emit_recorded_errors(void) +{ + EG(record_errors) = false; + for (uint32_t i = 0; i < EG(num_errors); i++) { + zend_error_info *error = EG(errors)[i]; + zend_error_zstr_at(error->type, error->filename, error->lineno, error->message); + } +} + ZEND_API void zend_free_recorded_errors(void) { if (!EG(num_errors)) { diff --git a/Zend/zend.h b/Zend/zend.h index dc147f760ee0b..3eaf62ace1157 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -20,7 +20,7 @@ #ifndef ZEND_H #define ZEND_H -#define ZEND_VERSION "4.2.0-dev" +#define ZEND_VERSION "4.3.0-dev" #define ZEND_ENGINE_3 @@ -182,6 +182,8 @@ struct _zend_class_entry { zend_function *__serialize; zend_function *__unserialize; + const zend_object_handlers *default_object_handlers; + /* allocated only if class implements Iterator or IteratorAggregate interface */ zend_class_iterator_funcs *iterator_funcs_ptr; /* allocated only if class implements ArrayAccess interface */ @@ -298,8 +300,9 @@ ZEND_API zend_string *zend_print_zval_r_to_str(zval *expr, int indent); ZEND_API void zend_print_flat_zval_r(zval *expr); void zend_print_flat_zval_r_to_buf(smart_str *str, zval *expr); -#define zend_print_variable(var) \ - zend_print_zval((var), 0) +static zend_always_inline size_t zend_print_variable(zval *var) { + return zend_print_zval(var, 0); +} ZEND_API ZEND_COLD void zend_output_debug_string(bool trigger_break, const char *format, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); @@ -397,6 +400,7 @@ ZEND_API void zend_save_error_handling(zend_error_handling *current); ZEND_API void zend_replace_error_handling(zend_error_handling_t error_handling, zend_class_entry *exception_class, zend_error_handling *current); ZEND_API void zend_restore_error_handling(zend_error_handling *saved); ZEND_API void zend_begin_record_errors(void); +ZEND_API void zend_emit_recorded_errors(void); ZEND_API void zend_free_recorded_errors(void); END_EXTERN_C() diff --git a/Zend/zend_API.c b/Zend/zend_API.c index 90787376a6216..54bcad825a501 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -31,6 +31,7 @@ #include "zend_inheritance.h" #include "zend_ini.h" #include "zend_enum.h" +#include "zend_observer.h" #include @@ -43,7 +44,7 @@ static zend_module_entry **module_post_deactivate_handlers; static zend_class_entry **class_cleanup_handlers; -ZEND_API zend_result _zend_get_parameters_array_ex(uint32_t param_count, zval *argument_array) /* {{{ */ +ZEND_API zend_result zend_get_parameters_array_ex(uint32_t param_count, zval *argument_array) /* {{{ */ { zval *param_ptr; uint32_t arg_count; @@ -1627,6 +1628,15 @@ ZEND_API void object_properties_load(zend_object *object, HashTable *properties) zend_hash_update(object->properties, key, &tmp); } } else { + if (UNEXPECTED(object->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) { + zend_throw_error(NULL, "Cannot create dynamic property %s::$%s", + ZSTR_VAL(object->ce->name), property_info != ZEND_WRONG_PROPERTY_INFO ? zend_get_unmangled_property_name(key): ""); + return; + } else if (!(object->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) { + zend_error(E_DEPRECATED, "Creation of dynamic property %s::$%s is deprecated", + ZSTR_VAL(object->ce->name), property_info != ZEND_WRONG_PROPERTY_INFO ? zend_get_unmangled_property_name(key): ""); + } + if (!object->properties) { rebuild_object_properties(object); } @@ -1634,6 +1644,14 @@ ZEND_API void object_properties_load(zend_object *object, HashTable *properties) zval_add_ref(prop); } } else { + if (UNEXPECTED(object->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) { + zend_throw_error(NULL, "Cannot create dynamic property %s::$" ZEND_LONG_FMT, ZSTR_VAL(object->ce->name), h); + return; + } else if (!(object->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) { + zend_error(E_DEPRECATED, "Creation of dynamic property %s::$" ZEND_LONG_FMT " is deprecated", + ZSTR_VAL(object->ce->name), h); + } + if (!object->properties) { rebuild_object_properties(object); } @@ -2685,6 +2703,7 @@ ZEND_API zend_result zend_register_functions(zend_class_entry *scope, const zend } internal_function->type = ZEND_INTERNAL_FUNCTION; internal_function->module = EG(current_module); + internal_function->T = 0; memset(internal_function->reserved, 0, ZEND_MAX_RESERVED_RESOURCES * sizeof(void*)); while (ptr->fname) { @@ -3262,6 +3281,7 @@ ZEND_API zend_result zend_register_class_alias_ex(const char *name, size_t name_ if (!(ce->ce_flags & ZEND_ACC_IMMUTABLE)) { ce->refcount++; } + zend_observer_class_linked_notify(ce, lcname); return SUCCESS; } return FAILURE; diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 785a43191b208..7cb10f6a1d5a4 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -272,11 +272,13 @@ typedef struct _zend_fcall_info_cache { { \ memset(&class_container, 0, sizeof(zend_class_entry)); \ class_container.name = zend_string_init_interned(class_name, class_name_len, 1); \ + class_container.default_object_handlers = &std_object_handlers; \ class_container.info.internal.builtin_functions = functions; \ } #define INIT_CLASS_ENTRY_INIT_METHODS(class_container, functions) \ { \ + class_container.default_object_handlers = &std_object_handlers; \ class_container.constructor = NULL; \ class_container.destructor = NULL; \ class_container.clone = NULL; \ @@ -329,15 +331,13 @@ typedef struct _zend_fcall_info_cache { ZEND_API int zend_next_free_module(void); BEGIN_EXTERN_C() -ZEND_API zend_result _zend_get_parameters_array_ex(uint32_t param_count, zval *argument_array); +ZEND_API zend_result zend_get_parameters_array_ex(uint32_t param_count, zval *argument_array); /* internal function to efficiently copy parameters when executing __call() */ ZEND_API zend_result zend_copy_parameters_array(uint32_t param_count, zval *argument_array); #define zend_get_parameters_array(ht, param_count, argument_array) \ - _zend_get_parameters_array_ex(param_count, argument_array) -#define zend_get_parameters_array_ex(param_count, argument_array) \ - _zend_get_parameters_array_ex(param_count, argument_array) + zend_get_parameters_array_ex(param_count, argument_array) #define zend_parse_parameters_none() \ (EXPECTED(ZEND_NUM_ARGS() == 0) ? SUCCESS : (zend_wrong_parameters_none_error(), FAILURE)) #define zend_parse_parameters_none_throw() \ @@ -382,8 +382,9 @@ ZEND_API void zend_class_implements(zend_class_entry *class_entry, int num_inter ZEND_API zend_result zend_register_class_alias_ex(const char *name, size_t name_len, zend_class_entry *ce, bool persistent); -#define zend_register_class_alias(name, ce) \ - zend_register_class_alias_ex(name, sizeof(name)-1, ce, 1) +static zend_always_inline zend_result zend_register_class_alias(const char *name, zend_class_entry *ce) { + return zend_register_class_alias_ex(name, strlen(name), ce, 1); +} #define zend_register_ns_class_alias(ns, name, ce) \ zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce, 1) @@ -540,18 +541,42 @@ ZEND_API void add_assoc_object_ex(zval *arg, const char *key, size_t key_len, ze ZEND_API void add_assoc_reference_ex(zval *arg, const char *key, size_t key_len, zend_reference *ref); ZEND_API void add_assoc_zval_ex(zval *arg, const char *key, size_t key_len, zval *value); -#define add_assoc_long(__arg, __key, __n) add_assoc_long_ex(__arg, __key, strlen(__key), __n) -#define add_assoc_null(__arg, __key) add_assoc_null_ex(__arg, __key, strlen(__key)) -#define add_assoc_bool(__arg, __key, __b) add_assoc_bool_ex(__arg, __key, strlen(__key), __b) -#define add_assoc_resource(__arg, __key, __r) add_assoc_resource_ex(__arg, __key, strlen(__key), __r) -#define add_assoc_double(__arg, __key, __d) add_assoc_double_ex(__arg, __key, strlen(__key), __d) -#define add_assoc_str(__arg, __key, __str) add_assoc_str_ex(__arg, __key, strlen(__key), __str) -#define add_assoc_string(__arg, __key, __str) add_assoc_string_ex(__arg, __key, strlen(__key), __str) -#define add_assoc_stringl(__arg, __key, __str, __length) add_assoc_stringl_ex(__arg, __key, strlen(__key), __str, __length) -#define add_assoc_array(__arg, __key, __arr) add_assoc_array_ex(__arg, __key, strlen(__key), __arr) -#define add_assoc_object(__arg, __key, __obj) add_assoc_object_ex(__arg, __key, strlen(__key), __obj) -#define add_assoc_reference(__arg, __key, __ref) add_assoc_object_ex(__arg, __key, strlen(__key), __ref) -#define add_assoc_zval(__arg, __key, __value) add_assoc_zval_ex(__arg, __key, strlen(__key), __value) +static zend_always_inline void add_assoc_long(zval *arg, const char *key, zend_long n) { + add_assoc_long_ex(arg, key, strlen(key), n); +} +static zend_always_inline void add_assoc_null(zval *arg, const char *key) { + add_assoc_null_ex(arg, key, strlen(key)); +} +static zend_always_inline void add_assoc_bool(zval *arg, const char *key, bool b) { + add_assoc_bool_ex(arg, key, strlen(key), b); +} +static zend_always_inline void add_assoc_resource(zval *arg, const char *key, zend_resource *r) { + add_assoc_resource_ex(arg, key, strlen(key), r); +} +static zend_always_inline void add_assoc_double(zval *arg, const char *key, double d) { + add_assoc_double_ex(arg, key, strlen(key), d); +} +static zend_always_inline void add_assoc_str(zval *arg, const char *key, zend_string *str) { + add_assoc_str_ex(arg, key, strlen(key), str); +} +static zend_always_inline void add_assoc_string(zval *arg, const char *key, const char *str) { + add_assoc_string_ex(arg, key, strlen(key), str); +} +static zend_always_inline void add_assoc_stringl(zval *arg, const char *key, const char *str, size_t length) { + add_assoc_stringl_ex(arg, key, strlen(key), str, length); +} +static zend_always_inline void add_assoc_array(zval *arg, const char *key, zend_array *arr) { + add_assoc_array_ex(arg, key, strlen(key), arr); +} +static zend_always_inline void add_assoc_object(zval *arg, const char *key, zend_object *obj) { + add_assoc_object_ex(arg, key, strlen(key), obj); +} +static zend_always_inline void add_assoc_reference(zval *arg, const char *key, zend_reference *ref) { + add_assoc_reference_ex(arg, key, strlen(key), ref); +} +static zend_always_inline void add_assoc_zval(zval *arg, const char *key, zval *value) { + add_assoc_zval_ex(arg, key, strlen(key), value); +} ZEND_API void add_index_long(zval *arg, zend_ulong index, zend_long n); ZEND_API void add_index_null(zval *arg, zend_ulong index); @@ -602,19 +627,42 @@ ZEND_API void add_property_object_ex(zval *arg, const char *key, size_t key_len, ZEND_API void add_property_reference_ex(zval *arg, const char *key, size_t key_len, zend_reference *ref); ZEND_API void add_property_zval_ex(zval *arg, const char *key, size_t key_len, zval *value); -#define add_property_long(__arg, __key, __n) add_property_long_ex(__arg, __key, strlen(__key), __n) -#define add_property_null(__arg, __key) add_property_null_ex(__arg, __key, strlen(__key)) -#define add_property_bool(__arg, __key, __b) add_property_bool_ex(__arg, __key, strlen(__key), __b) -#define add_property_resource(__arg, __key, __r) add_property_resource_ex(__arg, __key, strlen(__key), __r) -#define add_property_double(__arg, __key, __d) add_property_double_ex(__arg, __key, strlen(__key), __d) -#define add_property_str(__arg, __key, __str) add_property_str_ex(__arg, __key, strlen(__key), __str) -#define add_property_string(__arg, __key, __str) add_property_string_ex(__arg, __key, strlen(__key), __str) -#define add_property_stringl(__arg, __key, __str, __length) add_property_stringl_ex(__arg, __key, strlen(__key), __str, __length) -#define add_property_array(__arg, __key, __arr) add_property_array_ex(__arg, __key, strlen(__key), __arr) -#define add_property_object(__arg, __key, __obj) add_property_object_ex(__arg, __key, strlen(__key), __obj) -#define add_property_reference(__arg, __key, __ref) add_property_reference_ex(__arg, __key, strlen(__key), __ref) -#define add_property_zval(__arg, __key, __value) add_property_zval_ex(__arg, __key, strlen(__key), __value) - +static zend_always_inline void add_property_long(zval *arg, const char *key, zend_long n) { + add_property_long_ex(arg, key, strlen(key), n); +} +static zend_always_inline void add_property_null(zval *arg, const char *key) { + add_property_null_ex(arg, key, strlen(key)); +} +static zend_always_inline void add_property_bool(zval *arg, const char *key, bool b) { + add_property_bool_ex(arg, key, strlen(key), b); +} +static zend_always_inline void add_property_resource(zval *arg, const char *key, zend_resource *r) { + add_property_resource_ex(arg, key, strlen(key), r); +} +static zend_always_inline void add_property_double(zval *arg, const char *key, double d) { + add_property_double_ex(arg, key, strlen(key), d); +} +static zend_always_inline void add_property_str(zval *arg, const char *key, zend_string *str) { + add_property_str_ex(arg, key, strlen(key), str); +} +static zend_always_inline void add_property_string(zval *arg, const char *key, const char *str) { + add_property_string_ex(arg, key, strlen(key), str); +} +static zend_always_inline void add_property_stringl(zval *arg, const char *key, const char *str, size_t length) { + add_property_stringl_ex(arg, key, strlen(key), str, length); +} +static zend_always_inline void add_property_array(zval *arg, const char *key, zend_array *arr) { + add_property_array_ex(arg, key, strlen(key), arr); +} +static zend_always_inline void add_property_object(zval *arg, const char *key, zend_object *obj) { + add_property_object_ex(arg, key, strlen(key), obj); +} +static zend_always_inline void add_property_reference(zval *arg, const char *key, zend_reference *ref) { + add_property_reference_ex(arg, key, strlen(key), ref); +} +static zend_always_inline void add_property_zval(zval *arg, const char *key, zval *value) { + add_property_zval_ex(arg, key, strlen(key), value); +} ZEND_API zend_result _call_user_function_impl(zval *object, zval *function_name, zval *retval_ptr, uint32_t param_count, zval params[], HashTable *named_params); @@ -777,8 +825,18 @@ END_EXTERN_C() #define CHECK_ZVAL_STRING(z) #endif -#define CHECK_ZVAL_NULL_PATH(p) (Z_STRLEN_P(p) != strlen(Z_STRVAL_P(p))) -#define CHECK_NULL_PATH(p, l) (strlen(p) != (size_t)(l)) +static zend_always_inline bool zend_str_has_nul_byte(const zend_string *str) +{ + return ZSTR_LEN(str) != strlen(ZSTR_VAL(str)); +} +static zend_always_inline bool zend_char_has_nul_byte(const char *s, size_t known_length) +{ + return known_length != strlen(s); +} + +/* Compatibility with PHP 8.1 and below */ +#define CHECK_ZVAL_NULL_PATH(p) zend_str_has_nul_byte(Z_STR_P(p)) +#define CHECK_NULL_PATH(p, l) zend_char_has_nul_byte(p, l) #define ZVAL_STRINGL(z, s, l) do { \ ZVAL_NEW_STR(z, zend_string_init(s, l, 0)); \ @@ -1482,6 +1540,10 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char * SEPARATE_ZVAL_NOREF(_arg); \ } +/* get the zval* for a previously parsed argument */ +#define Z_PARAM_GET_PREV_ZVAL(dest) \ + zend_parse_arg_zval_deref(_arg, &dest, 0); + /* old "|" */ #define Z_PARAM_OPTIONAL \ _optional = 1; @@ -1644,6 +1706,10 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char * #define Z_PARAM_FUNC_OR_NULL(dest_fci, dest_fcc) \ Z_PARAM_FUNC_EX(dest_fci, dest_fcc, 1, 0) +#define Z_PARAM_FUNC_OR_NULL_WITH_ZVAL(dest_fci, dest_fcc, dest_zp) \ + Z_PARAM_FUNC_EX(dest_fci, dest_fcc, 1, 0) \ + Z_PARAM_GET_PREV_ZVAL(dest_zp) + /* old "h" */ #define Z_PARAM_ARRAY_HT_EX2(dest, check_null, deref, separate) \ Z_PARAM_PROLOGUE(deref, separate); \ diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index c7895a6624c60..d0e28dca0daab 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2659,6 +2659,7 @@ ZEND_API char* ZEND_FASTCALL _estrndup(const char *s, size_t length ZEND_FILE_LI return p; } +static ZEND_COLD ZEND_NORETURN void zend_out_of_memory(void); ZEND_API char* ZEND_FASTCALL zend_strndup(const char *s, size_t length) { @@ -2669,7 +2670,7 @@ ZEND_API char* ZEND_FASTCALL zend_strndup(const char *s, size_t length) } p = (char *) malloc(length + 1); if (UNEXPECTED(p == NULL)) { - return p; + zend_out_of_memory(); } if (EXPECTED(length)) { memcpy(p, s, length); @@ -3111,6 +3112,15 @@ ZEND_API void * __zend_realloc(void *p, size_t len) zend_out_of_memory(); } +ZEND_API char * __zend_strdup(const char *s) +{ + char *tmp = strdup(s); + if (EXPECTED(tmp)) { + return tmp; + } + zend_out_of_memory(); +} + #ifdef ZTS size_t zend_mm_globals_size(void) { diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h index 3df0a3ba719de..578d4c78cc5c5 100644 --- a/Zend/zend_alloc.h +++ b/Zend/zend_alloc.h @@ -182,6 +182,7 @@ ZEND_API void ZEND_FASTCALL _efree_huge(void *, size_t size); ZEND_API ZEND_ATTRIBUTE_MALLOC void * __zend_malloc(size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE(1); ZEND_API ZEND_ATTRIBUTE_MALLOC void * __zend_calloc(size_t nmemb, size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2); ZEND_API void * __zend_realloc(void *p, size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE(2); +ZEND_API ZEND_ATTRIBUTE_MALLOC char * __zend_strdup(const char *s); /* Selective persistent/non persistent allocation macros */ #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size):emalloc(size)) @@ -201,7 +202,7 @@ ZEND_API void * __zend_realloc(void *p, size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE(2) #define safe_perealloc(ptr, nmemb, size, offset, persistent) ((persistent)?_safe_realloc((ptr), (nmemb), (size), (offset)):safe_erealloc((ptr), (nmemb), (size), (offset))) #define perealloc_recoverable(ptr, size, persistent) ((persistent)?realloc((ptr), (size)):erealloc_recoverable((ptr), (size))) #define perealloc2_recoverable(ptr, size, persistent) ((persistent)?realloc((ptr), (size)):erealloc2_recoverable((ptr), (size), (copy_size))) -#define pestrdup(s, persistent) ((persistent)?strdup(s):estrdup(s)) +#define pestrdup(s, persistent) ((persistent)?__zend_strdup(s):estrdup(s)) #define pestrndup(s, length, persistent) ((persistent)?zend_strndup((s),(length)):estrndup((s),(length))) #define pemalloc_rel(size, persistent) ((persistent)?__zend_malloc(size):emalloc_rel(size)) diff --git a/Zend/zend_alloc_sizes.h b/Zend/zend_alloc_sizes.h index 9f1c00eaad568..502b982a50522 100644 --- a/Zend/zend_alloc_sizes.h +++ b/Zend/zend_alloc_sizes.h @@ -19,7 +19,7 @@ #ifndef ZEND_ALLOC_SIZES_H #define ZEND_ALLOC_SIZES_H -#define ZEND_MM_CHUNK_SIZE (2 * 1024 * 1024) /* 2 MB */ +#define ZEND_MM_CHUNK_SIZE ((size_t) (2 * 1024 * 1024)) /* 2 MB */ #define ZEND_MM_PAGE_SIZE (4 * 1024) /* 4 KB */ #define ZEND_MM_PAGES (ZEND_MM_CHUNK_SIZE / ZEND_MM_PAGE_SIZE) /* 512 */ #define ZEND_MM_FIRST_PAGE (1) diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c index 9fbfcd4c202f7..acde144eb76f6 100644 --- a/Zend/zend_ast.c +++ b/Zend/zend_ast.c @@ -495,7 +495,7 @@ static zend_result zend_ast_add_unpacked_element(zval *result, zval *expr) { zend_class_entry *zend_ast_fetch_class(zend_ast *ast, zend_class_entry *scope) { - return zend_fetch_class_with_scope(zend_ast_get_str(ast), ast->attr | ZEND_FETCH_CLASS_EXCEPTION, scope); + return zend_fetch_class_with_scope(zend_ast_get_str(ast), (ast->attr >> ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT) | ZEND_FETCH_CLASS_EXCEPTION, scope); } static zend_result ZEND_FASTCALL zend_ast_evaluate_ex(zval *result, zend_ast *ast, zend_class_entry *scope, bool *short_circuited_ptr) diff --git a/Zend/zend_atomic.h b/Zend/zend_atomic.h index afc210e6336d5..c10bb97e4f71f 100644 --- a/Zend/zend_atomic.h +++ b/Zend/zend_atomic.h @@ -57,6 +57,13 @@ BEGIN_EXTERN_C() #if ZEND_WIN32 +#ifndef InterlockedExchange8 +#define InterlockedExchange8 _InterlockedExchange8 +#endif +#ifndef InterlockedOr8 +#define InterlockedOr8 _InterlockedOr8 +#endif + #define ZEND_ATOMIC_BOOL_INIT(obj, desired) ((obj)->value = (desired)) static zend_always_inline bool zend_atomic_bool_exchange_ex(zend_atomic_bool *obj, bool desired) { diff --git a/Zend/zend_attributes.c b/Zend/zend_attributes.c index 5a446c8c2859e..b34092be038a2 100644 --- a/Zend/zend_attributes.c +++ b/Zend/zend_attributes.c @@ -131,18 +131,6 @@ ZEND_METHOD(SensitiveParameterValue, __debugInfo) RETURN_EMPTY_ARRAY(); } -static zend_object *attributes_sensitive_parameter_value_new(zend_class_entry *ce) -{ - zend_object *object; - - object = zend_objects_new(ce); - object->handlers = &attributes_object_handlers_sensitive_parameter_value; - - object_properties_init(object, ce); - - return object; -} - static HashTable *attributes_sensitive_parameter_value_get_properties_for(zend_object *zobj, zend_prop_purpose purpose) { return NULL; @@ -382,7 +370,7 @@ void zend_register_attribute_ce(void) /* This is not an actual attribute, thus the zend_mark_internal_attribute() call is missing. */ zend_ce_sensitive_parameter_value = register_class_SensitiveParameterValue(); - zend_ce_sensitive_parameter_value->create_object = attributes_sensitive_parameter_value_new; + zend_ce_sensitive_parameter_value->default_object_handlers = &attributes_object_handlers_sensitive_parameter_value; } void zend_attributes_shutdown(void) diff --git a/Zend/zend_closures.c b/Zend/zend_closures.c index 3a2c3b11d385c..1f9285ef04468 100644 --- a/Zend/zend_closures.c +++ b/Zend/zend_closures.c @@ -521,7 +521,6 @@ static zend_object *zend_closure_new(zend_class_entry *class_type) /* {{{ */ memset(closure, 0, sizeof(zend_closure)); zend_object_std_init(&closure->std, class_type); - closure->std.handlers = &closure_handlers; return (zend_object*)closure; } @@ -568,6 +567,22 @@ static HashTable *zend_closure_get_debug_info(zend_object *object, int *is_temp) debug_info = zend_new_array(8); + if (closure->func.op_array.fn_flags & ZEND_ACC_FAKE_CLOSURE) { + if (closure->func.common.scope) { + zend_string *class_name = closure->func.common.scope->name; + zend_string *func_name = closure->func.common.function_name; + zend_string *combined = zend_string_concat3( + ZSTR_VAL(class_name), ZSTR_LEN(class_name), + "::", strlen("::"), + ZSTR_VAL(func_name), ZSTR_LEN(func_name) + ); + ZVAL_STR(&val, combined); + } else { + ZVAL_STR_COPY(&val, closure->func.common.function_name); + } + zend_hash_update(debug_info, ZSTR_KNOWN(ZEND_STR_FUNCTION), &val); + } + if (closure->func.type == ZEND_USER_FUNCTION && closure->func.op_array.static_variables) { zval *var; zend_string *key; @@ -662,6 +677,7 @@ void zend_register_closure_ce(void) /* {{{ */ { zend_ce_closure = register_class_Closure(); zend_ce_closure->create_object = zend_closure_new; + zend_ce_closure->default_object_handlers = &closure_handlers; memcpy(&closure_handlers, &std_object_handlers, sizeof(zend_object_handlers)); closure_handlers.free_obj = zend_closure_free_storage; diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index 2467c92b514c4..6d205c719762b 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -1093,6 +1093,7 @@ ZEND_API zend_result do_bind_function(zend_function *func, zval *lcname) /* {{{ if (func->common.function_name) { zend_string_addref(func->common.function_name); } + zend_observer_function_declared_notify(&func->op_array, Z_STR_P(lcname)); return SUCCESS; } /* }}} */ @@ -1116,12 +1117,14 @@ ZEND_API zend_class_entry *zend_bind_class_in_slot( } if (ce->ce_flags & ZEND_ACC_LINKED) { + zend_observer_class_linked_notify(ce, Z_STR_P(lcname)); return ce; } ce = zend_do_link_class(ce, lc_parent_name, Z_STR_P(lcname)); if (ce) { ZEND_ASSERT(!EG(exception)); + zend_observer_class_linked_notify(ce, Z_STR_P(lcname)); return ce; } @@ -1594,7 +1597,12 @@ static bool zend_try_compile_const_expr_resolve_class_name(zval *zv, zend_ast *c /* We don't use zend_verify_const_access because we need to deal with unlinked classes. */ static bool zend_verify_ct_const_access(zend_class_constant *c, zend_class_entry *scope) { - if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PUBLIC) { + if (c->ce->ce_flags & ZEND_ACC_TRAIT) { + /* This condition is only met on directly accessing trait constants, + * because the ce is replaced to the class entry of the composing class + * on binding. */ + return 0; + } else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PUBLIC) { return 1; } else if (ZEND_CLASS_CONST_FLAGS(c) & ZEND_ACC_PRIVATE) { return c->ce == scope; @@ -1820,6 +1828,7 @@ ZEND_API void zend_initialize_class_data(zend_class_entry *ce, bool nullify_hand ZEND_MAP_PTR_INIT(ce->static_members_table, NULL); ZEND_MAP_PTR_INIT(ce->mutable_data, NULL); + ce->default_object_handlers = &std_object_handlers; ce->default_properties_count = 0; ce->default_static_members_count = 0; ce->properties_info_table = NULL; @@ -3982,6 +3991,7 @@ static void zend_compile_init_user_func(zend_ast *name_ast, uint32_t num_args, z static zend_result zend_compile_func_cufa(znode *result, zend_ast_list *args, zend_string *lcname) /* {{{ */ { znode arg_node; + zend_op *opline; if (args->children != 2) { return FAILURE; @@ -4023,7 +4033,8 @@ static zend_result zend_compile_func_cufa(znode *result, zend_ast_list *args, ze zend_compile_expr(&arg_node, args->child[1]); zend_emit_op(NULL, ZEND_SEND_ARRAY, &arg_node, NULL); zend_emit_op(NULL, ZEND_CHECK_UNDEF_ARGS, NULL, NULL); - zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL); + opline = zend_emit_op(result, ZEND_DO_FCALL, NULL, NULL); + opline->extended_value = ZEND_FCALL_MAY_HAVE_EXTRA_NAMED_PARAMS; return SUCCESS; } @@ -7238,6 +7249,7 @@ static void zend_begin_func_decl(znode *result, zend_op_array *op_array, zend_as if (UNEXPECTED(zend_hash_add_ptr(CG(function_table), lcname, op_array) == NULL)) { do_bind_function_error(lcname, op_array, 1); } + zend_observer_function_declared_notify(op_array, lcname); zend_string_release_ex(lcname, 0); return; } @@ -7400,7 +7412,7 @@ static void zend_compile_prop_decl(zend_ast *ast, zend_ast *type_ast, uint32_t f } if (ce->ce_flags & ZEND_ACC_ENUM) { - zend_error_noreturn(E_COMPILE_ERROR, "Enums may not include properties"); + zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include properties", ZSTR_VAL(ce->name)); } if (flags & ZEND_ACC_ABSTRACT) { @@ -7532,11 +7544,6 @@ static void zend_compile_class_const_decl(zend_ast *ast, uint32_t flags, zend_as zend_class_entry *ce = CG(active_class_entry); uint32_t i, children = list->children; - if ((ce->ce_flags & ZEND_ACC_TRAIT) != 0) { - zend_error_noreturn(E_COMPILE_ERROR, "Traits cannot have constants"); - return; - } - for (i = 0; i < children; ++i) { zend_class_constant *c; zend_ast *const_ast = list->child[i]; @@ -7875,6 +7882,7 @@ static void zend_compile_class_decl(znode *result, zend_ast *ast, bool toplevel) zend_string_release(lcname); zend_build_properties_info_table(ce); ce->ce_flags |= ZEND_ACC_LINKED; + zend_observer_class_linked_notify(ce, lcname); return; } } else if (!extends_ast) { @@ -8056,6 +8064,13 @@ static void zend_compile_use(zend_ast *ast) /* {{{ */ zend_string *old_name = zend_ast_get_str(old_name_ast); zend_string *new_name, *lookup_name; + /* Check that we are not attempting to alias a built-in type */ + if (type == ZEND_SYMBOL_CLASS && zend_is_reserved_class_name(old_name)) { + zend_throw_exception_ex(zend_ce_compile_error, 0, + "Cannot alias '%s' as it is a built-in type", ZSTR_VAL(old_name)); + return; + } + if (new_name_ast) { new_name = zend_string_copy(zend_ast_get_str(new_name_ast)); } else { @@ -9623,11 +9638,12 @@ static void zend_compile_encaps_list(znode *result, zend_ast *ast) /* {{{ */ last_const_node.op_type = IS_UNUSED; for (i = 0; i < list->children; i++) { zend_ast *encaps_var = list->child[i]; + if (encaps_var->attr & (ZEND_ENCAPS_VAR_DOLLAR_CURLY|ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR)) { - if (encaps_var->attr & ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR) { - zend_error(E_DEPRECATED, "Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead"); - } else { + if ((encaps_var->kind == ZEND_AST_VAR || encaps_var->kind == ZEND_AST_DIM) && (encaps_var->attr & ZEND_ENCAPS_VAR_DOLLAR_CURLY)) { zend_error(E_DEPRECATED, "Using ${var} in strings is deprecated, use {$var} instead"); + } else if (encaps_var->kind == ZEND_AST_VAR && (encaps_var->attr & ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR)) { + zend_error(E_DEPRECATED, "Using ${expr} (variable variables) in strings is deprecated, use {${expr}} instead"); } } @@ -9796,8 +9812,8 @@ static void zend_compile_const_expr_class_const(zend_ast **ast_ptr) /* {{{ */ zend_string_release_ex(class_name, 0); if (tmp != class_name) { zval *zv = zend_ast_get_zval(class_ast); - ZVAL_STR(zv, tmp); + class_ast->attr = ZEND_NAME_FQ; } } @@ -9892,7 +9908,7 @@ static void zend_compile_const_expr_new(zend_ast **ast_ptr) zval *class_ast_zv = zend_ast_get_zval(class_ast); zval_ptr_dtor_nogc(class_ast_zv); ZVAL_STR(class_ast_zv, class_name); - class_ast->attr = fetch_type; + class_ast->attr = fetch_type << ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT; } static void zend_compile_const_expr_args(zend_ast **ast_ptr) @@ -10544,7 +10560,7 @@ static void zend_eval_const_expr(zend_ast **ast_ptr) /* {{{ */ c = (zend_uchar) Z_STRVAL_P(container)[offset]; ZVAL_CHAR(&result, c); } else if (Z_TYPE_P(container) <= IS_FALSE) { - ZVAL_NULL(&result); + return; /* warning... handle at runtime */ } else { return; } @@ -10631,6 +10647,7 @@ static void zend_eval_const_expr(zend_ast **ast_ptr) /* {{{ */ zend_eval_const_expr(&ast->child[2]); return; case ZEND_AST_PROP: + case ZEND_AST_NULLSAFE_PROP: zend_eval_const_expr(&ast->child[0]); zend_eval_const_expr(&ast->child[1]); return; diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 5bcb1a58ec4e2..7cc75d5129bb9 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -448,12 +448,12 @@ struct _zend_op_array { uint32_t required_num_args; zend_arg_info *arg_info; HashTable *attributes; + uint32_t T; /* number of temporary variables */ ZEND_MAP_PTR_DEF(void **, run_time_cache); /* END of common elements */ int cache_size; /* number of run_time_cache_slots * sizeof(void*) */ int last_var; /* number of CV variables */ - uint32_t T; /* number of temporary variables */ uint32_t last; /* number of opcodes */ zend_op *opcodes; @@ -503,6 +503,7 @@ typedef struct _zend_internal_function { uint32_t required_num_args; zend_internal_arg_info *arg_info; HashTable *attributes; + uint32_t T; /* number of temporary variables */ ZEND_MAP_PTR_DEF(void **, run_time_cache); /* END of common elements */ @@ -528,6 +529,7 @@ union _zend_function { uint32_t required_num_args; zend_arg_info *arg_info; /* index -1 represents the return value info, if any */ HashTable *attributes; + uint32_t T; /* number of temporary variables */ ZEND_MAP_PTR_DEF(void **, run_time_cache); } common; @@ -937,6 +939,9 @@ ZEND_API zend_string *zend_type_to_string(zend_type type); #define ZEND_NAME_NOT_FQ 1 #define ZEND_NAME_RELATIVE 2 +/* ZEND_FETCH_ flags in class name AST of new const expression must not clash with ZEND_NAME_ flags */ +#define ZEND_CONST_EXPR_NEW_FETCH_TYPE_SHIFT 2 + #define ZEND_TYPE_NULLABLE (1<<8) #define ZEND_ARRAY_SYNTAX_LIST 1 /* list() */ @@ -1014,9 +1019,15 @@ ZEND_API zend_string *zend_type_to_string(zend_type type); #define ZEND_ARG_TYPE_IS_TENTATIVE(arg_info) \ ((ZEND_TYPE_FULL_MASK((arg_info)->type) & _ZEND_IS_TENTATIVE_BIT) != 0) -#define ZEND_DIM_IS (1 << 0) /* isset fetch needed for null coalesce */ +#define ZEND_DIM_IS (1 << 0) /* isset fetch needed for null coalesce. Set in zend_compile.c for ZEND_AST_DIM nested within ZEND_AST_COALESCE. */ #define ZEND_DIM_ALTERNATIVE_SYNTAX (1 << 1) /* deprecated curly brace usage */ +/* Attributes for ${} encaps var in strings (ZEND_AST_DIM or ZEND_AST_VAR node) */ +/* ZEND_AST_VAR nodes can have any of the ZEND_ENCAPS_VAR_* flags */ +/* ZEND_AST_DIM flags can have ZEND_DIM_ALTERNATIVE_SYNTAX or ZEND_ENCAPS_VAR_DOLLAR_CURLY during the parse phase (ZEND_DIM_ALTERNATIVE_SYNTAX is a thrown fatal error). */ +#define ZEND_ENCAPS_VAR_DOLLAR_CURLY (1 << 0) +#define ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR (1 << 1) + /* Make sure these don't clash with ZEND_FETCH_CLASS_* flags. */ #define IS_CONSTANT_CLASS 0x400 /* __CLASS__ in trait */ #define IS_CONSTANT_UNQUALIFIED_IN_NAMESPACE 0x800 @@ -1086,10 +1097,6 @@ static zend_always_inline bool zend_check_arg_send_type(const zend_function *zf, /* Attribute for ternary inside parentheses */ #define ZEND_PARENTHESIZED_CONDITIONAL 1 -/* Attributes for ${} encaps var in strings */ -#define ZEND_ENCAPS_VAR_DOLLAR_CURLY (1<<0) -#define ZEND_ENCAPS_VAR_DOLLAR_CURLY_VAR_VAR (1<<1) - /* For "use" AST nodes and the seen symbol table */ #define ZEND_SYMBOL_CLASS (1<<0) #define ZEND_SYMBOL_FUNCTION (1<<1) @@ -1177,6 +1184,9 @@ END_EXTERN_C() /* this flag is set when compiler invoked during preloading in separate process */ #define ZEND_COMPILE_PRELOAD_IN_CHILD (1<<17) +/* ignore observer notifications, e.g. to manually notify afterwards in a post-processing step after compilation */ +#define ZEND_COMPILE_IGNORE_OBSERVER (1<<18) + /* The default value for CG(compiler_options) */ #define ZEND_COMPILE_DEFAULT ZEND_COMPILE_HANDLE_OP_ARRAY diff --git a/Zend/zend_constants.c b/Zend/zend_constants.c index 2ba5edd278935..3fc8efed57c15 100644 --- a/Zend/zend_constants.c +++ b/Zend/zend_constants.c @@ -360,6 +360,15 @@ ZEND_API zval *zend_get_class_constant_ex(zend_string *class_name, zend_string * } goto failure; } + + if (UNEXPECTED(ce->ce_flags & ZEND_ACC_TRAIT)) { + /** Prevent accessing trait constants directly on cases like \defined() or \constant(), etc. */ + if ((flags & ZEND_FETCH_CLASS_SILENT) == 0) { + zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(class_name), ZSTR_VAL(constant_name)); + } + goto failure; + } + ret_constant = &c->value; } } diff --git a/Zend/zend_constants_arginfo.h b/Zend/zend_constants_arginfo.h index 0665c0b942539..3cfaee30143cb 100644 --- a/Zend/zend_constants_arginfo.h +++ b/Zend/zend_constants_arginfo.h @@ -5,20 +5,20 @@ static void register_zend_constants_symbols(int module_number) { - REGISTER_LONG_CONSTANT("E_ERROR", E_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_WARNING", E_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_PARSE", E_PARSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_NOTICE", E_NOTICE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_CORE_ERROR", E_CORE_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_CORE_WARNING", E_CORE_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_COMPILE_ERROR", E_COMPILE_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_COMPILE_WARNING", E_COMPILE_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_USER_ERROR", E_USER_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_USER_WARNING", E_USER_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_USER_NOTICE", E_USER_NOTICE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_STRICT", E_STRICT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_RECOVERABLE_ERROR", E_RECOVERABLE_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_DEPRECATED", E_DEPRECATED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_USER_DEPRECATED", E_USER_DEPRECATED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("E_ALL", E_ALL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_ERROR", E_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_WARNING", E_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_PARSE", E_PARSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_NOTICE", E_NOTICE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_CORE_ERROR", E_CORE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_CORE_WARNING", E_CORE_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_COMPILE_ERROR", E_COMPILE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_COMPILE_WARNING", E_COMPILE_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_USER_ERROR", E_USER_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_USER_WARNING", E_USER_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_USER_NOTICE", E_USER_NOTICE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_STRICT", E_STRICT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_RECOVERABLE_ERROR", E_RECOVERABLE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_DEPRECATED", E_DEPRECATED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_USER_DEPRECATED", E_USER_DEPRECATED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("E_ALL", E_ALL, CONST_PERSISTENT); } diff --git a/Zend/zend_cpuinfo.c b/Zend/zend_cpuinfo.c index 08843a9401f46..809e379c86056 100644 --- a/Zend/zend_cpuinfo.c +++ b/Zend/zend_cpuinfo.c @@ -28,15 +28,15 @@ typedef struct _zend_cpu_info { static zend_cpu_info cpuinfo = {0}; -#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) -# if defined(HAVE_CPUID_H) && defined(HAVE_CPUID_COUNT) -# include +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) +# if defined(HAVE_CPUID_H) && defined(HAVE_CPUID_COUNT) /* use cpuid.h functions */ +# include static void __zend_cpuid(uint32_t func, uint32_t subfunc, zend_cpu_info *cpuinfo) { __cpuid_count(func, subfunc, cpuinfo->eax, cpuinfo->ebx, cpuinfo->ecx, cpuinfo->edx); } -# else +# else /* use inline asm */ static void __zend_cpuid(uint32_t func, uint32_t subfunc, zend_cpu_info *cpuinfo) { -#if defined(__i386__) && (defined(__pic__) || defined(__PIC__)) +# if defined(__i386__) && (defined(__pic__) || defined(__PIC__)) /* PIC on i386 uses %ebx, so preserve it. */ __asm__ __volatile__ ( "pushl %%ebx\n" @@ -46,16 +46,16 @@ static void __zend_cpuid(uint32_t func, uint32_t subfunc, zend_cpu_info *cpuinfo : "=a"(cpuinfo->eax), "=r"(cpuinfo->ebx), "=c"(cpuinfo->ecx), "=d"(cpuinfo->edx) : "a"(func), "c"(subfunc) ); -#else +# else __asm__ __volatile__ ( "cpuid" : "=a"(cpuinfo->eax), "=b"(cpuinfo->ebx), "=c"(cpuinfo->ecx), "=d"(cpuinfo->edx) : "a"(func), "c"(subfunc) ); -#endif +# endif } # endif -#elif defined(ZEND_WIN32) && !defined(__clang__) +#elif defined(_MSC_VER) && !defined(__clang__) && (defined(_M_X64) || defined(_M_IX86)) /* use MSVC __cpuidex intrin */ # include static void __zend_cpuid(uint32_t func, uint32_t subfunc, zend_cpu_info *cpuinfo) { int regs[4]; @@ -67,7 +67,7 @@ static void __zend_cpuid(uint32_t func, uint32_t subfunc, zend_cpu_info *cpuinfo cpuinfo->ecx = regs[2]; cpuinfo->edx = regs[3]; } -#else +#else /* fall back to zero */ static void __zend_cpuid(uint32_t func, uint32_t subfunc, zend_cpu_info *cpuinfo) { cpuinfo->eax = 0; } diff --git a/Zend/zend_enum.c b/Zend/zend_enum.c index 288e019c91383..192d0eca99131 100644 --- a/Zend/zend_enum.c +++ b/Zend/zend_enum.c @@ -23,11 +23,12 @@ #include "zend_interfaces.h" #include "zend_enum.h" #include "zend_extensions.h" +#include "zend_observer.h" #define ZEND_ENUM_DISALLOW_MAGIC_METHOD(propertyName, methodName) \ do { \ if (ce->propertyName) { \ - zend_error_noreturn(E_COMPILE_ERROR, "Enum may not include %s", methodName); \ + zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), methodName); \ } \ } while (0); @@ -46,8 +47,6 @@ zend_object *zend_enum_new(zval *result, zend_class_entry *ce, zend_string *case ZVAL_COPY(OBJ_PROP_NUM(zobj, 1), backing_value_zv); } - zobj->handlers = &enum_handlers; - return zobj; } @@ -66,7 +65,7 @@ static void zend_verify_enum_properties(zend_class_entry *ce) continue; } // FIXME: File/line number for traits? - zend_error_noreturn(E_COMPILE_ERROR, "Enum \"%s\" may not include properties", + zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include properties", ZSTR_VAL(ce->name)); } ZEND_HASH_FOREACH_END(); } @@ -98,7 +97,7 @@ static void zend_verify_enum_magic_methods(zend_class_entry *ce) const char *forbidden_method = forbidden_methods[i]; if (zend_hash_str_exists(&ce->function_table, forbidden_method, strlen(forbidden_method))) { - zend_error_noreturn(E_COMPILE_ERROR, "Enum may not include magic method %s", forbidden_method); + zend_error_noreturn(E_COMPILE_ERROR, "Enum %s cannot include magic method %s", ZSTR_VAL(ce->name), forbidden_method); } } } @@ -107,7 +106,7 @@ static void zend_verify_enum_interfaces(zend_class_entry *ce) { if (zend_class_implements_interface(ce, zend_ce_serializable)) { zend_error_noreturn(E_COMPILE_ERROR, - "Enums may not implement the Serializable interface"); + "Enum %s cannot implement the Serializable interface", ZSTR_VAL(ce->name)); } } @@ -183,6 +182,8 @@ void zend_enum_add_interfaces(zend_class_entry *ce) ce->interface_names[num_interfaces_before + 1].name = zend_string_copy(zend_ce_backed_enum->name); ce->interface_names[num_interfaces_before + 1].lc_name = zend_string_init("backedenum", sizeof("backedenum") - 1, 0); } + + ce->default_object_handlers = &enum_handlers; } zend_result zend_enum_build_backed_enum_table(zend_class_entry *ce) @@ -306,10 +307,10 @@ ZEND_API zend_result zend_enum_get_case_by_value(zend_object **result, zend_clas } if (ce->enum_backing_type == IS_LONG) { - zend_value_error(ZEND_LONG_FMT " is not a valid backing value for enum \"%s\"", long_key, ZSTR_VAL(ce->name)); + zend_value_error(ZEND_LONG_FMT " is not a valid backing value for enum %s", long_key, ZSTR_VAL(ce->name)); } else { ZEND_ASSERT(ce->enum_backing_type == IS_STRING); - zend_value_error("\"%s\" is not a valid backing value for enum \"%s\"", ZSTR_VAL(string_key), ZSTR_VAL(ce->name)); + zend_value_error("\"%s\" is not a valid backing value for enum %s", ZSTR_VAL(string_key), ZSTR_VAL(ce->name)); } return FAILURE; } @@ -407,6 +408,7 @@ static void zend_enum_register_func(zend_class_entry *ce, zend_known_string_id n zif->type = ZEND_INTERNAL_FUNCTION; zif->module = EG(current_module); zif->scope = ce; + zif->T = ZEND_OBSERVER_ENABLED; ZEND_MAP_PTR_NEW(zif->run_time_cache); ZEND_MAP_PTR_SET(zif->run_time_cache, zend_arena_alloc(&CG(arena), zend_internal_run_time_cache_reserved_size())); diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index 3934a3cef0717..5a8ebdd0384c1 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -240,7 +240,7 @@ ZEND_API void zend_clear_exception(void) /* {{{ */ } /* }}} */ -static zend_object *zend_default_exception_new_ex(zend_class_entry *class_type, bool skip_top_traces) /* {{{ */ +static zend_object *zend_default_exception_new(zend_class_entry *class_type) /* {{{ */ { zval tmp; zval trace; @@ -248,13 +248,11 @@ static zend_object *zend_default_exception_new_ex(zend_class_entry *class_type, zend_string *filename; zend_object *object = zend_objects_new(class_type); - object->handlers = &default_exception_handlers; - object_properties_init(object, class_type); if (EG(current_execute_data)) { zend_fetch_debug_backtrace(&trace, - skip_top_traces, + 0, EG(exception_ignore_args) ? DEBUG_BACKTRACE_IGNORE_ARGS : 0, 0); } else { array_init(&trace); @@ -282,18 +280,6 @@ static zend_object *zend_default_exception_new_ex(zend_class_entry *class_type, } /* }}} */ -static zend_object *zend_default_exception_new(zend_class_entry *class_type) /* {{{ */ -{ - return zend_default_exception_new_ex(class_type, 0); -} -/* }}} */ - -static zend_object *zend_error_exception_new(zend_class_entry *class_type) /* {{{ */ -{ - return zend_default_exception_new_ex(class_type, 0); -} -/* }}} */ - /* {{{ Clone the exception object */ ZEND_COLD ZEND_METHOD(Exception, __clone) { @@ -739,6 +725,11 @@ ZEND_METHOD(Exception, __toString) } /* }}} */ +static void zend_init_exception_class_entry(zend_class_entry *ce) { + ce->create_object = zend_default_exception_new; + ce->default_object_handlers = &default_exception_handlers; +} + void zend_register_default_exception(void) /* {{{ */ { zend_ce_throwable = register_class_Throwable(zend_ce_stringable); @@ -748,37 +739,37 @@ void zend_register_default_exception(void) /* {{{ */ default_exception_handlers.clone_obj = NULL; zend_ce_exception = register_class_Exception(zend_ce_throwable); - zend_ce_exception->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_exception); zend_ce_error_exception = register_class_ErrorException(zend_ce_exception); - zend_ce_error_exception->create_object = zend_error_exception_new; + zend_init_exception_class_entry(zend_ce_error_exception); zend_ce_error = register_class_Error(zend_ce_throwable); - zend_ce_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_error); zend_ce_compile_error = register_class_CompileError(zend_ce_error); - zend_ce_compile_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_compile_error); zend_ce_parse_error = register_class_ParseError(zend_ce_compile_error); - zend_ce_parse_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_parse_error); zend_ce_type_error = register_class_TypeError(zend_ce_error); - zend_ce_type_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_type_error); zend_ce_argument_count_error = register_class_ArgumentCountError(zend_ce_type_error); - zend_ce_argument_count_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_argument_count_error); zend_ce_value_error = register_class_ValueError(zend_ce_error); - zend_ce_value_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_value_error); zend_ce_arithmetic_error = register_class_ArithmeticError(zend_ce_error); - zend_ce_arithmetic_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_arithmetic_error); zend_ce_division_by_zero_error = register_class_DivisionByZeroError(zend_ce_arithmetic_error); - zend_ce_division_by_zero_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_division_by_zero_error); zend_ce_unhandled_match_error = register_class_UnhandledMatchError(zend_ce_error); - zend_ce_unhandled_match_error->create_object = zend_default_exception_new; + zend_init_exception_class_entry(zend_ce_unhandled_match_error); INIT_CLASS_ENTRY(zend_ce_unwind_exit, "UnwindExit", NULL); diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 45cf790bfa818..785626adfe7ac 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -144,6 +144,7 @@ ZEND_API const zend_internal_function zend_pass_function = { 0, /* required_num_args */ (zend_internal_arg_info *) zend_pass_function_arg_info + 1, /* arg_info */ NULL, /* attributes */ + 0, /* T */ NULL, /* run_time_cache */ ZEND_FN(pass), /* handler */ NULL, /* module */ diff --git a/Zend/zend_execute.h b/Zend/zend_execute.h index b43f038e4928c..d0da5ebf15afc 100644 --- a/Zend/zend_execute.h +++ b/Zend/zend_execute.h @@ -245,10 +245,10 @@ static zend_always_inline zend_execute_data *zend_vm_stack_push_call_frame_ex(ui static zend_always_inline uint32_t zend_vm_calc_used_stack(uint32_t num_args, zend_function *func) { - uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args; + uint32_t used_stack = ZEND_CALL_FRAME_SLOT + num_args + func->common.T; if (EXPECTED(ZEND_USER_CODE(func->type))) { - used_stack += func->op_array.last_var + func->op_array.T - MIN(func->op_array.num_args, num_args); + used_stack += func->op_array.last_var - MIN(func->op_array.num_args, num_args); } return used_stack * sizeof(zval); } diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index a46959373ad7d..3e19c0cfa8ee9 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -588,7 +588,7 @@ ZEND_API const char *get_active_function_arg_name(uint32_t arg_num) /* {{{ */ ZEND_API const char *get_function_arg_name(const zend_function *func, uint32_t arg_num) /* {{{ */ { - if (!func || func->common.num_args < arg_num) { + if (!func || arg_num == 0 || func->common.num_args < arg_num) { return NULL; } diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h index c32ed5de1adad..14ba9054d9b6a 100644 --- a/Zend/zend_extensions.h +++ b/Zend/zend_extensions.h @@ -44,7 +44,7 @@ You can use the following macro to check the extension API version for compatibi /* The first number is the engine version and the rest is the date (YYYYMMDD). * This way engine 2/3 API no. is always greater than engine 1 API no.. */ -#define ZEND_EXTENSION_API_NO 420210903 +#define ZEND_EXTENSION_API_NO 420220830 typedef struct _zend_extension_version_info { int zend_extension_api_no; diff --git a/Zend/zend_fibers.c b/Zend/zend_fibers.c index 80a70d87f6f28..2df1f0917b32e 100644 --- a/Zend/zend_fibers.c +++ b/Zend/zend_fibers.c @@ -360,6 +360,10 @@ ZEND_API void zend_fiber_destroy_context(zend_fiber_context *context) { zend_observer_fiber_destroy_notify(context); + if (context->cleanup) { + context->cleanup(context); + } + zend_fiber_stack_free(context->stack); } @@ -441,6 +445,19 @@ ZEND_API void zend_fiber_switch_context(zend_fiber_transfer *transfer) } } +static void zend_fiber_cleanup(zend_fiber_context *context) +{ + zend_fiber *fiber = zend_fiber_from_context(context); + + zend_vm_stack current_stack = EG(vm_stack); + EG(vm_stack) = fiber->vm_stack; + zend_vm_stack_destroy(); + EG(vm_stack) = current_stack; + fiber->execute_data = NULL; + fiber->stack_bottom = NULL; + fiber->caller = NULL; +} + static ZEND_STACK_ALIGNED void zend_fiber_execute(zend_fiber_transfer *transfer) { ZEND_ASSERT(Z_TYPE(transfer->value) == IS_NULL && "Initial transfer value to fiber context must be NULL"); @@ -501,12 +518,10 @@ static ZEND_STACK_ALIGNED void zend_fiber_execute(zend_fiber_transfer *transfer) transfer->flags = ZEND_FIBER_TRANSFER_FLAG_BAILOUT; } zend_end_try(); - transfer->context = fiber->caller; + fiber->context.cleanup = &zend_fiber_cleanup; + fiber->vm_stack = EG(vm_stack); - zend_vm_stack_destroy(); - fiber->execute_data = NULL; - fiber->stack_bottom = NULL; - fiber->caller = NULL; + transfer->context = fiber->caller; } /* Handles forwarding of result / error from a transfer into the running fiber. */ @@ -574,12 +589,9 @@ static zend_always_inline zend_fiber_transfer zend_fiber_suspend(zend_fiber *fib static zend_object *zend_fiber_object_create(zend_class_entry *ce) { zend_fiber *fiber = emalloc(sizeof(zend_fiber)); - memset(fiber, 0, sizeof(zend_fiber)); zend_object_std_init(&fiber->std, ce); - fiber->std.handlers = &zend_fiber_handlers; - return &fiber->std; } @@ -888,6 +900,7 @@ void zend_register_fiber_ce(void) { zend_ce_fiber = register_class_Fiber(); zend_ce_fiber->create_object = zend_fiber_object_create; + zend_ce_fiber->default_object_handlers = &zend_fiber_handlers; zend_fiber_handlers = std_object_handlers; zend_fiber_handlers.dtor_obj = zend_fiber_object_destroy; diff --git a/Zend/zend_fibers.h b/Zend/zend_fibers.h index 39dc0916debc7..2673e7814b093 100644 --- a/Zend/zend_fibers.h +++ b/Zend/zend_fibers.h @@ -71,6 +71,7 @@ typedef struct _zend_fiber_transfer { /* Coroutine functions must populate the given transfer with a new context * and (optional) data before they return. */ typedef void (*zend_fiber_coroutine)(zend_fiber_transfer *transfer); +typedef void (*zend_fiber_clean)(zend_fiber_context *context); struct _zend_fiber_context { /* Pointer to boost.context or ucontext_t data. */ @@ -82,12 +83,18 @@ struct _zend_fiber_context { /* Entrypoint function of the fiber. */ zend_fiber_coroutine function; + /* Cleanup function for fiber. */ + zend_fiber_clean cleanup; + /* Assigned C stack. */ zend_fiber_stack *stack; /* Fiber status. */ zend_fiber_status status; + /* Observer state */ + zend_execute_data *top_observed_frame; + /* Reserved for extensions */ void *reserved[ZEND_MAX_RESERVED_RESOURCES]; }; @@ -118,6 +125,9 @@ struct _zend_fiber { /* Frame on the bottom of the fiber vm stack. */ zend_execute_data *stack_bottom; + /* Active fiber vm stack. */ + zend_vm_stack vm_stack; + /* Storage for fiber return value. */ zval result; }; diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index 3319b7aa34e64..766e1ffea9a61 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -1469,12 +1469,13 @@ static void zend_gc_root_tmpvars(void); ZEND_API int zend_gc_collect_cycles(void) { - int count = 0; + int total_count = 0; bool should_rerun_gc = 0; bool did_rerun_gc = 0; rerun_gc: if (GC_G(num_roots)) { + int count; gc_root_buffer *current, *last; zend_refcounted *p; uint32_t gc_flags = 0; @@ -1652,6 +1653,7 @@ ZEND_API int zend_gc_collect_cycles(void) GC_TRACE("Collection finished"); GC_G(collected) += count; + total_count += count; GC_G(gc_active) = 0; } @@ -1668,7 +1670,7 @@ ZEND_API int zend_gc_collect_cycles(void) finish: zend_get_gc_buffer_release(); zend_gc_root_tmpvars(); - return count; + return total_count; } ZEND_API void zend_gc_get_status(zend_gc_status *status) diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index 99c888ee09e93..0d3c74b35bbc8 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -404,9 +404,7 @@ static HashTable *zend_generator_get_gc(zend_object *object, zval **table, int * static zend_object *zend_generator_create(zend_class_entry *class_type) /* {{{ */ { - zend_generator *generator; - - generator = emalloc(sizeof(zend_generator)); + zend_generator *generator = emalloc(sizeof(zend_generator)); memset(generator, 0, sizeof(zend_generator)); /* The key will be incremented on first use, so it'll start at 0 */ @@ -421,8 +419,6 @@ static zend_object *zend_generator_create(zend_class_entry *class_type) /* {{{ * generator->node.ptr.root = NULL; zend_object_std_init(&generator->std, class_type); - generator->std.handlers = &zend_generator_handlers; - return (zend_object*)generator; } /* }}} */ @@ -1132,6 +1128,7 @@ void zend_register_generator_ce(void) /* {{{ */ zend_ce_generator->create_object = zend_generator_create; /* get_iterator has to be assigned *after* implementing the interface */ zend_ce_generator->get_iterator = zend_generator_get_iterator; + zend_ce_generator->default_object_handlers = &zend_generator_handlers; memcpy(&zend_generator_handlers, &std_object_handlers, sizeof(zend_object_handlers)); zend_generator_handlers.free_obj = zend_generator_free_storage; diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index ffdb0e0385cd4..aa770141cd24d 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -22,7 +22,7 @@ #include "zend_globals.h" #include "zend_variables.h" -#if defined(__aarch64__) +#if defined(__aarch64__) || defined(_M_ARM64) # include #endif @@ -183,7 +183,7 @@ static zend_always_inline void zend_hash_real_init_mixed_ex(HashTable *ht) _mm_storeu_si128((__m128i*)&HT_HASH_EX(data, 8), xmm0); _mm_storeu_si128((__m128i*)&HT_HASH_EX(data, 12), xmm0); } while (0); -#elif defined(__aarch64__) +#elif defined(__aarch64__) || defined(_M_ARM64) do { int32x4_t t = vdupq_n_s32(-1); vst1q_s32((int32_t*)&HT_HASH_EX(data, 0), t); @@ -2716,7 +2716,7 @@ ZEND_API zend_result ZEND_FASTCALL zend_hash_move_backwards_ex(HashTable *ht, Ha /* This function should be made binary safe */ -ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, HashPosition *pos) +ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, const HashPosition *pos) { uint32_t idx; Bucket *p; @@ -2740,7 +2740,7 @@ ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zen return HASH_KEY_NON_EXISTENT; } -ZEND_API void ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos) +ZEND_API void ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, const HashPosition *pos) { uint32_t idx; Bucket *p; diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index 76898087e27ac..5306fe34c79b4 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -22,6 +22,7 @@ #define ZEND_HASH_H #include "zend.h" +#include "zend_sort.h" #define HASH_KEY_IS_STRING 1 #define HASH_KEY_IS_LONG 2 @@ -244,35 +245,45 @@ static zend_always_inline bool zend_hash_index_exists(const HashTable *ht, zend_ /* traversing */ ZEND_API HashPosition ZEND_FASTCALL zend_hash_get_current_pos(const HashTable *ht); -#define zend_hash_has_more_elements_ex(ht, pos) \ - (zend_hash_get_current_key_type_ex(ht, pos) == HASH_KEY_NON_EXISTENT ? FAILURE : SUCCESS) ZEND_API zend_result ZEND_FASTCALL zend_hash_move_forward_ex(HashTable *ht, HashPosition *pos); ZEND_API zend_result ZEND_FASTCALL zend_hash_move_backwards_ex(HashTable *ht, HashPosition *pos); -ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, HashPosition *pos); -ZEND_API void ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos); +ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string **str_index, zend_ulong *num_index, const HashPosition *pos); +ZEND_API void ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, const HashPosition *pos); ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_type_ex(HashTable *ht, HashPosition *pos); ZEND_API zval* ZEND_FASTCALL zend_hash_get_current_data_ex(HashTable *ht, HashPosition *pos); ZEND_API void ZEND_FASTCALL zend_hash_internal_pointer_reset_ex(HashTable *ht, HashPosition *pos); ZEND_API void ZEND_FASTCALL zend_hash_internal_pointer_end_ex(HashTable *ht, HashPosition *pos); -#define zend_hash_has_more_elements(ht) \ - zend_hash_has_more_elements_ex(ht, &(ht)->nInternalPointer) -#define zend_hash_move_forward(ht) \ - zend_hash_move_forward_ex(ht, &(ht)->nInternalPointer) -#define zend_hash_move_backwards(ht) \ - zend_hash_move_backwards_ex(ht, &(ht)->nInternalPointer) -#define zend_hash_get_current_key(ht, str_index, num_index) \ - zend_hash_get_current_key_ex(ht, str_index, num_index, &(ht)->nInternalPointer) -#define zend_hash_get_current_key_zval(ht, key) \ - zend_hash_get_current_key_zval_ex(ht, key, &(ht)->nInternalPointer) -#define zend_hash_get_current_key_type(ht) \ - zend_hash_get_current_key_type_ex(ht, &(ht)->nInternalPointer) -#define zend_hash_get_current_data(ht) \ - zend_hash_get_current_data_ex(ht, &(ht)->nInternalPointer) -#define zend_hash_internal_pointer_reset(ht) \ - zend_hash_internal_pointer_reset_ex(ht, &(ht)->nInternalPointer) -#define zend_hash_internal_pointer_end(ht) \ - zend_hash_internal_pointer_end_ex(ht, &(ht)->nInternalPointer) +static zend_always_inline zend_result zend_hash_has_more_elements_ex(HashTable *ht, HashPosition *pos) { + return (zend_hash_get_current_key_type_ex(ht, pos) == HASH_KEY_NON_EXISTENT ? FAILURE : SUCCESS); +} +static zend_always_inline zend_result zend_hash_has_more_elements(HashTable *ht) { + return zend_hash_has_more_elements_ex(ht, &ht->nInternalPointer); +} +static zend_always_inline zend_result zend_hash_move_forward(HashTable *ht) { + return zend_hash_move_forward_ex(ht, &ht->nInternalPointer); +} +static zend_always_inline zend_result zend_hash_move_backwards(HashTable *ht) { + return zend_hash_move_backwards_ex(ht, &ht->nInternalPointer); +} +static zend_always_inline int zend_hash_get_current_key(const HashTable *ht, zend_string **str_index, zend_ulong *num_index) { + return zend_hash_get_current_key_ex(ht, str_index, num_index, &ht->nInternalPointer); +} +static zend_always_inline void zend_hash_get_current_key_zval(const HashTable *ht, zval *key) { + zend_hash_get_current_key_zval_ex(ht, key, &ht->nInternalPointer); +} +static zend_always_inline int zend_hash_get_current_key_type(HashTable *ht) { + return zend_hash_get_current_key_type_ex(ht, &ht->nInternalPointer); +} +static zend_always_inline zval* zend_hash_get_current_data(HashTable *ht) { + return zend_hash_get_current_data_ex(ht, &ht->nInternalPointer); +} +static zend_always_inline void zend_hash_internal_pointer_reset(HashTable *ht) { + zend_hash_internal_pointer_reset_ex(ht, &ht->nInternalPointer); +} +static zend_always_inline void zend_hash_internal_pointer_end(HashTable *ht) { + zend_hash_internal_pointer_end_ex(ht, &ht->nInternalPointer); +} /* Copying, merging and sorting */ ZEND_API void ZEND_FASTCALL zend_hash_copy(HashTable *target, HashTable *source, copy_ctor_func_t pCopyConstructor); @@ -287,14 +298,17 @@ ZEND_API int zend_hash_compare(HashTable *ht1, HashTable *ht2, compare_func_t ZEND_API void ZEND_FASTCALL zend_hash_sort_ex(HashTable *ht, sort_func_t sort_func, bucket_compare_func_t compare_func, bool renumber); ZEND_API zval* ZEND_FASTCALL zend_hash_minmax(const HashTable *ht, compare_func_t compar, uint32_t flag); -#define zend_hash_sort(ht, compare_func, renumber) \ - zend_hash_sort_ex(ht, zend_sort, compare_func, renumber) +static zend_always_inline void ZEND_FASTCALL zend_hash_sort(HashTable *ht, bucket_compare_func_t compare_func, zend_bool renumber) { + zend_hash_sort_ex(ht, zend_sort, compare_func, renumber); +} -#define zend_hash_num_elements(ht) \ - (ht)->nNumOfElements +static zend_always_inline uint32_t zend_hash_num_elements(const HashTable *ht) { + return ht->nNumOfElements; +} -#define zend_hash_next_free_element(ht) \ - (ht)->nNextFreeElement +static zend_always_inline zend_long zend_hash_next_free_element(const HashTable *ht) { + return ht->nNextFreeElement; +} ZEND_API void ZEND_FASTCALL zend_hash_rehash(HashTable *ht); diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index b0008e889b5ac..0dbdaa2b35ec4 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -29,6 +29,7 @@ #include "zend_enum.h" #include "zend_attributes.h" #include "zend_constants.h" +#include "zend_observer.h" ZEND_API zend_class_entry* (*zend_inheritance_cache_get)(zend_class_entry *ce, zend_class_entry *parent, zend_class_entry **traits_and_interfaces) = NULL; ZEND_API zend_class_entry* (*zend_inheritance_cache_add)(zend_class_entry *ce, zend_class_entry *proto, zend_class_entry *parent, zend_class_entry **traits_and_interfaces, HashTable *dependencies) = NULL; @@ -1471,6 +1472,7 @@ ZEND_API void zend_do_inheritance_ex(zend_class_entry *ce, zend_class_entry *par zend_string_release_ex(ce->parent_name, 0); } ce->parent = parent_ce; + ce->default_object_handlers = parent_ce->default_object_handlers; ce->ce_flags |= ZEND_ACC_RESOLVED_PARENT; /* Inherit properties */ @@ -1630,6 +1632,36 @@ ZEND_API void zend_do_inheritance_ex(zend_class_entry *ce, zend_class_entry *par } /* }}} */ +static zend_always_inline bool check_trait_property_or_constant_value_compatibility(zend_class_entry *ce, zval *op1, zval *op2) /* {{{ */ +{ + bool is_compatible; + zval op1_tmp, op2_tmp; + + /* if any of the values is a constant, we try to resolve it */ + if (UNEXPECTED(Z_TYPE_P(op1) == IS_CONSTANT_AST)) { + ZVAL_COPY_OR_DUP(&op1_tmp, op1); + zval_update_constant_ex(&op1_tmp, ce); + op1 = &op1_tmp; + } + if (UNEXPECTED(Z_TYPE_P(op2) == IS_CONSTANT_AST)) { + ZVAL_COPY_OR_DUP(&op2_tmp, op2); + zval_update_constant_ex(&op2_tmp, ce); + op2 = &op2_tmp; + } + + is_compatible = fast_is_identical_function(op1, op2); + + if (op1 == &op1_tmp) { + zval_ptr_dtor_nogc(&op1_tmp); + } + if (op2 == &op2_tmp) { + zval_ptr_dtor_nogc(&op2_tmp); + } + + return is_compatible; +} +/* }}} */ + static bool do_inherit_constant_check( zend_class_entry *ce, zend_class_constant *parent_constant, zend_string *name ) { @@ -2174,7 +2206,103 @@ static void zend_do_traits_method_binding(zend_class_entry *ce, zend_class_entry } /* }}} */ -static zend_class_entry* find_first_definition(zend_class_entry *ce, zend_class_entry **traits, size_t current_trait, zend_string *prop_name, zend_class_entry *colliding_ce) /* {{{ */ +static zend_class_entry* find_first_constant_definition(zend_class_entry *ce, zend_class_entry **traits, size_t current_trait, zend_string *constant_name, zend_class_entry *colliding_ce) /* {{{ */ +{ + /* This function is used to show the place of the existing conflicting + * definition in error messages when conflicts occur. Since trait constants + * are flattened into the constants table of the composing class, and thus + * we lose information about which constant was defined in which trait, a + * process like this is needed to find the location of the first definition + * of the constant from traits. + */ + size_t i; + + if (colliding_ce == ce) { + for (i = 0; i < current_trait; i++) { + if (traits[i] + && zend_hash_exists(&traits[i]->constants_table, constant_name)) { + return traits[i]; + } + } + } + /* Traits don't have it, then the composing class (or trait) itself has it. */ + return colliding_ce; +} +/* }}} */ + +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) /* {{{ */ +{ + uint32_t flags_mask = ZEND_ACC_PPP_MASK | ZEND_ACC_FINAL; + + zval *zv = zend_hash_find_known_hash(&ce->constants_table, name); + if (zv == NULL) { + /* No existing constant of the same name, so this one can be added */ + return true; + } + + zend_class_constant *existing_constant = Z_PTR_P(zv); + + if ((ZEND_CLASS_CONST_FLAGS(trait_constant) & flags_mask) != (ZEND_CLASS_CONST_FLAGS(existing_constant) & flags_mask) || + !check_trait_property_or_constant_value_compatibility(ce, &trait_constant->value, &existing_constant->value)) { + /* There is an existing constant of the same name, and it conflicts with the new one, so let's throw a fatal error */ + zend_error_noreturn(E_COMPILE_ERROR, + "%s and %s define the same constant (%s) in the composition of %s. However, the definition differs and is considered incompatible. Class was composed", + ZSTR_VAL(find_first_constant_definition(ce, traits, current_trait, name, existing_constant->ce)->name), + ZSTR_VAL(trait_constant->ce->name), + ZSTR_VAL(name), + ZSTR_VAL(ce->name)); + } + + /* There is an existing constant which is compatible with the new one, so no need to add it */ + return false; +} +/* }}} */ + +static void zend_do_traits_constant_binding(zend_class_entry *ce, zend_class_entry **traits) /* {{{ */ +{ + size_t i; + + for (i = 0; i < ce->num_traits; i++) { + zend_string *constant_name; + zend_class_constant *constant; + + if (!traits[i]) { + continue; + } + + ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(&traits[i]->constants_table, constant_name, constant) { + if (do_trait_constant_check(ce, constant, constant_name, traits, i)) { + zend_class_constant *ct = NULL; + + ct = zend_arena_alloc(&CG(arena),sizeof(zend_class_constant)); + memcpy(ct, constant, sizeof(zend_class_constant)); + constant = ct; + + if (Z_TYPE(constant->value) == IS_CONSTANT_AST) { + ce->ce_flags &= ~ZEND_ACC_CONSTANTS_UPDATED; + ce->ce_flags |= ZEND_ACC_HAS_AST_CONSTANTS; + } + + /* Unlike interface implementations and class inheritances, + * access control of the trait constants is done by the scope + * of the composing class. So let's replace the ce here. + */ + constant->ce = ce; + + Z_TRY_ADDREF(constant->value); + constant->doc_comment = constant->doc_comment ? zend_string_copy(constant->doc_comment) : NULL; + if (constant->attributes && (!(GC_FLAGS(constant->attributes) & IS_ARRAY_IMMUTABLE))) { + GC_ADDREF(constant->attributes); + } + + zend_hash_update_ptr(&ce->constants_table, constant_name, constant); + } + } ZEND_HASH_FOREACH_END(); + } +} +/* }}} */ + +static zend_class_entry* find_first_property_definition(zend_class_entry *ce, zend_class_entry **traits, size_t current_trait, zend_string *prop_name, zend_class_entry *colliding_ce) /* {{{ */ { size_t i; @@ -2198,7 +2326,6 @@ static void zend_do_traits_property_binding(zend_class_entry *ce, zend_class_ent zend_property_info *colliding_prop; zend_property_info *new_prop; zend_string* prop_name; - bool not_compatible; zval* prop_value; zend_string *doc_comment; @@ -2220,15 +2347,14 @@ static void zend_do_traits_property_binding(zend_class_entry *ce, zend_class_ent zend_hash_del(&ce->properties_info, prop_name); flags |= ZEND_ACC_CHANGED; } else { + bool is_compatible = false; uint32_t flags_mask = ZEND_ACC_PPP_MASK | ZEND_ACC_STATIC | ZEND_ACC_READONLY; - not_compatible = 1; if ((colliding_prop->flags & flags_mask) == (flags & flags_mask) && property_types_compatible(property_info, colliding_prop) == INHERITANCE_SUCCESS ) { /* the flags are identical, thus, the properties may be compatible */ zval *op1, *op2; - zval op1_tmp, op2_tmp; if (flags & ZEND_ACC_STATIC) { op1 = &ce->default_static_members_table[colliding_prop->offset]; @@ -2239,33 +2365,13 @@ static void zend_do_traits_property_binding(zend_class_entry *ce, zend_class_ent op1 = &ce->default_properties_table[OBJ_PROP_TO_NUM(colliding_prop->offset)]; op2 = &traits[i]->default_properties_table[OBJ_PROP_TO_NUM(property_info->offset)]; } - - /* if any of the values is a constant, we try to resolve it */ - if (UNEXPECTED(Z_TYPE_P(op1) == IS_CONSTANT_AST)) { - ZVAL_COPY_OR_DUP(&op1_tmp, op1); - zval_update_constant_ex(&op1_tmp, ce); - op1 = &op1_tmp; - } - if (UNEXPECTED(Z_TYPE_P(op2) == IS_CONSTANT_AST)) { - ZVAL_COPY_OR_DUP(&op2_tmp, op2); - zval_update_constant_ex(&op2_tmp, ce); - op2 = &op2_tmp; - } - - not_compatible = fast_is_not_identical_function(op1, op2); - - if (op1 == &op1_tmp) { - zval_ptr_dtor_nogc(&op1_tmp); - } - if (op2 == &op2_tmp) { - zval_ptr_dtor_nogc(&op2_tmp); - } + is_compatible = check_trait_property_or_constant_value_compatibility(ce, op1, op2); } - if (not_compatible) { + if (!is_compatible) { zend_error_noreturn(E_COMPILE_ERROR, - "%s and %s define the same property ($%s) in the composition of %s. However, the definition differs and is considered incompatible. Class was composed", - ZSTR_VAL(find_first_definition(ce, traits, i, prop_name, colliding_prop->ce)->name), + "%s and %s define the same property ($%s) in the composition of %s. However, the definition differs and is considered incompatible. Class was composed", + ZSTR_VAL(find_first_property_definition(ce, traits, i, prop_name, colliding_prop->ce)->name), ZSTR_VAL(property_info->ce->name), ZSTR_VAL(prop_name), ZSTR_VAL(ce->name)); @@ -2274,6 +2380,15 @@ static void zend_do_traits_property_binding(zend_class_entry *ce, zend_class_ent } } + if ((ce->ce_flags & ZEND_ACC_READONLY_CLASS) && !(property_info->flags & ZEND_ACC_READONLY)) { + zend_error_noreturn(E_COMPILE_ERROR, + "Readonly class %s cannot use trait with a non-readonly property %s::$%s", + ZSTR_VAL(ce->name), + ZSTR_VAL(property_info->ce->name), + ZSTR_VAL(prop_name) + ); + } + /* property not found, so lets add it */ if (flags & ZEND_ACC_STATIC) { prop_value = &traits[i]->default_static_members_table[property_info->offset]; @@ -2322,7 +2437,8 @@ static void zend_do_bind_traits(zend_class_entry *ce, zend_class_entry **traits) efree(exclude_tables); } - /* then flatten the properties into it, to, mostly to notify developer about problems */ + /* then flatten the constants and properties into it, to, mostly to notify developer about problems */ + zend_do_traits_constant_binding(ce, traits); zend_do_traits_property_binding(ce, traits); } /* }}} */ @@ -3020,18 +3136,24 @@ static zend_always_inline bool register_early_bound_ce(zval *delayed_early_bindi if (EXPECTED(!(ce->ce_flags & ZEND_ACC_PRELOADED))) { if (zend_hash_set_bucket_key(EG(class_table), (Bucket *)delayed_early_binding, lcname) != NULL) { Z_CE_P(delayed_early_binding) = ce; + zend_observer_class_linked_notify(ce, lcname); return true; } } else { /* If preloading is used, don't replace the existing bucket, add a new one. */ if (zend_hash_add_ptr(EG(class_table), lcname, ce) != NULL) { + zend_observer_class_linked_notify(ce, lcname); return true; } } zend_error_noreturn(E_COMPILE_ERROR, "Cannot declare %s %s, because the name is already in use", zend_get_object_type(ce), ZSTR_VAL(ce->name)); return false; } - return zend_hash_add_ptr(CG(class_table), lcname, ce) != NULL; + if (zend_hash_add_ptr(CG(class_table), lcname, ce) != NULL) { + zend_observer_class_linked_notify(ce, lcname); + return true; + } + return false; } ZEND_API zend_class_entry *zend_try_early_bind(zend_class_entry *ce, zend_class_entry *parent_ce, zend_string *lcname, zval *delayed_early_binding) /* {{{ */ diff --git a/Zend/zend_inheritance.h b/Zend/zend_inheritance.h index ec943119f8b63..1ecd6017f1506 100644 --- a/Zend/zend_inheritance.h +++ b/Zend/zend_inheritance.h @@ -27,8 +27,9 @@ BEGIN_EXTERN_C() ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry *iface); ZEND_API void zend_do_inheritance_ex(zend_class_entry *ce, zend_class_entry *parent_ce, bool checked); -#define zend_do_inheritance(ce, parent_ce) \ - zend_do_inheritance_ex(ce, parent_ce, 0) +static zend_always_inline void zend_do_inheritance(zend_class_entry *ce, zend_class_entry *parent_ce) { + zend_do_inheritance_ex(ce, parent_ce, 0); +} ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string *lc_parent_name, zend_string *key); diff --git a/Zend/zend_ini.c b/Zend/zend_ini.c index ee42093c988b0..2086665e04fb3 100644 --- a/Zend/zend_ini.c +++ b/Zend/zend_ini.c @@ -876,3 +876,23 @@ ZEND_API ZEND_INI_MH(OnUpdateStringUnempty) /* {{{ */ return SUCCESS; } /* }}} */ + +ZEND_API ZEND_INI_MH(OnUpdateStr) /* {{{ */ +{ + zend_string **p = (zend_string **) ZEND_INI_GET_ADDR(); + *p = new_value; + return SUCCESS; +} +/* }}} */ + +ZEND_API ZEND_INI_MH(OnUpdateStrNotEmpty) /* {{{ */ +{ + if (new_value && ZSTR_LEN(new_value) == 0) { + return FAILURE; + } + + zend_string **p = (zend_string **) ZEND_INI_GET_ADDR(); + *p = new_value; + return SUCCESS; +} +/* }}} */ diff --git a/Zend/zend_ini.h b/Zend/zend_ini.h index a371b285764d6..56939fa9ea8cb 100644 --- a/Zend/zend_ini.h +++ b/Zend/zend_ini.h @@ -209,8 +209,12 @@ ZEND_API ZEND_INI_MH(OnUpdateBool); ZEND_API ZEND_INI_MH(OnUpdateLong); ZEND_API ZEND_INI_MH(OnUpdateLongGEZero); ZEND_API ZEND_INI_MH(OnUpdateReal); +/* char* versions */ ZEND_API ZEND_INI_MH(OnUpdateString); ZEND_API ZEND_INI_MH(OnUpdateStringUnempty); +/* zend_string* versions */ +ZEND_API ZEND_INI_MH(OnUpdateStr); +ZEND_API ZEND_INI_MH(OnUpdateStrNotEmpty); END_EXTERN_C() #define ZEND_INI_DISPLAY_ORIG 1 diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c index 1fa2493f17af5..ec14b1a99a03f 100644 --- a/Zend/zend_interfaces.c +++ b/Zend/zend_interfaces.c @@ -480,7 +480,6 @@ typedef struct { static zend_object *zend_internal_iterator_create(zend_class_entry *ce) { zend_internal_iterator *intern = emalloc(sizeof(zend_internal_iterator)); zend_object_std_init(&intern->std, ce); - intern->std.handlers = &zend_internal_iterator_handlers; intern->iter = NULL; intern->rewind_called = 0; return &intern->std; @@ -655,6 +654,7 @@ ZEND_API void zend_register_interfaces(void) zend_ce_internal_iterator = register_class_InternalIterator(zend_ce_iterator); zend_ce_internal_iterator->create_object = zend_internal_iterator_create; + zend_ce_internal_iterator->default_object_handlers = &zend_internal_iterator_handlers; memcpy(&zend_internal_iterator_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); diff --git a/Zend/zend_interfaces.h b/Zend/zend_interfaces.h index a8351ee9a7823..883e482f510c4 100644 --- a/Zend/zend_interfaces.h +++ b/Zend/zend_interfaces.h @@ -40,14 +40,23 @@ typedef struct _zend_user_iterator { ZEND_API zval* zend_call_method(zend_object *object, zend_class_entry *obj_ce, zend_function **fn_proxy, const char *function_name, size_t function_name_len, zval *retval, uint32_t param_count, zval* arg1, zval* arg2); -#define zend_call_method_with_0_params(obj, obj_ce, fn_proxy, function_name, retval) \ - zend_call_method(obj, obj_ce, fn_proxy, function_name, sizeof(function_name)-1, retval, 0, NULL, NULL) - -#define zend_call_method_with_1_params(obj, obj_ce, fn_proxy, function_name, retval, arg1) \ - zend_call_method(obj, obj_ce, fn_proxy, function_name, sizeof(function_name)-1, retval, 1, arg1, NULL) - -#define zend_call_method_with_2_params(obj, obj_ce, fn_proxy, function_name, retval, arg1, arg2) \ - zend_call_method(obj, obj_ce, fn_proxy, function_name, sizeof(function_name)-1, retval, 2, arg1, arg2) +static zend_always_inline zval* zend_call_method_with_0_params(zend_object *object, zend_class_entry *obj_ce, + zend_function **fn_proxy, const char *function_name, zval *retval) +{ + return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 0, NULL, NULL); +} + +static zend_always_inline zval* zend_call_method_with_1_params(zend_object *object, zend_class_entry *obj_ce, + zend_function **fn_proxy, const char *function_name, zval *retval, zval* arg1) +{ + return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 1, arg1, NULL); +} + +static zend_always_inline zval* zend_call_method_with_2_params(zend_object *object, zend_class_entry *obj_ce, + zend_function **fn_proxy, const char *function_name, zval *retval, zval* arg1, zval* arg2) +{ + return zend_call_method(object, obj_ce, fn_proxy, function_name, strlen(function_name), retval, 2, arg1, arg2); +} ZEND_API void zend_user_it_rewind(zend_object_iterator *_iter); ZEND_API zend_result zend_user_it_valid(zend_object_iterator *_iter); diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c index aa4391f2caa99..f67033b11161c 100644 --- a/Zend/zend_iterators.c +++ b/Zend/zend_iterators.c @@ -57,6 +57,7 @@ static const zend_object_handlers iterator_object_handlers = { ZEND_API void zend_register_iterator_wrapper(void) { INIT_CLASS_ENTRY(zend_iterator_class_entry, "__iterator_wrapper", NULL); + zend_iterator_class_entry.default_object_handlers = &iterator_object_handlers; } static void iter_wrapper_free(zend_object *object) @@ -83,7 +84,6 @@ static HashTable *iter_wrapper_get_gc(zend_object *object, zval **table, int *n) ZEND_API void zend_iterator_init(zend_object_iterator *iter) { zend_object_std_init(&iter->std, &zend_iterator_class_entry); - iter->std.handlers = &iterator_object_handlers; } ZEND_API void zend_iterator_dtor(zend_object_iterator *iter) diff --git a/Zend/zend_llist.h b/Zend/zend_llist.h index e9b5b1d1fb440..cce5ad5ce95a7 100644 --- a/Zend/zend_llist.h +++ b/Zend/zend_llist.h @@ -66,10 +66,25 @@ ZEND_API void *zend_llist_get_last_ex(zend_llist *l, zend_llist_position *pos); ZEND_API void *zend_llist_get_next_ex(zend_llist *l, zend_llist_position *pos); ZEND_API void *zend_llist_get_prev_ex(zend_llist *l, zend_llist_position *pos); -#define zend_llist_get_first(l) zend_llist_get_first_ex(l, NULL) -#define zend_llist_get_last(l) zend_llist_get_last_ex(l, NULL) -#define zend_llist_get_next(l) zend_llist_get_next_ex(l, NULL) -#define zend_llist_get_prev(l) zend_llist_get_prev_ex(l, NULL) +static zend_always_inline void *zend_llist_get_first(zend_llist *l) +{ + return zend_llist_get_first_ex(l, NULL); +} + +static zend_always_inline void *zend_llist_get_last(zend_llist *l) +{ + return zend_llist_get_last_ex(l, NULL); +} + +static zend_always_inline void *zend_llist_get_next(zend_llist *l) +{ + return zend_llist_get_next_ex(l, NULL); +} + +static zend_always_inline void *zend_llist_get_prev(zend_llist *l) +{ + return zend_llist_get_prev_ex(l, NULL); +} END_EXTERN_C() diff --git a/Zend/zend_modules.h b/Zend/zend_modules.h index fda01eedc5230..e1db8fdb59791 100644 --- a/Zend/zend_modules.h +++ b/Zend/zend_modules.h @@ -31,7 +31,7 @@ #define ZEND_MODULE_INFO_FUNC_ARGS zend_module_entry *zend_module #define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module -#define ZEND_MODULE_API_NO 20210903 +#define ZEND_MODULE_API_NO 20220830 #ifdef ZTS #define USING_ZTS 1 #else diff --git a/Zend/zend_multiply.h b/Zend/zend_multiply.h index c6cd472a237b1..a99e858bd7798 100644 --- a/Zend/zend_multiply.h +++ b/Zend/zend_multiply.h @@ -94,6 +94,19 @@ (dval) = (double)(a) * (double)(b); \ } \ } while (0) +# elif defined(_M_ARM64) +# pragma intrinsic(__mulh) +# define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ + __int64 __high = __mulh((a), (b)); \ + __int64 __low = (a) * (b); \ + if ((__low >> 63I64) == __high) { \ + (usedval) = 0; \ + (lval) = __low; \ + } else { \ + (usedval) = 1; \ + (dval) = (double)(a) * (double)(b); \ + } \ +} while (0) # else # define ZEND_SIGNED_MULTIPLY_LONG(a, b, lval, dval, usedval) do { \ zend_long __lres = (a) * (b); \ diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c index b09ce3b990d5c..df76fa0bb8dc3 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -31,6 +31,7 @@ static zend_always_inline void _zend_object_std_init(zend_object *object, zend_c GC_SET_REFCOUNT(object, 1); GC_TYPE_INFO(object) = GC_OBJECT; object->ce = ce; + object->handlers = ce->default_object_handlers; object->properties = NULL; zend_objects_store_put(object); if (UNEXPECTED(ce->ce_flags & ZEND_ACC_USE_GUARDS)) { @@ -186,7 +187,6 @@ ZEND_API zend_object* ZEND_FASTCALL zend_objects_new(zend_class_entry *ce) zend_object *object = emalloc(sizeof(zend_object) + zend_object_properties_size(ce)); _zend_object_std_init(object, ce); - object->handlers = &std_object_handlers; return object; } diff --git a/Zend/zend_observer.c b/Zend/zend_observer.c index 8151ef74fab24..f699ea714d83b 100644 --- a/Zend/zend_observer.c +++ b/Zend/zend_observer.c @@ -32,14 +32,18 @@ (ZEND_MAP_PTR(function->common.run_time_cache) && !(function->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) zend_llist zend_observers_fcall_list; +zend_llist zend_observer_function_declared_callbacks; +zend_llist zend_observer_class_linked_callbacks; zend_llist zend_observer_error_callbacks; zend_llist zend_observer_fiber_init; zend_llist zend_observer_fiber_switch; zend_llist zend_observer_fiber_destroy; int zend_observer_fcall_op_array_extension; +bool zend_observer_errors_observed; +bool zend_observer_function_declared_observed; +bool zend_observer_class_linked_observed; -ZEND_TLS zend_execute_data *first_observed_frame; ZEND_TLS zend_execute_data *current_observed_frame; // Call during minit/startup ONLY @@ -52,6 +56,8 @@ ZEND_API void zend_observer_fcall_register(zend_observer_fcall_init init) ZEND_API void zend_observer_startup(void) { zend_llist_init(&zend_observers_fcall_list, sizeof(zend_observer_fcall_init), NULL, 1); + zend_llist_init(&zend_observer_function_declared_callbacks, sizeof(zend_observer_function_declared_cb), NULL, 1); + zend_llist_init(&zend_observer_class_linked_callbacks, sizeof(zend_observer_class_linked_cb), NULL, 1); zend_llist_init(&zend_observer_error_callbacks, sizeof(zend_observer_error_cb), NULL, 1); zend_llist_init(&zend_observer_fiber_init, sizeof(zend_observer_fiber_init_handler), NULL, 1); zend_llist_init(&zend_observer_fiber_switch, sizeof(zend_observer_fiber_switch_handler), NULL, 1); @@ -78,18 +84,31 @@ ZEND_API void zend_observer_post_startup(void) ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op)); ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op) + 1); ZEND_VM_SET_OPCODE_HANDLER(EG(exception_op) + 2); + + // Add an observer temporary to store previous observed frames + zend_internal_function *zif; + ZEND_HASH_FOREACH_PTR(CG(function_table), zif) { + ++zif->T; + } ZEND_HASH_FOREACH_END(); + zend_class_entry *ce; + ZEND_HASH_MAP_FOREACH_PTR(CG(class_table), ce) { + ZEND_HASH_MAP_FOREACH_PTR(&ce->function_table, zif) { + ++zif->T; + } ZEND_HASH_FOREACH_END(); + } ZEND_HASH_FOREACH_END(); } } ZEND_API void zend_observer_activate(void) { - first_observed_frame = NULL; current_observed_frame = NULL; } ZEND_API void zend_observer_shutdown(void) { zend_llist_destroy(&zend_observers_fcall_list); + zend_llist_destroy(&zend_observer_function_declared_callbacks); + zend_llist_destroy(&zend_observer_class_linked_callbacks); zend_llist_destroy(&zend_observer_error_callbacks); zend_llist_destroy(&zend_observer_fiber_init); zend_llist_destroy(&zend_observer_fiber_switch); @@ -187,6 +206,11 @@ ZEND_API bool zend_observer_remove_end_handler(zend_function *function, zend_obs return zend_observer_remove_handler((void **)&ZEND_OBSERVER_DATA(function) + registered_observers, end); } +static inline zend_execute_data **prev_observed_frame(zend_execute_data *execute_data) { + zend_function *func = EX(func); + return (zend_execute_data **)&Z_PTR_P(EX_VAR_NUM((ZEND_USER_CODE(func->type) ? func->op_array.last_var : ZEND_CALL_NUM_ARGS(execute_data)) + func->common.T - 1)); +} + static void ZEND_FASTCALL _zend_observe_fcall_begin(zend_execute_data *execute_data) { if (!ZEND_OBSERVER_ENABLED) { @@ -208,9 +232,7 @@ static void ZEND_FASTCALL _zend_observe_fcall_begin(zend_execute_data *execute_d zend_observer_fcall_end_handler *end_handler = (zend_observer_fcall_end_handler *)possible_handlers_end; if (*end_handler != ZEND_OBSERVER_NOT_OBSERVED) { - if (first_observed_frame == NULL) { - first_observed_frame = execute_data; - } + *prev_observed_frame(execute_data) = current_observed_frame; current_observed_frame = execute_data; } @@ -236,29 +258,9 @@ ZEND_API void ZEND_FASTCALL zend_observer_fcall_begin(zend_execute_data *execute } } -static inline bool zend_observer_is_skipped_frame(zend_execute_data *execute_data) { +static inline void call_end_observers(zend_execute_data *execute_data, zval *return_value) { zend_function *func = execute_data->func; - if (!func || !ZEND_OBSERVABLE_FN(func)) { - return true; - } - - zend_observer_fcall_end_handler end_handler = (&ZEND_OBSERVER_DATA(func))[zend_observers_fcall_list.count]; - if (end_handler == NULL || end_handler == ZEND_OBSERVER_NOT_OBSERVED) { - return true; - } - - return false; -} - -ZEND_API void ZEND_FASTCALL zend_observer_fcall_end(zend_execute_data *execute_data, zval *return_value) -{ - zend_function *func = execute_data->func; - - if (!ZEND_OBSERVER_ENABLED || !ZEND_OBSERVABLE_FN(func)) { - return; - } - zend_observer_fcall_end_handler *handler = (zend_observer_fcall_end_handler *)&ZEND_OBSERVER_DATA(func) + zend_observers_fcall_list.count; // TODO: Fix exceptions from generators // ZEND_ASSERT(fcall_data); @@ -270,36 +272,72 @@ ZEND_API void ZEND_FASTCALL zend_observer_fcall_end(zend_execute_data *execute_d do { (*handler)(execute_data, return_value); } while (++handler != possible_handlers_end && *handler != NULL); +} - if (first_observed_frame == execute_data) { - first_observed_frame = NULL; - current_observed_frame = NULL; - } else { - zend_execute_data *ex = execute_data->prev_execute_data; - while (ex && zend_observer_is_skipped_frame(ex)) { - ex = ex->prev_execute_data; - } - current_observed_frame = ex; +ZEND_API void ZEND_FASTCALL zend_observer_fcall_end(zend_execute_data *execute_data, zval *return_value) +{ + if (execute_data != current_observed_frame) { + return; } + call_end_observers(execute_data, return_value); + current_observed_frame = *prev_observed_frame(execute_data); } ZEND_API void zend_observer_fcall_end_all(void) { - zend_execute_data *ex = current_observed_frame; - while (ex != NULL) { - if (ex->func) { - zend_observer_fcall_end(ex, NULL); - } - ex = ex->prev_execute_data; + zend_execute_data *execute_data = current_observed_frame, *original_execute_data = EG(current_execute_data); + current_observed_frame = NULL; + while (execute_data) { + EG(current_execute_data) = execute_data; + call_end_observers(execute_data, NULL); + execute_data = *prev_observed_frame(execute_data); + } + EG(current_execute_data) = original_execute_data; +} + +ZEND_API void zend_observer_function_declared_register(zend_observer_function_declared_cb cb) +{ + zend_observer_function_declared_observed = true; + zend_llist_add_element(&zend_observer_function_declared_callbacks, &cb); +} + +ZEND_API void ZEND_FASTCALL _zend_observer_function_declared_notify(zend_op_array *op_array, zend_string *name) +{ + if (CG(compiler_options) & ZEND_COMPILE_IGNORE_OBSERVER) { + return; + } + + for (zend_llist_element *element = zend_observer_function_declared_callbacks.head; element; element = element->next) { + zend_observer_function_declared_cb callback = *(zend_observer_function_declared_cb *) (element->data); + callback(op_array, name); + } +} + +ZEND_API void zend_observer_class_linked_register(zend_observer_class_linked_cb cb) +{ + zend_observer_class_linked_observed = true; + zend_llist_add_element(&zend_observer_class_linked_callbacks, &cb); +} + +ZEND_API void ZEND_FASTCALL _zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name) +{ + if (CG(compiler_options) & ZEND_COMPILE_IGNORE_OBSERVER) { + return; + } + + for (zend_llist_element *element = zend_observer_class_linked_callbacks.head; element; element = element->next) { + zend_observer_class_linked_cb callback = *(zend_observer_class_linked_cb *) (element->data); + callback(ce, name); } } ZEND_API void zend_observer_error_register(zend_observer_error_cb cb) { + zend_observer_errors_observed = true; zend_llist_add_element(&zend_observer_error_callbacks, &cb); } -void zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message) +ZEND_API void _zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message) { for (zend_llist_element *element = zend_observer_error_callbacks.head; element; element = element->next) { zend_observer_error_cb callback = *(zend_observer_error_cb *) (element->data); @@ -327,6 +365,8 @@ ZEND_API void ZEND_FASTCALL zend_observer_fiber_init_notify(zend_fiber_context * zend_llist_element *element; zend_observer_fiber_init_handler callback; + initializing->top_observed_frame = NULL; + for (element = zend_observer_fiber_init.head; element; element = element->next) { callback = *(zend_observer_fiber_init_handler *) element->data; callback(initializing); @@ -338,10 +378,17 @@ ZEND_API void ZEND_FASTCALL zend_observer_fiber_switch_notify(zend_fiber_context zend_llist_element *element; zend_observer_fiber_switch_handler callback; + if (from->status == ZEND_FIBER_STATUS_DEAD) { + zend_observer_fcall_end_all(); // fiber is either finished (call will do nothing) or has bailed out + } + for (element = zend_observer_fiber_switch.head; element; element = element->next) { callback = *(zend_observer_fiber_switch_handler *) element->data; callback(from, to); } + + from->top_observed_frame = current_observed_frame; + current_observed_frame = to->top_observed_frame; } ZEND_API void ZEND_FASTCALL zend_observer_fiber_destroy_notify(zend_fiber_context *destroying) diff --git a/Zend/zend_observer.h b/Zend/zend_observer.h index ebd5c0ce62a01..fc4d9a62c8905 100644 --- a/Zend/zend_observer.h +++ b/Zend/zend_observer.h @@ -27,6 +27,9 @@ BEGIN_EXTERN_C() extern ZEND_API int zend_observer_fcall_op_array_extension; +extern ZEND_API bool zend_observer_errors_observed; +extern ZEND_API bool zend_observer_function_declared_observed; +extern ZEND_API bool zend_observer_class_linked_observed; #define ZEND_OBSERVER_ENABLED (zend_observer_fcall_op_array_extension != -1) @@ -80,10 +83,35 @@ ZEND_API void ZEND_FASTCALL zend_observer_fcall_end( ZEND_API void zend_observer_fcall_end_all(void); +typedef void (*zend_observer_function_declared_cb)(zend_op_array *op_array, zend_string *name); + +ZEND_API void zend_observer_function_declared_register(zend_observer_function_declared_cb cb); +ZEND_API void ZEND_FASTCALL _zend_observer_function_declared_notify(zend_op_array *op_array, zend_string *name); +static inline void zend_observer_function_declared_notify(zend_op_array *op_array, zend_string *name) { + if (UNEXPECTED(zend_observer_function_declared_observed)) { + _zend_observer_function_declared_notify(op_array, name); + } +} + +typedef void (*zend_observer_class_linked_cb)(zend_class_entry *ce, zend_string *name); + +ZEND_API void zend_observer_class_linked_register(zend_observer_class_linked_cb cb); +ZEND_API void ZEND_FASTCALL _zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name); +static inline void zend_observer_class_linked_notify(zend_class_entry *ce, zend_string *name) { + if (UNEXPECTED(zend_observer_class_linked_observed)) { + _zend_observer_class_linked_notify(ce, name); + } +} + typedef void (*zend_observer_error_cb)(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message); ZEND_API void zend_observer_error_register(zend_observer_error_cb callback); -void zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message); +ZEND_API void _zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message); +static inline void zend_observer_error_notify(int type, zend_string *error_filename, uint32_t error_lineno, zend_string *message) { + if (UNEXPECTED(zend_observer_errors_observed)) { + _zend_observer_error_notify(type, error_filename, error_lineno, message); + } +} typedef void (*zend_observer_fiber_init_handler)(zend_fiber_context *initializing); typedef void (*zend_observer_fiber_switch_handler)(zend_fiber_context *from, zend_fiber_context *to); diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 93f70462ad8d3..aabcac8eb0a27 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -27,6 +27,7 @@ #include "zend_API.h" #include "zend_sort.h" #include "zend_constants.h" +#include "zend_observer.h" #include "zend_vm.h" @@ -1049,6 +1050,8 @@ ZEND_API void pass_two(zend_op_array *op_array) CG(context).literals_size = op_array->last_literal; #endif + op_array->T += ZEND_OBSERVER_ENABLED; // reserve last temporary for observers if enabled + /* Needs to be set directly after the opcode/literal reallocation, to ensure destruction * happens correctly if any of the following fixups generate a fatal error. */ op_array->fn_flags |= ZEND_ACC_DONE_PASS_TWO; diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 3690162418fa3..9af1a6b4756ec 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -3539,8 +3539,7 @@ ZEND_API const char* ZEND_FASTCALL zend_memnrstr_ex(const char *haystack, const } /* }}} */ -#ifndef ZEND_DVAL_TO_LVAL_CAST_OK -# if SIZEOF_ZEND_LONG == 4 +#if SIZEOF_ZEND_LONG == 4 ZEND_API zend_long ZEND_FASTCALL zend_dval_to_lval_slow(double d) /* {{{ */ { double two_pow_32 = pow(2., 32.), @@ -3570,4 +3569,3 @@ ZEND_API zend_long ZEND_FASTCALL zend_dval_to_lval_slow(double d) } /* }}} */ #endif -#endif diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index de02a406d575e..0fc503f2c12b4 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -99,16 +99,6 @@ ZEND_API const char* ZEND_FASTCALL zend_memnrstr_ex(const char *haystack, const # define ZEND_DOUBLE_FITS_LONG(d) (!((d) >= (double)ZEND_LONG_MAX || (d) < (double)ZEND_LONG_MIN)) #endif -#ifdef ZEND_DVAL_TO_LVAL_CAST_OK -static zend_always_inline zend_long zend_dval_to_lval(double d) -{ - if (EXPECTED(zend_finite(d)) && EXPECTED(!zend_isnan(d))) { - return (zend_long)d; - } else { - return 0; - } -} -#else ZEND_API zend_long ZEND_FASTCALL zend_dval_to_lval_slow(double d); static zend_always_inline zend_long zend_dval_to_lval(double d) @@ -120,7 +110,6 @@ static zend_always_inline zend_long zend_dval_to_lval(double d) } return (zend_long)d; } -#endif /* Used to convert a string float to integer during an (int) cast */ static zend_always_inline zend_long zend_dval_to_lval_cap(double d) @@ -450,8 +439,12 @@ ZEND_API char* ZEND_FASTCALL zend_str_toupper_dup_ex(const char *source, ZEND_API zend_string* ZEND_FASTCALL zend_string_tolower_ex(zend_string *str, bool persistent); ZEND_API zend_string* ZEND_FASTCALL zend_string_toupper_ex(zend_string *str, bool persistent); -#define zend_string_tolower(str) zend_string_tolower_ex(str, 0) -#define zend_string_toupper(str) zend_string_toupper_ex(str, 0) +static zend_always_inline zend_string* zend_string_tolower(zend_string *str) { + return zend_string_tolower_ex(str, false); +} +static zend_always_inline zend_string* zend_string_toupper(zend_string *str) { + return zend_string_toupper_ex(str, false); +} ZEND_API int ZEND_FASTCALL zend_binary_zval_strcmp(zval *s1, zval *s2); ZEND_API int ZEND_FASTCALL zend_binary_zval_strncmp(zval *s1, zval *s2, zval *s3); diff --git a/Zend/zend_portability.h b/Zend/zend_portability.h index a2cee98425e1f..d0b272686e339 100644 --- a/Zend/zend_portability.h +++ b/Zend/zend_portability.h @@ -215,7 +215,7 @@ char *alloca(); #if ZEND_GCC_VERSION >= 2096 || __has_attribute(__malloc__) # define ZEND_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) #elif defined(ZEND_WIN32) -# define ZEND_ATTRIBUTE_MALLOC __declspec(restrict) +# define ZEND_ATTRIBUTE_MALLOC __declspec(allocator) __declspec(restrict) #else # define ZEND_ATTRIBUTE_MALLOC #endif @@ -228,6 +228,12 @@ char *alloca(); # define ZEND_ATTRIBUTE_ALLOC_SIZE2(X,Y) #endif +#if ZEND_GCC_VERSION >= 3000 +# define ZEND_ATTRIBUTE_CONST __attribute__((const)) +#else +# define ZEND_ATTRIBUTE_CONST +#endif + #if ZEND_GCC_VERSION >= 2007 || __has_attribute(format) # define ZEND_ATTRIBUTE_FORMAT(type, idx, first) __attribute__ ((format(type, idx, first))) #else diff --git a/Zend/zend_smart_str.h b/Zend/zend_smart_str.h index cf28016993f74..d8b72905d0216 100644 --- a/Zend/zend_smart_str.h +++ b/Zend/zend_smart_str.h @@ -21,33 +21,6 @@ #include "zend_globals.h" #include "zend_smart_str_public.h" -#define smart_str_appends_ex(dest, src, what) \ - smart_str_appendl_ex((dest), (src), strlen(src), (what)) -#define smart_str_appends(dest, src) \ - smart_str_appendl((dest), (src), strlen(src)) -#define smart_str_extract(dest) \ - smart_str_extract_ex((dest), 0) -#define smart_str_trim_to_size(dest) \ - smart_str_trim_to_size_ex((dest), 0) -#define smart_str_extend(dest, len) \ - smart_str_extend_ex((dest), (len), 0) -#define smart_str_appendc(dest, c) \ - smart_str_appendc_ex((dest), (c), 0) -#define smart_str_appendl(dest, src, len) \ - smart_str_appendl_ex((dest), (src), (len), 0) -#define smart_str_append(dest, src) \ - smart_str_append_ex((dest), (src), 0) -#define smart_str_append_smart_str(dest, src) \ - smart_str_append_smart_str_ex((dest), (src), 0) -#define smart_str_sets(dest, src) \ - smart_str_setl((dest), (src), strlen(src)); -#define smart_str_append_long(dest, val) \ - smart_str_append_long_ex((dest), (val), 0) -#define smart_str_append_unsigned(dest, val) \ - smart_str_append_unsigned_ex((dest), (val), 0) -#define smart_str_free(dest) \ - smart_str_free_ex((dest), 0) - BEGIN_EXTERN_C() ZEND_API void ZEND_FASTCALL smart_str_erealloc(smart_str *str, size_t len); @@ -87,6 +60,11 @@ static zend_always_inline char* smart_str_extend_ex(smart_str *dest, size_t len, return ret; } +static zend_always_inline char* smart_str_extend(smart_str *dest, size_t length) +{ + return smart_str_extend_ex(dest, length, false); +} + static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent) { if (str->s) { zend_string_release_ex(str->s, persistent); @@ -95,6 +73,11 @@ static zend_always_inline void smart_str_free_ex(smart_str *str, bool persistent str->a = 0; } +static zend_always_inline void smart_str_free(smart_str *str) +{ + smart_str_free_ex(str, false); +} + static zend_always_inline void smart_str_0(smart_str *str) { if (str->s) { ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0'; @@ -113,6 +96,11 @@ static zend_always_inline void smart_str_trim_to_size_ex(smart_str *str, bool pe } } +static zend_always_inline void smart_str_trim_to_size(smart_str *dest) +{ + smart_str_trim_to_size_ex(dest, false); +} + static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool persistent) { if (str->s) { zend_string *res; @@ -126,6 +114,11 @@ static zend_always_inline zend_string *smart_str_extract_ex(smart_str *str, bool } } +static zend_always_inline zend_string *smart_str_extract(smart_str *dest) +{ + return smart_str_extract_ex(dest, false); +} + static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, bool persistent) { size_t new_len = smart_str_alloc(dest, 1, persistent); ZSTR_VAL(dest->s)[new_len - 1] = ch; @@ -154,15 +147,54 @@ static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_lo smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent); } +static zend_always_inline void smart_str_append_long(smart_str *dest, zend_long num) +{ + smart_str_append_long_ex(dest, num, false); +} + static zend_always_inline void smart_str_append_unsigned_ex(smart_str *dest, zend_ulong num, bool persistent) { char buf[32]; char *result = zend_print_ulong_to_buf(buf + sizeof(buf) - 1, num); smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent); } +static zend_always_inline void smart_str_append_unsigned(smart_str *dest, zend_ulong num) +{ + smart_str_append_unsigned_ex(dest, num, false); +} + +static zend_always_inline void smart_str_appendl(smart_str *dest, const char *src, size_t length) +{ + smart_str_appendl_ex(dest, src, length, false); +} +static zend_always_inline void smart_str_appends_ex(smart_str *dest, const char *src, bool persistent) +{ + smart_str_appendl_ex(dest, src, strlen(src), persistent); +} +static zend_always_inline void smart_str_appends(smart_str *dest, const char *src) +{ + smart_str_appendl_ex(dest, src, strlen(src), false); +} +static zend_always_inline void smart_str_append(smart_str *dest, const zend_string *src) +{ + smart_str_append_ex(dest, src, false); +} +static zend_always_inline void smart_str_appendc(smart_str *dest, char ch) +{ + smart_str_appendc_ex(dest, ch, false); +} +static zend_always_inline void smart_str_append_smart_str(smart_str *dest, const smart_str *src) +{ + smart_str_append_smart_str_ex(dest, src, false); +} + static zend_always_inline void smart_str_setl(smart_str *dest, const char *src, size_t len) { smart_str_free(dest); smart_str_appendl(dest, src, len); } +static zend_always_inline void smart_str_sets(smart_str *dest, const char *src) +{ + smart_str_setl(dest, src, strlen(src)); +} #endif diff --git a/Zend/zend_virtual_cwd.c b/Zend/zend_virtual_cwd.c index 14e55fab4471d..64fc165174051 100644 --- a/Zend/zend_virtual_cwd.c +++ b/Zend/zend_virtual_cwd.c @@ -603,6 +603,7 @@ static size_t tsrm_realpath_r(char *path, size_t start, size_t len, int *ll, tim if (!pathw) { return (size_t)-1; } + PHP_WIN32_IOUTIL_CHECK_PATH_W(pathw, (size_t)-1, 1); hFind = FindFirstFileExW(pathw, FindExInfoBasic, &dataw, FindExSearchNameMatch, NULL, 0); if (INVALID_HANDLE_VALUE == hFind) { if (use_realpath == CWD_REALPATH) { @@ -1139,7 +1140,13 @@ CWD_API int virtual_file_ex(cwd_state *state, const char *path, verify_path_func path_length = tsrm_realpath_r(resolved_path, start, path_length, &ll, &t, use_realpath, 0, NULL); if (path_length == (size_t)-1) { +#ifdef ZEND_WIN32 + if (errno != EACCES) { + errno = ENOENT; + } +#else errno = ENOENT; +#endif return 1; } diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index df042aa8f3199..56904b0162273 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -1516,7 +1516,7 @@ ZEND_VM_HOT_HANDLER(34, ZEND_PRE_INC, VAR|CV, ANY, SPEC(RETVAL)) if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_increment_function(var_ptr); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (RETURN_VALUE_USED(opline)) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -1568,7 +1568,7 @@ ZEND_VM_HOT_HANDLER(35, ZEND_PRE_DEC, VAR|CV, ANY, SPEC(RETVAL)) if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_decrement_function(var_ptr); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (RETURN_VALUE_USED(opline)) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -2693,7 +2693,7 @@ ZEND_VM_HANDLER(22, ZEND_ASSIGN, VAR|CV, CONST|TMP|VAR|CV, SPEC(RETVAL)) variable_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_W); value = zend_assign_to_variable(variable_ptr, value, OP2_TYPE, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (RETURN_VALUE_USED(opline)) { ZVAL_COPY(EX_VAR(opline->result.var), value); } FREE_OP1(); @@ -4320,6 +4320,7 @@ ZEND_VM_INLINE_HANDLER(62, ZEND_RETURN, CONST|TMP|VAR|CV, ANY, SPEC(OBSERVER)) zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -5901,6 +5902,13 @@ ZEND_VM_HANDLER(181, ZEND_FETCH_CLASS_CONSTANT, VAR|CONST|UNUSED|CLASS_FETCH, CO ZVAL_UNDEF(EX_VAR(opline->result.var)); HANDLE_EXCEPTION(); } + + if (ce->ce_flags & ZEND_ACC_TRAIT) { + zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))); + ZVAL_UNDEF(EX_VAR(opline->result.var)); + HANDLE_EXCEPTION(); + } + value = &c->value; // Enums require loading of all class constants to build the backed enum table if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) { @@ -7869,7 +7877,12 @@ ZEND_VM_HELPER(zend_dispatch_try_catch_finally_helper, ANY, ANY, uint32_t try_ca /* Chain potential exception from wrapping finally block */ if (Z_OBJ_P(fast_call)) { if (ex) { - zend_exception_set_previous(ex, Z_OBJ_P(fast_call)); + if (zend_is_unwind_exit(ex) || zend_is_graceful_exit(ex)) { + /* discard the previously thrown exception */ + OBJ_RELEASE(Z_OBJ_P(fast_call)); + } else { + zend_exception_set_previous(ex, Z_OBJ_P(fast_call)); + } } else { ex = EG(exception) = Z_OBJ_P(fast_call); } @@ -8413,8 +8426,8 @@ ZEND_VM_C_LABEL(check_indirect): zend_refcounted *garbage = Z_COUNTED_P(variable_ptr); ZVAL_REF(variable_ptr, ref); + SAVE_OPLINE(); if (GC_DELREF(garbage) == 0) { - SAVE_OPLINE(); rc_dtor_func(garbage); if (UNEXPECTED(EG(exception))) { ZVAL_NULL(variable_ptr); @@ -9604,7 +9617,7 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_PRE_INC, (res_info == MAY_BE_LONG && op1_info var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW); Z_LVAL_P(var_ptr)++; - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (RETURN_VALUE_USED(opline)) { ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr)); } ZEND_VM_NEXT_OPCODE(); @@ -9617,7 +9630,7 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_PRE_INC, (op1_info == MAY_BE_LONG), ZEND_PRE_ var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW); fast_long_increment_function(var_ptr); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (RETURN_VALUE_USED(opline)) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -9630,7 +9643,7 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_PRE_DEC, (res_info == MAY_BE_LONG && op1_info var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW); Z_LVAL_P(var_ptr)--; - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (RETURN_VALUE_USED(opline)) { ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr)); } ZEND_VM_NEXT_OPCODE(); @@ -9643,7 +9656,7 @@ ZEND_VM_HOT_TYPE_SPEC_HANDLER(ZEND_PRE_DEC, (op1_info == MAY_BE_LONG), ZEND_PRE_ var_ptr = GET_OP1_ZVAL_PTR_PTR_UNDEF(BP_VAR_RW); fast_long_decrement_function(var_ptr); - if (UNEXPECTED(RETURN_VALUE_USED(opline))) { + if (RETURN_VALUE_USED(opline)) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index b3a48b80f480b..beb03114a5b61 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -3130,7 +3130,12 @@ static zend_never_inline ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_dispatch_try /* Chain potential exception from wrapping finally block */ if (Z_OBJ_P(fast_call)) { if (ex) { - zend_exception_set_previous(ex, Z_OBJ_P(fast_call)); + if (zend_is_unwind_exit(ex) || zend_is_graceful_exit(ex)) { + /* discard the previously thrown exception */ + OBJ_RELEASE(Z_OBJ_P(fast_call)); + } else { + zend_exception_set_previous(ex, Z_OBJ_P(fast_call)); + } } else { ex = EG(exception) = Z_OBJ_P(fast_call); } @@ -4268,6 +4273,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_ zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -4345,6 +4351,7 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_OBSER zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -7143,6 +7150,13 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_CONS ZVAL_UNDEF(EX_VAR(opline->result.var)); HANDLE_EXCEPTION(); } + + if (ce->ce_flags & ZEND_ACC_TRAIT) { + zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))); + ZVAL_UNDEF(EX_VAR(opline->result.var)); + HANDLE_EXCEPTION(); + } + value = &c->value; // Enums require loading of all class constants to build the backed enum table if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) { @@ -18894,6 +18908,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_TMP_HA zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -21316,7 +21331,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_R if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_increment_function(var_ptr); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -21334,7 +21349,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_R if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_increment_function(var_ptr); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -21386,7 +21401,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_R if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_decrement_function(var_ptr); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -21404,7 +21419,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_R if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_decrement_function(var_ptr); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -21547,6 +21562,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_VAR_HA zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -24127,7 +24143,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_U variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -24147,7 +24163,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_U variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -24704,6 +24720,13 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_ ZVAL_UNDEF(EX_VAR(opline->result.var)); HANDLE_EXCEPTION(); } + + if (ce->ce_flags & ZEND_ACC_TRAIT) { + zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))); + ZVAL_UNDEF(EX_VAR(opline->result.var)); + HANDLE_EXCEPTION(); + } + value = &c->value; // Enums require loading of all class constants to build the backed enum table if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) { @@ -27463,7 +27486,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNU variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -27483,7 +27506,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USE variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -27547,7 +27570,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNU variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -27567,7 +27590,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USE variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -31040,7 +31063,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUS variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -31060,7 +31083,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var EXECUTE_DATA_CC); value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } zval_ptr_dtor_nogc(EX_VAR(opline->op1.var)); @@ -33549,6 +33572,13 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUS ZVAL_UNDEF(EX_VAR(opline->result.var)); HANDLE_EXCEPTION(); } + + if (ce->ce_flags & ZEND_ACC_TRAIT) { + zend_throw_error(NULL, "Cannot access trait constant %s::%s directly", ZSTR_VAL(ce->name), Z_STRVAL_P(RT_CONSTANT(opline, opline->op2))); + ZVAL_UNDEF(EX_VAR(opline->result.var)); + HANDLE_EXCEPTION(); + } + value = &c->value; // Enums require loading of all class constants to build the backed enum table if (ce->ce_flags & ZEND_ACC_ENUM && ce->enum_backing_type != IS_UNDEF && ce->type == ZEND_USER_CLASS && !(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) { @@ -38102,7 +38132,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RE if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_increment_function(var_ptr); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -38120,7 +38150,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RE if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_increment_function(var_ptr); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -38171,7 +38201,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RE if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_decrement_function(var_ptr); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -38189,7 +38219,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RE if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) { fast_long_decrement_function(var_ptr); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -38497,6 +38527,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HAN zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -39558,7 +39589,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_NO_OV var_ptr = EX_VAR(opline->op1.var); Z_LVAL_P(var_ptr)++; - if (UNEXPECTED(0)) { + if (0) { ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr)); } ZEND_VM_NEXT_OPCODE(); @@ -39571,7 +39602,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_NO_OV var_ptr = EX_VAR(opline->op1.var); Z_LVAL_P(var_ptr)++; - if (UNEXPECTED(1)) { + if (1) { ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr)); } ZEND_VM_NEXT_OPCODE(); @@ -39584,7 +39615,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_SPEC_ var_ptr = EX_VAR(opline->op1.var); fast_long_increment_function(var_ptr); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -39597,7 +39628,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_SPEC_ var_ptr = EX_VAR(opline->op1.var); fast_long_increment_function(var_ptr); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -39610,7 +39641,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_NO_OV var_ptr = EX_VAR(opline->op1.var); Z_LVAL_P(var_ptr)--; - if (UNEXPECTED(0)) { + if (0) { ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr)); } ZEND_VM_NEXT_OPCODE(); @@ -39623,7 +39654,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_NO_OV var_ptr = EX_VAR(opline->op1.var); Z_LVAL_P(var_ptr)--; - if (UNEXPECTED(1)) { + if (1) { ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr)); } ZEND_VM_NEXT_OPCODE(); @@ -39636,7 +39667,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_SPEC_ var_ptr = EX_VAR(opline->op1.var); fast_long_decrement_function(var_ptr); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -39649,7 +39680,7 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_SPEC_ var_ptr = EX_VAR(opline->op1.var); fast_long_decrement_function(var_ptr); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr); } ZEND_VM_NEXT_OPCODE(); @@ -42141,7 +42172,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UN variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -42161,7 +42192,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_US variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_CONST, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -43302,8 +43333,8 @@ static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_GLOBAL_SPEC_C zend_refcounted *garbage = Z_COUNTED_P(variable_ptr); ZVAL_REF(variable_ptr, ref); + SAVE_OPLINE(); if (GC_DELREF(garbage) == 0) { - SAVE_OPLINE(); rc_dtor_func(garbage); if (UNEXPECTED(EG(exception))) { ZVAL_NULL(variable_ptr); @@ -46843,7 +46874,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUS variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -46863,7 +46894,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -46913,7 +46944,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUS variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -46933,7 +46964,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_VAR, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -51248,7 +51279,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSE variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(0)) { + if (0) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -51268,7 +51299,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_ variable_ptr = EX_VAR(opline->op1.var); value = zend_assign_to_variable(variable_ptr, value, IS_CV, EX_USES_STRICT_TYPES()); - if (UNEXPECTED(1)) { + if (1) { ZVAL_COPY(EX_VAR(opline->result.var), value); } @@ -56217,6 +56248,7 @@ ZEND_API void execute_ex(zend_execute_data *ex) zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -56295,6 +56327,7 @@ ZEND_API void execute_ex(zend_execute_data *ex) zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -57824,6 +57857,7 @@ ZEND_API void execute_ex(zend_execute_data *ex) zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -58129,6 +58163,7 @@ ZEND_API void execute_ex(zend_execute_data *ex) zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); @@ -59258,6 +59293,7 @@ ZEND_API void execute_ex(zend_execute_data *ex) zend_refcounted *ref = Z_COUNTED_P(retval_ptr); ZVAL_COPY_VALUE(return_value, retval_ptr); if (GC_MAY_LEAK(ref)) { + SAVE_OPLINE(); gc_possible_root(ref); } ZVAL_NULL(retval_ptr); diff --git a/Zend/zend_weakrefs.c b/Zend/zend_weakrefs.c index 3f2e517f3fe4e..db95b13a7254a 100644 --- a/Zend/zend_weakrefs.c +++ b/Zend/zend_weakrefs.c @@ -210,9 +210,6 @@ static zend_object* zend_weakref_new(zend_class_entry *ce) { zend_weakref *wr = zend_object_alloc(sizeof(zend_weakref), zend_ce_weakref); zend_object_std_init(&wr->std, zend_ce_weakref); - - wr->std.handlers = &zend_weakref_handlers; - return &wr->std; } @@ -304,7 +301,6 @@ static zend_object *zend_weakmap_create_object(zend_class_entry *ce) { zend_weakmap *wm = zend_object_alloc(sizeof(zend_weakmap), ce); zend_object_std_init(&wm->std, ce); - wm->std.handlers = &zend_weakmap_handlers; zend_hash_init(&wm->ht, 0, NULL, ZVAL_PTR_DTOR, 0); return &wm->std; @@ -651,6 +647,7 @@ void zend_register_weakref_ce(void) /* {{{ */ zend_ce_weakref = register_class_WeakReference(); zend_ce_weakref->create_object = zend_weakref_new; + zend_ce_weakref->default_object_handlers = &zend_weakref_handlers; memcpy(&zend_weakref_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); zend_weakref_handlers.offset = XtOffsetOf(zend_weakref, std); @@ -662,6 +659,7 @@ void zend_register_weakref_ce(void) /* {{{ */ zend_ce_weakmap->create_object = zend_weakmap_create_object; zend_ce_weakmap->get_iterator = zend_weakmap_get_iterator; + zend_ce_weakmap->default_object_handlers = &zend_weakmap_handlers; memcpy(&zend_weakmap_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); zend_weakmap_handlers.offset = XtOffsetOf(zend_weakmap, std); diff --git a/appveyor/test_task.bat b/appveyor/test_task.bat index c092083651fbc..c55bd7ea0543f 100644 --- a/appveyor/test_task.bat +++ b/appveyor/test_task.bat @@ -136,7 +136,7 @@ mkdir c:\tests_tmp set TEST_PHP_JUNIT=c:\junit.out.xml cd "%APPVEYOR_BUILD_FOLDER%" -nmake test TESTS="%OPCACHE_OPTS% -q --offline --show-diff --show-slow 1000 --set-timeout 120 --temp-source c:\tests_tmp --temp-target c:\tests_tmp --bless %PARALLEL%" +nmake test TESTS="%OPCACHE_OPTS% -g FAIL,BORK,LEAK,XLEAK --no-progress -q --offline --show-diff --show-slow 1000 --set-timeout 120 --temp-source c:\tests_tmp --temp-target c:\tests_tmp --bless %PARALLEL%" set EXIT_CODE=%errorlevel% diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 1ae502c66f811..2d9018ff67670 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -5,6 +5,7 @@ trigger: - PHP-7.4 - PHP-8.0 - PHP-8.1 + - PHP-8.2 - master paths: exclude: @@ -24,6 +25,7 @@ schedules: - PHP-7.4 - PHP-8.0 - PHP-8.1 + - PHP-8.2 - master jobs: diff --git a/azure/libmysqlclient_test.yml b/azure/libmysqlclient_test.yml index 059be219e2fe1..34b091cee196f 100644 --- a/azure/libmysqlclient_test.yml +++ b/azure/libmysqlclient_test.yml @@ -35,6 +35,7 @@ steps: rm -rf junit.xml | true sapi/cli/php run-tests.php -P -q \ -g FAIL,BORK,LEAK,XLEAK \ + --no-progress \ --offline --show-diff --show-slow 1000 --set-timeout 120 \ ext/pdo_mysql displayName: 'Test ${{ parameters.configurationName }}' diff --git a/azure/test.yml b/azure/test.yml index 09028900ea21a..7f72d4624ae50 100644 --- a/azure/test.yml +++ b/azure/test.yml @@ -19,6 +19,7 @@ steps: sapi/cli/php run-tests.php -P -q \ -j$(/usr/bin/nproc) \ -g FAIL,BORK,LEAK,XLEAK \ + --no-progress \ --offline \ --show-diff \ --show-slow 1000 \ diff --git a/build/gen_stub.php b/build/gen_stub.php index 3eb7c1c662a80..9dff45649671e 100755 --- a/build/gen_stub.php +++ b/build/gen_stub.php @@ -1037,6 +1037,10 @@ public function getNonNamespacedName(): string { } public function getDeclarationName(): string { + return implode('_', $this->name->parts); + } + + public function getFunctionName(): string { return $this->name->getLast(); } @@ -1380,39 +1384,42 @@ public function getFunctionEntry(): string { } } else if ($this->name instanceof FunctionName) { $namespace = $this->name->getNamespace(); - $declarationName = $this->name->getDeclarationName(); + $functionName = $this->name->getFunctionName(); + $declarationName = $this->alias ? $this->alias->getNonNamespacedName() : $this->name->getDeclarationName(); + + if ($namespace) { + // Namespaced functions are always declared as aliases to avoid name conflicts when two functions with + // the same name exist in separate namespaces + $macro = $this->isDeprecated ? 'ZEND_NS_DEP_FALIAS' : 'ZEND_NS_FALIAS'; - if ($this->alias && $this->isDeprecated) { + // Render A\B as "A\\B" in C strings for namespaces return sprintf( - "\tZEND_DEP_FALIAS(%s, %s, %s)\n", - $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName() + "\t%s(\"%s\", %s, %s, %s)\n", + $macro, addslashes($namespace), $this->name->getFunctionName(), $declarationName, $this->getArgInfoName() ); } if ($this->alias) { + $macro = $this->isDeprecated ? 'ZEND_DEP_FALIAS' : 'ZEND_FALIAS'; + return sprintf( - "\tZEND_FALIAS(%s, %s, %s)\n", - $declarationName, $this->alias->getNonNamespacedName(), $this->getArgInfoName() + "\t%s(%s, %s, %s)\n", + $macro, $functionName, $declarationName, $this->getArgInfoName() ); } - if ($this->isDeprecated) { - return sprintf( - "\tZEND_DEP_FE(%s, %s)\n", $declarationName, $this->getArgInfoName()); + switch (true) { + case $this->isDeprecated: + $macro = 'ZEND_DEP_FE'; + break; + case $this->supportsCompileTimeEval: + $macro = 'ZEND_SUPPORTS_COMPILE_TIME_EVAL_FE'; + break; + default: + $macro = 'ZEND_FE'; } - if ($namespace) { - // Render A\B as "A\\B" in C strings for namespaces - return sprintf( - "\tZEND_NS_FE(\"%s\", %s, %s)\n", - addslashes($namespace), $declarationName, $this->getArgInfoName()); - } else { - if ($this->supportsCompileTimeEval) { - return sprintf( - "\tZEND_SUPPORTS_COMPILE_TIME_EVAL_FE(%s, %s)\n", $declarationName, $this->getArgInfoName()); - } - return sprintf("\tZEND_FE(%s, %s)\n", $declarationName, $this->getArgInfoName()); - } + return sprintf("\t%s(%s, %s)\n", $macro, $functionName, $this->getArgInfoName()); } else { throw new Error("Cannot happen"); } @@ -2013,7 +2020,7 @@ private function getGlobalConstDeclaration(EvaluatedValue $value, iterable $allC $constValue = $value->value; $cConstValue = $value->getCConstValue($allConstInfos); - $flags = "CONST_CS | CONST_PERSISTENT"; + $flags = "CONST_PERSISTENT"; if ($this->isDeprecated) { $flags .= " | CONST_DEPRECATED"; } @@ -2446,6 +2453,8 @@ class ClassInfo { public $cond; /** @var int|null */ public $phpVersionIdMinimumCompatibility; + /** @var bool */ + public $isUndocumentable; /** * @param AttributeInfo[] $attributes @@ -2473,7 +2482,8 @@ public function __construct( array $funcInfos, array $enumCaseInfos, ?string $cond, - ?int $minimumPhpVersionIdCompatibility + ?int $minimumPhpVersionIdCompatibility, + bool $isUndocumentable ) { $this->name = $name; $this->flags = $flags; @@ -2492,6 +2502,7 @@ public function __construct( $this->enumCaseInfos = $enumCaseInfos; $this->cond = $cond; $this->phpVersionIdMinimumCompatibility = $minimumPhpVersionIdCompatibility; + $this->isUndocumentable = $isUndocumentable; } /** @@ -3081,6 +3092,8 @@ class FileInfo { public $generateLegacyArginfoForPhpVersionId; /** @var bool */ public $generateClassEntries = false; + /** @var bool */ + public $isUndocumentable = false; /** * @return iterable @@ -3492,7 +3505,8 @@ function parseClass( array $methods, array $enumCases, ?string $cond, - ?int $minimumPhpVersionIdCompatibility + ?int $minimumPhpVersionIdCompatibility, + bool $isUndocumentable ): ClassInfo { $flags = $class instanceof Class_ ? $class->flags : 0; $comment = $class->getDocComment(); @@ -3514,6 +3528,8 @@ function parseClass( $isStrictProperties = true; } else if ($tag->name === 'not-serializable') { $isNotSerializable = true; + } else if ($tag->name === 'undocumentable') { + $isUndocumentable = true; } } } @@ -3572,7 +3588,8 @@ function parseClass( $methods, $enumCases, $cond, - $minimumPhpVersionIdCompatibility + $minimumPhpVersionIdCompatibility, + $isUndocumentable ); } @@ -3725,7 +3742,7 @@ function handleStatements(FileInfo $fileInfo, array $stmts, PrettyPrinterAbstrac } $fileInfo->classInfos[] = parseClass( - $className, $stmt, $constInfos, $propertyInfos, $methodInfos, $enumCaseInfos, $cond, $fileInfo->generateLegacyArginfoForPhpVersionId + $className, $stmt, $constInfos, $propertyInfos, $methodInfos, $enumCaseInfos, $cond, $fileInfo->generateLegacyArginfoForPhpVersionId, $fileInfo->isUndocumentable ); continue; } @@ -3776,6 +3793,8 @@ protected function pName_FullyQualified(Name\FullyQualified $node) { } else if ($tag->name === 'generate-class-entries') { $fileInfo->generateClassEntries = true; $fileInfo->declarationPrefix = $tag->value ? $tag->value . " " : ""; + } else if ($tag->name === 'undocumentable') { + $fileInfo->isUndocumentable = true; } } } @@ -3997,8 +4016,14 @@ static function (FuncInfo $funcInfo) use ($fileInfo, &$generatedFunctionDeclarat } } + $php82MinimumCompatibility = $fileInfo->generateLegacyArginfoForPhpVersionId === null || $fileInfo->generateLegacyArginfoForPhpVersionId >= PHP_82_VERSION_ID; + if ($fileInfo->generateClassEntries) { - $attributeInitializationCode = generateAttributeInitialization($fileInfo->funcInfos, $allConstInfos, null); + if ($attributeInitializationCode = generateAttributeInitialization($fileInfo->funcInfos, $allConstInfos, null)) { + if (!$php82MinimumCompatibility) { + $attributeInitializationCode = "\n#if (PHP_VERSION_ID >= " . PHP_82_VERSION_ID . ")" . $attributeInitializationCode . "#endif\n"; + } + } if ($attributeInitializationCode !== "" || !empty($fileInfo->constInfos)) { $code .= "\nstatic void register_{$stubFilenameWithoutExtension}_symbols(int module_number)\n"; @@ -4206,12 +4231,14 @@ function generateClassSynopses(array $classMap, iterable $allConstInfos): array } /** - * @param ClassInfo[] $classMap + * @param array $classMap * $param iterable $allConstInfos * @return array */ -function replaceClassSynopses(string $targetDirectory, array $classMap, iterable $allConstInfos): array +function replaceClassSynopses(string $targetDirectory, array $classMap, iterable $allConstInfos, bool $isVerify): array { + $existingClassSynopses = []; + $classSynopses = []; $it = new RecursiveIteratorIterator( @@ -4268,6 +4295,9 @@ function replaceClassSynopses(string $targetDirectory, array $classMap, iterable if (!isset($classMap[$className])) { continue; } + + $existingClassSynopses[$className] = $className; + $classInfo = $classMap[$className]; $newClassSynopsis = $classInfo->getClassSynopsisElement($doc, $classMap, $allConstInfos); @@ -4307,6 +4337,16 @@ function replaceClassSynopses(string $targetDirectory, array $classMap, iterable } } + if ($isVerify) { + $missingClassSynopses = array_diff_key($classMap, $existingClassSynopses); + foreach ($missingClassSynopses as $className => $info) { + /** @var ClassInfo $info */ + if (!$info->isUndocumentable) { + echo "Warning: Missing class synopsis page for $className\n"; + } + } + } + return $classSynopses; } @@ -4569,7 +4609,7 @@ function initPhpParser() { } $isInitialized = true; - $version = "4.14.0"; + $version = "4.15.1"; $phpParserDir = __DIR__ . "/PHP-Parser-$version"; if (!is_dir($phpParserDir)) { installPhpParser($version, $phpParserDir); @@ -4778,7 +4818,7 @@ function(?ArgInfo $aliasArg, ?ArgInfo $aliasedArg) use ($aliasFunc, $aliasedFunc } if ($replaceClassSynopses) { - $classSynopses = replaceClassSynopses($targetSynopses, $classMap, $context->allConstInfos); + $classSynopses = replaceClassSynopses($targetSynopses, $classMap, $context->allConstInfos, $verify); foreach ($classSynopses as $filename => $content) { if (file_put_contents($filename, $content)) { diff --git a/configure.ac b/configure.ac index 44f6da3f7d1d5..d39639267ecb0 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ dnl Basic autoconf initialization, generation of config.nice. dnl ---------------------------------------------------------------------------- AC_PREREQ([2.68]) -AC_INIT([PHP],[8.2.0-dev],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) +AC_INIT([PHP],[8.3.0-dev],[https://github.com/php/php-src/issues],[php],[https://www.php.net]) AC_CONFIG_SRCDIR([main/php_version.h]) AC_CONFIG_AUX_DIR([build]) AC_PRESERVE_HELP_ORDER diff --git a/ext/calendar/calendar_arginfo.h b/ext/calendar/calendar_arginfo.h index f518d36e413bb..1ea1a9e4c530b 100644 --- a/ext/calendar/calendar_arginfo.h +++ b/ext/calendar/calendar_arginfo.h @@ -119,25 +119,25 @@ static const zend_function_entry ext_functions[] = { static void register_calendar_symbols(int module_number) { - REGISTER_LONG_CONSTANT("CAL_GREGORIAN", CAL_GREGORIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_JULIAN", CAL_JULIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_JEWISH", CAL_JEWISH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_FRENCH", CAL_FRENCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_NUM_CALS", CAL_NUM_CALS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_DOW_DAYNO", CAL_DOW_DAYNO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_DOW_SHORT", CAL_DOW_SHORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_DOW_LONG", CAL_DOW_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_SHORT", CAL_MONTH_GREGORIAN_SHORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_LONG", CAL_MONTH_GREGORIAN_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_SHORT", CAL_MONTH_JULIAN_SHORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_LONG", CAL_MONTH_JULIAN_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_MONTH_JEWISH", CAL_MONTH_JEWISH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_MONTH_FRENCH", CAL_MONTH_FRENCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_EASTER_DEFAULT", CAL_EASTER_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_EASTER_ROMAN", CAL_EASTER_ROMAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_GREGORIAN", CAL_EASTER_ALWAYS_GREGORIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_JULIAN", CAL_EASTER_ALWAYS_JULIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_ALAFIM_GERESH", CAL_JEWISH_ADD_ALAFIM_GERESH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_ALAFIM", CAL_JEWISH_ADD_ALAFIM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_GERESHAYIM", CAL_JEWISH_ADD_GERESHAYIM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_GREGORIAN", CAL_GREGORIAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_JULIAN", CAL_JULIAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_JEWISH", CAL_JEWISH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_FRENCH", CAL_FRENCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_NUM_CALS", CAL_NUM_CALS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_DOW_DAYNO", CAL_DOW_DAYNO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_DOW_SHORT", CAL_DOW_SHORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_DOW_LONG", CAL_DOW_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_SHORT", CAL_MONTH_GREGORIAN_SHORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_MONTH_GREGORIAN_LONG", CAL_MONTH_GREGORIAN_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_SHORT", CAL_MONTH_JULIAN_SHORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_MONTH_JULIAN_LONG", CAL_MONTH_JULIAN_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_MONTH_JEWISH", CAL_MONTH_JEWISH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_MONTH_FRENCH", CAL_MONTH_FRENCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_EASTER_DEFAULT", CAL_EASTER_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_EASTER_ROMAN", CAL_EASTER_ROMAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_GREGORIAN", CAL_EASTER_ALWAYS_GREGORIAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_EASTER_ALWAYS_JULIAN", CAL_EASTER_ALWAYS_JULIAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_ALAFIM_GERESH", CAL_JEWISH_ADD_ALAFIM_GERESH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_ALAFIM", CAL_JEWISH_ADD_ALAFIM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CAL_JEWISH_ADD_GERESHAYIM", CAL_JEWISH_ADD_GERESHAYIM, CONST_PERSISTENT); } diff --git a/ext/com_dotnet/com_extension.c b/ext/com_dotnet/com_extension.c index 95361a4b9a9ed..7d7dfd536d980 100644 --- a/ext/com_dotnet/com_extension.c +++ b/ext/com_dotnet/com_extension.c @@ -184,18 +184,22 @@ PHP_MINIT_FUNCTION(com_dotnet) php_com_saproxy_class_entry = register_class_com_safearray_proxy(); /* php_com_saproxy_class_entry->constructor->common.fn_flags |= ZEND_ACC_PROTECTED; */ + php_com_saproxy_class_entry->default_object_handlers = &php_com_saproxy_handlers; php_com_saproxy_class_entry->get_iterator = php_com_saproxy_iter_get; php_com_variant_class_entry = register_class_variant(); + php_com_variant_class_entry->default_object_handlers = &php_com_object_handlers; php_com_variant_class_entry->create_object = php_com_object_new; php_com_variant_class_entry->get_iterator = php_com_iter_get; tmp = register_class_com(php_com_variant_class_entry); + tmp->default_object_handlers = &php_com_object_handlers; tmp->create_object = php_com_object_new; tmp->get_iterator = php_com_iter_get; #if HAVE_MSCOREE_H tmp = register_class_dotnet(php_com_variant_class_entry); + tmp->default_object_handlers = &php_com_object_handlers; tmp->create_object = php_com_object_new; tmp->get_iterator = php_com_iter_get; #endif @@ -252,13 +256,13 @@ PHP_MINFO_FUNCTION(com_dotnet) { php_info_print_table_start(); - php_info_print_table_header(2, "COM support", "enabled"); - php_info_print_table_header(2, "DCOM support", COMG(allow_dcom) ? "enabled" : "disabled"); + php_info_print_table_row(2, "COM support", "enabled"); + php_info_print_table_row(2, "DCOM support", COMG(allow_dcom) ? "enabled" : "disabled"); #if HAVE_MSCOREE_H - php_info_print_table_header(2, ".Net support", "enabled"); + php_info_print_table_row(2, ".Net support", "enabled"); #else - php_info_print_table_header(2, ".Net support", "not present in this build"); + php_info_print_table_row(2, ".Net support", "not present in this build"); #endif php_info_print_table_end(); diff --git a/ext/com_dotnet/com_extension_arginfo.h b/ext/com_dotnet/com_extension_arginfo.h index 7fda790b8a1ac..65ede9fbf9b40 100644 --- a/ext/com_dotnet/com_extension_arginfo.h +++ b/ext/com_dotnet/com_extension_arginfo.h @@ -239,66 +239,66 @@ static const zend_function_entry class_com_exception_methods[] = { static void register_com_extension_symbols(int module_number) { - REGISTER_LONG_CONSTANT("CLSCTX_INPROC_SERVER", CLSCTX_INPROC_SERVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CLSCTX_INPROC_HANDLER", CLSCTX_INPROC_HANDLER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CLSCTX_LOCAL_SERVER", CLSCTX_LOCAL_SERVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CLSCTX_REMOTE_SERVER", CLSCTX_REMOTE_SERVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CLSCTX_SERVER", CLSCTX_SERVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CLSCTX_ALL", CLSCTX_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_NULL", VT_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_EMPTY", VT_EMPTY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_UI1", VT_UI1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_I1", VT_I1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_UI2", VT_UI2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_I2", VT_I2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_UI4", VT_UI4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_I4", VT_I4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_R4", VT_R4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_R8", VT_R8, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_BOOL", VT_BOOL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_ERROR", VT_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_CY", VT_CY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_DATE", VT_DATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_BSTR", VT_BSTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_DECIMAL", VT_DECIMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_UNKNOWN", VT_UNKNOWN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_DISPATCH", VT_DISPATCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_VARIANT", VT_VARIANT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_INT", VT_INT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_UINT", VT_UINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_ARRAY", VT_ARRAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VT_BYREF", VT_BYREF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_ACP", CP_ACP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_MACCP", CP_MACCP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_OEMCP", CP_OEMCP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_UTF7", CP_UTF7, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_UTF8", CP_UTF8, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_SYMBOL", CP_SYMBOL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_THREAD_ACP", CP_THREAD_ACP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VARCMP_LT", VARCMP_LT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VARCMP_EQ", VARCMP_EQ, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VARCMP_GT", VARCMP_GT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("VARCMP_NULL", VARCMP_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCALE_SYSTEM_DEFAULT", LOCALE_SYSTEM_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCALE_NEUTRAL", LOCALE_NEUTRAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("NORM_IGNORECASE", NORM_IGNORECASE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("NORM_IGNORENONSPACE", NORM_IGNORENONSPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("NORM_IGNORESYMBOLS", NORM_IGNORESYMBOLS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("NORM_IGNOREWIDTH", NORM_IGNOREWIDTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("NORM_IGNOREKANATYPE", NORM_IGNOREKANATYPE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLSCTX_INPROC_SERVER", CLSCTX_INPROC_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLSCTX_INPROC_HANDLER", CLSCTX_INPROC_HANDLER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLSCTX_LOCAL_SERVER", CLSCTX_LOCAL_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLSCTX_REMOTE_SERVER", CLSCTX_REMOTE_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLSCTX_SERVER", CLSCTX_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLSCTX_ALL", CLSCTX_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_NULL", VT_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_EMPTY", VT_EMPTY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UI1", VT_UI1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_I1", VT_I1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UI2", VT_UI2, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_I2", VT_I2, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UI4", VT_UI4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_I4", VT_I4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_R4", VT_R4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_R8", VT_R8, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_BOOL", VT_BOOL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_ERROR", VT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_CY", VT_CY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_DATE", VT_DATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_BSTR", VT_BSTR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_DECIMAL", VT_DECIMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UNKNOWN", VT_UNKNOWN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_DISPATCH", VT_DISPATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_VARIANT", VT_VARIANT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_INT", VT_INT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UINT", VT_UINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_ARRAY", VT_ARRAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_BYREF", VT_BYREF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_ACP", CP_ACP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_MACCP", CP_MACCP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_OEMCP", CP_OEMCP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_UTF7", CP_UTF7, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_UTF8", CP_UTF8, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_SYMBOL", CP_SYMBOL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_THREAD_ACP", CP_THREAD_ACP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VARCMP_LT", VARCMP_LT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VARCMP_EQ", VARCMP_EQ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VARCMP_GT", VARCMP_GT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VARCMP_NULL", VARCMP_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOCALE_SYSTEM_DEFAULT", LOCALE_SYSTEM_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOCALE_NEUTRAL", LOCALE_NEUTRAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("NORM_IGNORECASE", NORM_IGNORECASE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("NORM_IGNORENONSPACE", NORM_IGNORENONSPACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("NORM_IGNORESYMBOLS", NORM_IGNORESYMBOLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("NORM_IGNOREWIDTH", NORM_IGNOREWIDTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("NORM_IGNOREKANATYPE", NORM_IGNOREKANATYPE, CONST_PERSISTENT); #if defined(NORM_IGNOREKASHIDA) - REGISTER_LONG_CONSTANT("NORM_IGNOREKASHIDA", NORM_IGNOREKASHIDA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("NORM_IGNOREKASHIDA", NORM_IGNOREKASHIDA, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("DISP_E_DIVBYZERO", PHP_DISP_E_DIVBYZERO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DISP_E_OVERFLOW", PHP_DISP_E_OVERFLOW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DISP_E_BADINDEX", PHP_DISP_E_BADINDEX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DISP_E_PARAMNOTFOUND", PHP_DISP_E_PARAMNOTFOUND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MK_E_UNAVAILABLE", PHP_MK_E_UNAVAILABLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DISP_E_DIVBYZERO", PHP_DISP_E_DIVBYZERO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DISP_E_OVERFLOW", PHP_DISP_E_OVERFLOW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DISP_E_BADINDEX", PHP_DISP_E_BADINDEX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DISP_E_PARAMNOTFOUND", PHP_DISP_E_PARAMNOTFOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MK_E_UNAVAILABLE", PHP_MK_E_UNAVAILABLE, CONST_PERSISTENT); #if SIZEOF_ZEND_LONG == 8 - REGISTER_LONG_CONSTANT("VT_UI8", VT_UI8, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UI8", VT_UI8, CONST_PERSISTENT); #endif #if SIZEOF_ZEND_LONG == 8 - REGISTER_LONG_CONSTANT("VT_I8", VT_I8, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_I8", VT_I8, CONST_PERSISTENT); #endif } diff --git a/ext/com_dotnet/com_handlers.c b/ext/com_dotnet/com_handlers.c index db96118ea31c6..0c73d8c4a3a72 100644 --- a/ext/com_dotnet/com_handlers.c +++ b/ext/com_dotnet/com_handlers.c @@ -627,7 +627,6 @@ zend_object* php_com_object_new(zend_class_entry *ce) obj->ce = ce; zend_object_std_init(&obj->zo, ce); - obj->zo.handlers = &php_com_object_handlers; obj->typeinfo = NULL; diff --git a/ext/com_dotnet/com_misc.c b/ext/com_dotnet/com_misc.c index b2920ddba62c2..39d245b7d01a7 100644 --- a/ext/com_dotnet/com_misc.c +++ b/ext/com_dotnet/com_misc.c @@ -61,7 +61,6 @@ PHP_COM_DOTNET_API void php_com_wrap_dispatch(zval *z, IDispatch *disp, IDispatch_GetTypeInfo(V_DISPATCH(&obj->v), 0, LANG_NEUTRAL, &obj->typeinfo); zend_object_std_init(&obj->zo, php_com_variant_class_entry); - obj->zo.handlers = &php_com_object_handlers; ZVAL_OBJ(z, &obj->zo); } @@ -85,7 +84,6 @@ PHP_COM_DOTNET_API void php_com_wrap_variant(zval *z, VARIANT *v, } zend_object_std_init(&obj->zo, php_com_variant_class_entry); - obj->zo.handlers = &php_com_object_handlers; ZVAL_OBJ(z, &obj->zo); } diff --git a/ext/com_dotnet/com_persist.c b/ext/com_dotnet/com_persist.c index ec5271c908c6b..ececdd87aaba8 100644 --- a/ext/com_dotnet/com_persist.c +++ b/ext/com_dotnet/com_persist.c @@ -709,7 +709,6 @@ static zend_object* helper_new(zend_class_entry *ce) memset(helper, 0, sizeof(*helper)); zend_object_std_init(&helper->std, helper_ce); - helper->std.handlers = &helper_handlers; return &helper->std; } @@ -722,6 +721,7 @@ void php_com_persist_minit(INIT_FUNC_ARGS) helper_ce = register_class_COMPersistHelper(); helper_ce->create_object = helper_new; + helper_ce->default_object_handlers = &helper_handlers; le_istream = zend_register_list_destructors_ex(istream_dtor, NULL, "com_dotnet_istream_wrapper", module_number); diff --git a/ext/com_dotnet/com_saproxy.c b/ext/com_dotnet/com_saproxy.c index 6ad4680c0fe65..c99a622070ec2 100644 --- a/ext/com_dotnet/com_saproxy.c +++ b/ext/com_dotnet/com_saproxy.c @@ -440,7 +440,6 @@ void php_com_saproxy_create(zend_object *com_object, zval *proxy_out, zval *inde ZVAL_DUP(&proxy->indices[proxy->dimensions-1], index); zend_object_std_init(&proxy->std, php_com_saproxy_class_entry); - proxy->std.handlers = &php_com_saproxy_handlers; ZVAL_OBJ(proxy_out, &proxy->std); } diff --git a/ext/com_dotnet/php_com_dotnet_internal.h b/ext/com_dotnet/php_com_dotnet_internal.h index d09db6a13bc82..18982e56ccfa0 100644 --- a/ext/com_dotnet/php_com_dotnet_internal.h +++ b/ext/com_dotnet/php_com_dotnet_internal.h @@ -78,6 +78,7 @@ void php_com_object_enable_event_sink(php_com_dotnet_object *obj, bool enable); /* com_saproxy.c */ zend_object_iterator *php_com_saproxy_iter_get(zend_class_entry *ce, zval *object, int by_ref); void php_com_saproxy_create(zend_object *com_object, zval *proxy_out, zval *index); +extern zend_object_handlers php_com_saproxy_handlers; /* com_olechar.c */ PHP_COM_DOTNET_API zend_string *php_com_olestring_to_string(OLECHAR *olestring, int codepage); diff --git a/ext/curl/curl.stub.php b/ext/curl/curl.stub.php index 58c5a959b25f6..282fc1eaaa126 100644 --- a/ext/curl/curl.stub.php +++ b/ext/curl/curl.stub.php @@ -2,6 +2,3532 @@ /** @generate-class-entries */ +/* See http://curl.haxx.se/lxr/source/docs/libcurl/symbols-in-versions + or curl src/docs/libcurl/symbols-in-versions for a (almost) complete list + of options and which version they were introduced */ + +/** + * @var int + * @cvalue CURLOPT_AUTOREFERER + */ +const CURLOPT_AUTOREFERER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_BINARYTRANSFER + */ +const CURLOPT_BINARYTRANSFER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_BUFFERSIZE + */ +const CURLOPT_BUFFERSIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CAINFO + */ +const CURLOPT_CAINFO = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CAPATH + */ +const CURLOPT_CAPATH = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CONNECTTIMEOUT + */ +const CURLOPT_CONNECTTIMEOUT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_COOKIE + */ +const CURLOPT_COOKIE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_COOKIEFILE + */ +const CURLOPT_COOKIEFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_COOKIEJAR + */ +const CURLOPT_COOKIEJAR = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_COOKIESESSION + */ +const CURLOPT_COOKIESESSION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CRLF + */ +const CURLOPT_CRLF = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CUSTOMREQUEST + */ +const CURLOPT_CUSTOMREQUEST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DNS_CACHE_TIMEOUT + */ +const CURLOPT_DNS_CACHE_TIMEOUT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DNS_USE_GLOBAL_CACHE + */ +const CURLOPT_DNS_USE_GLOBAL_CACHE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_EGDSOCKET + */ +const CURLOPT_EGDSOCKET = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_ENCODING + */ +const CURLOPT_ENCODING = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FAILONERROR + */ +const CURLOPT_FAILONERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FILE + */ +const CURLOPT_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FILETIME + */ +const CURLOPT_FILETIME = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FOLLOWLOCATION + */ +const CURLOPT_FOLLOWLOCATION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FORBID_REUSE + */ +const CURLOPT_FORBID_REUSE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FRESH_CONNECT + */ +const CURLOPT_FRESH_CONNECT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTPAPPEND + */ +const CURLOPT_FTPAPPEND = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTPLISTONLY + */ +const CURLOPT_FTPLISTONLY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTPPORT + */ +const CURLOPT_FTPPORT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTP_USE_EPRT + */ +const CURLOPT_FTP_USE_EPRT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTP_USE_EPSV + */ +const CURLOPT_FTP_USE_EPSV = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HEADER + */ +const CURLOPT_HEADER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HEADERFUNCTION + */ +const CURLOPT_HEADERFUNCTION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HTTP200ALIASES + */ +const CURLOPT_HTTP200ALIASES = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HTTPGET + */ +const CURLOPT_HTTPGET = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HTTPHEADER + */ +const CURLOPT_HTTPHEADER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HTTPPROXYTUNNEL + */ +const CURLOPT_HTTPPROXYTUNNEL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HTTP_VERSION + */ +const CURLOPT_HTTP_VERSION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_INFILE + */ +const CURLOPT_INFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_INFILESIZE + */ +const CURLOPT_INFILESIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_INTERFACE + */ +const CURLOPT_INTERFACE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_KRB4LEVEL + */ +const CURLOPT_KRB4LEVEL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_LOW_SPEED_LIMIT + */ +const CURLOPT_LOW_SPEED_LIMIT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_LOW_SPEED_TIME + */ +const CURLOPT_LOW_SPEED_TIME = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAXCONNECTS + */ +const CURLOPT_MAXCONNECTS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAXREDIRS + */ +const CURLOPT_MAXREDIRS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_NETRC + */ +const CURLOPT_NETRC = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_NOBODY + */ +const CURLOPT_NOBODY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_NOPROGRESS + */ +const CURLOPT_NOPROGRESS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_NOSIGNAL + */ +const CURLOPT_NOSIGNAL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PORT + */ +const CURLOPT_PORT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_POST + */ +const CURLOPT_POST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_POSTFIELDS + */ +const CURLOPT_POSTFIELDS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_POSTQUOTE + */ +const CURLOPT_POSTQUOTE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PREQUOTE + */ +const CURLOPT_PREQUOTE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PRIVATE + */ +const CURLOPT_PRIVATE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROGRESSFUNCTION + */ +const CURLOPT_PROGRESSFUNCTION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY + */ +const CURLOPT_PROXY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXYPORT + */ +const CURLOPT_PROXYPORT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXYTYPE + */ +const CURLOPT_PROXYTYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXYUSERPWD + */ +const CURLOPT_PROXYUSERPWD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PUT + */ +const CURLOPT_PUT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_QUOTE + */ +const CURLOPT_QUOTE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RANDOM_FILE + */ +const CURLOPT_RANDOM_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RANGE + */ +const CURLOPT_RANGE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_READDATA + */ +const CURLOPT_READDATA = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_READFUNCTION + */ +const CURLOPT_READFUNCTION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_REFERER + */ +const CURLOPT_REFERER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RESUME_FROM + */ +const CURLOPT_RESUME_FROM = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RETURNTRANSFER + */ +const CURLOPT_RETURNTRANSFER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SHARE + */ +const CURLOPT_SHARE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLCERT + */ +const CURLOPT_SSLCERT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLCERTPASSWD + */ +const CURLOPT_SSLCERTPASSWD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLCERTTYPE + */ +const CURLOPT_SSLCERTTYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLENGINE + */ +const CURLOPT_SSLENGINE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLENGINE_DEFAULT + */ +const CURLOPT_SSLENGINE_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLKEY + */ +const CURLOPT_SSLKEY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLKEYPASSWD + */ +const CURLOPT_SSLKEYPASSWD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLKEYTYPE + */ +const CURLOPT_SSLKEYTYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLVERSION + */ +const CURLOPT_SSLVERSION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_CIPHER_LIST + */ +const CURLOPT_SSL_CIPHER_LIST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_VERIFYHOST + */ +const CURLOPT_SSL_VERIFYHOST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_VERIFYPEER + */ +const CURLOPT_SSL_VERIFYPEER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_STDERR + */ +const CURLOPT_STDERR = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TELNETOPTIONS + */ +const CURLOPT_TELNETOPTIONS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TIMECONDITION + */ +const CURLOPT_TIMECONDITION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TIMEOUT + */ +const CURLOPT_TIMEOUT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TIMEVALUE + */ +const CURLOPT_TIMEVALUE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TRANSFERTEXT + */ +const CURLOPT_TRANSFERTEXT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_UNRESTRICTED_AUTH + */ +const CURLOPT_UNRESTRICTED_AUTH = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_UPLOAD + */ +const CURLOPT_UPLOAD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_URL + */ +const CURLOPT_URL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_USERAGENT + */ +const CURLOPT_USERAGENT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_USERPWD + */ +const CURLOPT_USERPWD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_VERBOSE + */ +const CURLOPT_VERBOSE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_WRITEFUNCTION + */ +const CURLOPT_WRITEFUNCTION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_WRITEHEADER + */ +const CURLOPT_WRITEHEADER = UNKNOWN; +#if LIBCURL_VERSION_NUM >= 0x072000 +/** + * @var int + * @cvalue CURLOPT_XFERINFOFUNCTION + */ +const CURLOPT_XFERINFOFUNCTION = UNKNOWN; +#endif + +/* */ +/** + * @var int + * @cvalue CURLE_ABORTED_BY_CALLBACK + */ +const CURLE_ABORTED_BY_CALLBACK = UNKNOWN; +/** + * @var int + * @cvalue CURLE_BAD_CALLING_ORDER + */ +const CURLE_BAD_CALLING_ORDER = UNKNOWN; +/** + * @var int + * @cvalue CURLE_BAD_CONTENT_ENCODING + */ +const CURLE_BAD_CONTENT_ENCODING = UNKNOWN; +/** + * @var int + * @cvalue CURLE_BAD_DOWNLOAD_RESUME + */ +const CURLE_BAD_DOWNLOAD_RESUME = UNKNOWN; +/** + * @var int + * @cvalue CURLE_BAD_FUNCTION_ARGUMENT + */ +const CURLE_BAD_FUNCTION_ARGUMENT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_BAD_PASSWORD_ENTERED + */ +const CURLE_BAD_PASSWORD_ENTERED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_COULDNT_CONNECT + */ +const CURLE_COULDNT_CONNECT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_COULDNT_RESOLVE_HOST + */ +const CURLE_COULDNT_RESOLVE_HOST = UNKNOWN; +/** + * @var int + * @cvalue CURLE_COULDNT_RESOLVE_PROXY + */ +const CURLE_COULDNT_RESOLVE_PROXY = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FAILED_INIT + */ +const CURLE_FAILED_INIT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FILE_COULDNT_READ_FILE + */ +const CURLE_FILE_COULDNT_READ_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_ACCESS_DENIED + */ +const CURLE_FTP_ACCESS_DENIED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_BAD_DOWNLOAD_RESUME + */ +const CURLE_FTP_BAD_DOWNLOAD_RESUME = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_CANT_GET_HOST + */ +const CURLE_FTP_CANT_GET_HOST = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_CANT_RECONNECT + */ +const CURLE_FTP_CANT_RECONNECT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_COULDNT_GET_SIZE + */ +const CURLE_FTP_COULDNT_GET_SIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_COULDNT_RETR_FILE + */ +const CURLE_FTP_COULDNT_RETR_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_COULDNT_SET_ASCII + */ +const CURLE_FTP_COULDNT_SET_ASCII = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_COULDNT_SET_BINARY + */ +const CURLE_FTP_COULDNT_SET_BINARY = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_COULDNT_STOR_FILE + */ +const CURLE_FTP_COULDNT_STOR_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_COULDNT_USE_REST + */ +const CURLE_FTP_COULDNT_USE_REST = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_PARTIAL_FILE + */ +const CURLE_FTP_PARTIAL_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_PORT_FAILED + */ +const CURLE_FTP_PORT_FAILED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_QUOTE_ERROR + */ +const CURLE_FTP_QUOTE_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_USER_PASSWORD_INCORRECT + */ +const CURLE_FTP_USER_PASSWORD_INCORRECT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_WEIRD_227_FORMAT + */ +const CURLE_FTP_WEIRD_227_FORMAT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_WEIRD_PASS_REPLY + */ +const CURLE_FTP_WEIRD_PASS_REPLY = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_WEIRD_PASV_REPLY + */ +const CURLE_FTP_WEIRD_PASV_REPLY = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_WEIRD_SERVER_REPLY + */ +const CURLE_FTP_WEIRD_SERVER_REPLY = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_WEIRD_USER_REPLY + */ +const CURLE_FTP_WEIRD_USER_REPLY = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FTP_WRITE_ERROR + */ +const CURLE_FTP_WRITE_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_FUNCTION_NOT_FOUND + */ +const CURLE_FUNCTION_NOT_FOUND = UNKNOWN; +/** + * @var int + * @cvalue CURLE_GOT_NOTHING + */ +const CURLE_GOT_NOTHING = UNKNOWN; +/** + * @var int + * @cvalue CURLE_HTTP_NOT_FOUND + */ +const CURLE_HTTP_NOT_FOUND = UNKNOWN; +/** + * @var int + * @cvalue CURLE_HTTP_PORT_FAILED + */ +const CURLE_HTTP_PORT_FAILED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_HTTP_POST_ERROR + */ +const CURLE_HTTP_POST_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_HTTP_RANGE_ERROR + */ +const CURLE_HTTP_RANGE_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_HTTP_RETURNED_ERROR + */ +const CURLE_HTTP_RETURNED_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_LDAP_CANNOT_BIND + */ +const CURLE_LDAP_CANNOT_BIND = UNKNOWN; +/** + * @var int + * @cvalue CURLE_LDAP_SEARCH_FAILED + */ +const CURLE_LDAP_SEARCH_FAILED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_LIBRARY_NOT_FOUND + */ +const CURLE_LIBRARY_NOT_FOUND = UNKNOWN; +/** + * @var int + * @cvalue CURLE_MALFORMAT_USER + */ +const CURLE_MALFORMAT_USER = UNKNOWN; +/** + * @var int + * @cvalue CURLE_OBSOLETE + */ +const CURLE_OBSOLETE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_OK + */ +const CURLE_OK = UNKNOWN; +/** + * @var int + * @cvalue CURLE_OPERATION_TIMEDOUT + */ +const CURLE_OPERATION_TIMEDOUT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_OPERATION_TIMEOUTED + */ +const CURLE_OPERATION_TIMEOUTED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_OUT_OF_MEMORY + */ +const CURLE_OUT_OF_MEMORY = UNKNOWN; +/** + * @var int + * @cvalue CURLE_PARTIAL_FILE + */ +const CURLE_PARTIAL_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_READ_ERROR + */ +const CURLE_READ_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_RECV_ERROR + */ +const CURLE_RECV_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SEND_ERROR + */ +const CURLE_SEND_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SHARE_IN_USE + */ +const CURLE_SHARE_IN_USE = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SSL_CACERT + */ +const CURLE_SSL_CACERT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SSL_CERTPROBLEM + */ +const CURLE_SSL_CERTPROBLEM = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SSL_CIPHER + */ +const CURLE_SSL_CIPHER = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SSL_CONNECT_ERROR + */ +const CURLE_SSL_CONNECT_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SSL_ENGINE_NOTFOUND + */ +const CURLE_SSL_ENGINE_NOTFOUND = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SSL_ENGINE_SETFAILED + */ +const CURLE_SSL_ENGINE_SETFAILED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_SSL_PEER_CERTIFICATE + */ +const CURLE_SSL_PEER_CERTIFICATE = UNKNOWN; +#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ +/** + * @var int + * @cvalue CURLE_SSL_PINNEDPUBKEYNOTMATCH + */ +const CURLE_SSL_PINNEDPUBKEYNOTMATCH = UNKNOWN; +#endif +/** + * @var int + * @cvalue CURLE_TELNET_OPTION_SYNTAX + */ +const CURLE_TELNET_OPTION_SYNTAX = UNKNOWN; +/** + * @var int + * @cvalue CURLE_TOO_MANY_REDIRECTS + */ +const CURLE_TOO_MANY_REDIRECTS = UNKNOWN; +/** + * @var int + * @cvalue CURLE_UNKNOWN_TELNET_OPTION + */ +const CURLE_UNKNOWN_TELNET_OPTION = UNKNOWN; +/** + * @var int + * @cvalue CURLE_UNSUPPORTED_PROTOCOL + */ +const CURLE_UNSUPPORTED_PROTOCOL = UNKNOWN; +/** + * @var int + * @cvalue CURLE_URL_MALFORMAT + */ +const CURLE_URL_MALFORMAT = UNKNOWN; +/** + * @var int + * @cvalue CURLE_URL_MALFORMAT_USER + */ +const CURLE_URL_MALFORMAT_USER = UNKNOWN; +/** + * @var int + * @cvalue CURLE_WRITE_ERROR + */ +const CURLE_WRITE_ERROR = UNKNOWN; + +/* cURL info constants */ +/** + * @var int + * @cvalue CURLINFO_CONNECT_TIME + */ +const CURLINFO_CONNECT_TIME = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_CONTENT_LENGTH_DOWNLOAD + */ +const CURLINFO_CONTENT_LENGTH_DOWNLOAD = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_CONTENT_LENGTH_UPLOAD + */ +const CURLINFO_CONTENT_LENGTH_UPLOAD = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_CONTENT_TYPE + */ +const CURLINFO_CONTENT_TYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_EFFECTIVE_URL + */ +const CURLINFO_EFFECTIVE_URL = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_FILETIME + */ +const CURLINFO_FILETIME = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_HEADER_OUT + */ +const CURLINFO_HEADER_OUT = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_HEADER_SIZE + */ +const CURLINFO_HEADER_SIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_HTTP_CODE + */ +const CURLINFO_HTTP_CODE = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_LASTONE + */ +const CURLINFO_LASTONE = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_NAMELOOKUP_TIME + */ +const CURLINFO_NAMELOOKUP_TIME = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PRETRANSFER_TIME + */ +const CURLINFO_PRETRANSFER_TIME = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PRIVATE + */ +const CURLINFO_PRIVATE = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_REDIRECT_COUNT + */ +const CURLINFO_REDIRECT_COUNT = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_REDIRECT_TIME + */ +const CURLINFO_REDIRECT_TIME = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_REQUEST_SIZE + */ +const CURLINFO_REQUEST_SIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SIZE_DOWNLOAD + */ +const CURLINFO_SIZE_DOWNLOAD = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SIZE_UPLOAD + */ +const CURLINFO_SIZE_UPLOAD = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SPEED_DOWNLOAD + */ +const CURLINFO_SPEED_DOWNLOAD = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SPEED_UPLOAD + */ +const CURLINFO_SPEED_UPLOAD = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SSL_VERIFYRESULT + */ +const CURLINFO_SSL_VERIFYRESULT = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_STARTTRANSFER_TIME + */ +const CURLINFO_STARTTRANSFER_TIME = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_TOTAL_TIME + */ +const CURLINFO_TOTAL_TIME = UNKNOWN; +#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */ +/** + * @var int + * @cvalue CURLINFO_EFFECTIVE_METHOD + */ +const CURLINFO_EFFECTIVE_METHOD = UNKNOWN; +#endif + +/* Other */ +/** + * @var int + * @cvalue CURLMSG_DONE + */ +const CURLMSG_DONE = UNKNOWN; +/** + * @var int + * @cvalue CURLVERSION_NOW + */ +const CURLVERSION_NOW = UNKNOWN; + +/* Curl Multi Constants */ +/** + * @var int + * @cvalue CURLM_BAD_EASY_HANDLE + */ +const CURLM_BAD_EASY_HANDLE = UNKNOWN; +/** + * @var int + * @cvalue CURLM_BAD_HANDLE + */ +const CURLM_BAD_HANDLE = UNKNOWN; +/** + * @var int + * @cvalue CURLM_CALL_MULTI_PERFORM + */ +const CURLM_CALL_MULTI_PERFORM = UNKNOWN; +/** + * @var int + * @cvalue CURLM_INTERNAL_ERROR + */ +const CURLM_INTERNAL_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLM_OK + */ +const CURLM_OK = UNKNOWN; +/** + * @var int + * @cvalue CURLM_OUT_OF_MEMORY + */ +const CURLM_OUT_OF_MEMORY = UNKNOWN; +#if LIBCURL_VERSION_NUM >= 0x072001 /* Available since 7.32.1 */ +/** + * @var int + * @cvalue CURLM_ADDED_ALREADY + */ +const CURLM_ADDED_ALREADY = UNKNOWN; +#endif + +/* Curl proxy constants */ +/** + * @var int + * @cvalue CURLPROXY_HTTP + */ +const CURLPROXY_HTTP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROXY_SOCKS4 + */ +const CURLPROXY_SOCKS4 = UNKNOWN; +/** + * @var int + * @cvalue CURLPROXY_SOCKS5 + */ +const CURLPROXY_SOCKS5 = UNKNOWN; + +/* Curl Share constants */ +/** + * @var int + * @cvalue CURLSHOPT_NONE + */ +const CURLSHOPT_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURLSHOPT_SHARE + */ +const CURLSHOPT_SHARE = UNKNOWN; +/** + * @var int + * @cvalue CURLSHOPT_UNSHARE + */ +const CURLSHOPT_UNSHARE = UNKNOWN; + +/* Curl Http Version constants (CURLOPT_HTTP_VERSION) */ +/** + * @var int + * @cvalue CURL_HTTP_VERSION_1_0 + */ +const CURL_HTTP_VERSION_1_0 = UNKNOWN; +/** + * @var int + * @cvalue CURL_HTTP_VERSION_1_1 + */ +const CURL_HTTP_VERSION_1_1 = UNKNOWN; +/** + * @var int + * @cvalue CURL_HTTP_VERSION_NONE + */ +const CURL_HTTP_VERSION_NONE = UNKNOWN; + +/* Curl Lock constants */ +/** + * @var int + * @cvalue CURL_LOCK_DATA_COOKIE + */ +const CURL_LOCK_DATA_COOKIE = UNKNOWN; +/** + * @var int + * @cvalue CURL_LOCK_DATA_DNS + */ +const CURL_LOCK_DATA_DNS = UNKNOWN; +/** + * @var int + * @cvalue CURL_LOCK_DATA_SSL_SESSION + */ +const CURL_LOCK_DATA_SSL_SESSION = UNKNOWN; + +/* Curl NETRC constants (CURLOPT_NETRC) */ +/** + * @var int + * @cvalue CURL_NETRC_IGNORED + */ +const CURL_NETRC_IGNORED = UNKNOWN; +/** + * @var int + * @cvalue CURL_NETRC_OPTIONAL + */ +const CURL_NETRC_OPTIONAL = UNKNOWN; +/** + * @var int + * @cvalue CURL_NETRC_REQUIRED + */ +const CURL_NETRC_REQUIRED = UNKNOWN; + +/* Curl SSL Version constants (CURLOPT_SSLVERSION) */ +/** + * @var int + * @cvalue CURL_SSLVERSION_DEFAULT + */ +const CURL_SSLVERSION_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_SSLv2 + */ +const CURL_SSLVERSION_SSLv2 = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_SSLv3 + */ +const CURL_SSLVERSION_SSLv3 = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_TLSv1 + */ +const CURL_SSLVERSION_TLSv1 = UNKNOWN; + +/* Curl TIMECOND constants (CURLOPT_TIMECONDITION) */ +/** + * @var int + * @cvalue CURL_TIMECOND_IFMODSINCE + */ +const CURL_TIMECOND_IFMODSINCE = UNKNOWN; +/** + * @var int + * @cvalue CURL_TIMECOND_IFUNMODSINCE + */ +const CURL_TIMECOND_IFUNMODSINCE = UNKNOWN; +/** + * @var int + * @cvalue CURL_TIMECOND_LASTMOD + */ +const CURL_TIMECOND_LASTMOD = UNKNOWN; +/** + * @var int + * @cvalue CURL_TIMECOND_NONE + */ +const CURL_TIMECOND_NONE = UNKNOWN; + +/* Curl version constants */ +/** + * @var int + * @cvalue CURL_VERSION_ASYNCHDNS + */ +const CURL_VERSION_ASYNCHDNS = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_CONV + */ +const CURL_VERSION_CONV = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_DEBUG + */ +const CURL_VERSION_DEBUG = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_GSSNEGOTIATE + */ +const CURL_VERSION_GSSNEGOTIATE = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_IDN + */ +const CURL_VERSION_IDN = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_IPV6 + */ +const CURL_VERSION_IPV6 = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_KERBEROS4 + */ +const CURL_VERSION_KERBEROS4 = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_LARGEFILE + */ +const CURL_VERSION_LARGEFILE = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_LIBZ + */ +const CURL_VERSION_LIBZ = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_NTLM + */ +const CURL_VERSION_NTLM = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_SPNEGO + */ +const CURL_VERSION_SPNEGO = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_SSL + */ +const CURL_VERSION_SSL = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_SSPI + */ +const CURL_VERSION_SSPI = UNKNOWN; + +/* Available since 7.10.6 */ +/** + * @var int + * @cvalue CURLOPT_HTTPAUTH + */ +const CURLOPT_HTTPAUTH = UNKNOWN; +/* http authentication options */ +/** + * @var int + * @cvalue CURLAUTH_ANY + */ +const CURLAUTH_ANY = UNKNOWN; +/** + * @var int + * @cvalue CURLAUTH_ANYSAFE + */ +const CURLAUTH_ANYSAFE = UNKNOWN; +/** + * @var int + * @cvalue CURLAUTH_BASIC + */ +const CURLAUTH_BASIC = UNKNOWN; +/** + * @var int + * @cvalue CURLAUTH_DIGEST + */ +const CURLAUTH_DIGEST = UNKNOWN; +/** + * @var int + * @cvalue CURLAUTH_GSSNEGOTIATE + */ +const CURLAUTH_GSSNEGOTIATE = UNKNOWN; +/** + * @var int + * @cvalue CURLAUTH_NONE + */ +const CURLAUTH_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURLAUTH_NTLM + */ +const CURLAUTH_NTLM = UNKNOWN; + +/* Available since 7.10.7 */ +/** + * @var int + * @cvalue CURLINFO_HTTP_CONNECTCODE + */ +const CURLINFO_HTTP_CONNECTCODE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTP_CREATE_MISSING_DIRS + */ +const CURLOPT_FTP_CREATE_MISSING_DIRS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXYAUTH + */ +const CURLOPT_PROXYAUTH = UNKNOWN; + +/* Available since 7.10.8 */ +/** + * @var int + * @cvalue CURLE_FILESIZE_EXCEEDED + */ +const CURLE_FILESIZE_EXCEEDED = UNKNOWN; +/** + * @var int + * @cvalue CURLE_LDAP_INVALID_URL + */ +const CURLE_LDAP_INVALID_URL = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_HTTPAUTH_AVAIL + */ +const CURLINFO_HTTPAUTH_AVAIL = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_RESPONSE_CODE + */ +const CURLINFO_RESPONSE_CODE = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PROXYAUTH_AVAIL + */ +const CURLINFO_PROXYAUTH_AVAIL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTP_RESPONSE_TIMEOUT + */ +const CURLOPT_FTP_RESPONSE_TIMEOUT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_IPRESOLVE + */ +const CURLOPT_IPRESOLVE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAXFILESIZE + */ +const CURLOPT_MAXFILESIZE = UNKNOWN; +/** + * @var int + * @cvalue CURL_IPRESOLVE_V4 + */ +const CURL_IPRESOLVE_V4 = UNKNOWN; +/** + * @var int + * @cvalue CURL_IPRESOLVE_V6 + */ +const CURL_IPRESOLVE_V6 = UNKNOWN; +/** + * @var int + * @cvalue CURL_IPRESOLVE_WHATEVER + */ +const CURL_IPRESOLVE_WHATEVER = UNKNOWN; + +/* Available since 7.11.0 */ +/** + * @var int + * @cvalue CURLE_FTP_SSL_FAILED + */ +const CURLE_FTP_SSL_FAILED = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPSSL_ALL + */ +const CURLFTPSSL_ALL = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPSSL_CONTROL + */ +const CURLFTPSSL_CONTROL = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPSSL_NONE + */ +const CURLFTPSSL_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPSSL_TRY + */ +const CURLFTPSSL_TRY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTP_SSL + */ +const CURLOPT_FTP_SSL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_NETRC_FILE + */ +const CURLOPT_NETRC_FILE = UNKNOWN; + +/* Available since 7.11.1 */ +/** + * @var int + * @cvalue CURLOPT_MAXFILESIZE_LARGE + */ +const CURLOPT_MAXFILESIZE_LARGE = UNKNOWN; + +/* Available since 7.11.2 */ +/** + * @var int + * @cvalue CURLOPT_TCP_NODELAY + */ +const CURLOPT_TCP_NODELAY = UNKNOWN; + +/* Available since 7.12.2 */ +/** + * @var int + * @cvalue CURLFTPAUTH_DEFAULT + */ +const CURLFTPAUTH_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPAUTH_SSL + */ +const CURLFTPAUTH_SSL = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPAUTH_TLS + */ +const CURLFTPAUTH_TLS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTPSSLAUTH + */ +const CURLOPT_FTPSSLAUTH = UNKNOWN; + +/* Available since 7.13.0 */ +/** + * @var int + * @cvalue CURLOPT_FTP_ACCOUNT + */ +const CURLOPT_FTP_ACCOUNT = UNKNOWN; + +/* Available since 7.12.2 */ +/** + * @var int + * @cvalue CURLINFO_OS_ERRNO + */ +const CURLINFO_OS_ERRNO = UNKNOWN; + +/* Available since 7.12.3 */ +/** + * @var int + * @cvalue CURLINFO_NUM_CONNECTS + */ +const CURLINFO_NUM_CONNECTS = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SSL_ENGINES + */ +const CURLINFO_SSL_ENGINES = UNKNOWN; + +/* Available since 7.14.1 */ +/** + * @var int + * @cvalue CURLINFO_COOKIELIST + */ +const CURLINFO_COOKIELIST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_COOKIELIST + */ +const CURLOPT_COOKIELIST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_IGNORE_CONTENT_LENGTH + */ +const CURLOPT_IGNORE_CONTENT_LENGTH = UNKNOWN; + +/* Available since 7.15.0 */ +/** + * @var int + * @cvalue CURLOPT_FTP_SKIP_PASV_IP + */ +const CURLOPT_FTP_SKIP_PASV_IP = UNKNOWN; + +/* Available since 7.15.1 */ +/** + * @var int + * @cvalue CURLOPT_FTP_FILEMETHOD + */ +const CURLOPT_FTP_FILEMETHOD = UNKNOWN; + +/* Available since 7.15.2 */ +/** + * @var int + * @cvalue CURLOPT_CONNECT_ONLY + */ +const CURLOPT_CONNECT_ONLY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_LOCALPORT + */ +const CURLOPT_LOCALPORT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_LOCALPORTRANGE + */ +const CURLOPT_LOCALPORTRANGE = UNKNOWN; + +/* Available since 7.15.3 */ +/** + * @var int + * @cvalue CURLFTPMETHOD_DEFAULT + */ +const CURLFTPMETHOD_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPMETHOD_MULTICWD + */ +const CURLFTPMETHOD_MULTICWD = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPMETHOD_NOCWD + */ +const CURLFTPMETHOD_NOCWD = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPMETHOD_SINGLECWD + */ +const CURLFTPMETHOD_SINGLECWD = UNKNOWN; + +/* Available since 7.15.4 */ +/** + * @var int + * @cvalue CURLINFO_FTP_ENTRY_PATH + */ +const CURLINFO_FTP_ENTRY_PATH = UNKNOWN; + +/* Available since 7.15.5 */ +/** + * @var int + * @cvalue CURLOPT_FTP_ALTERNATIVE_TO_USER + */ +const CURLOPT_FTP_ALTERNATIVE_TO_USER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAX_RECV_SPEED_LARGE + */ +const CURLOPT_MAX_RECV_SPEED_LARGE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAX_SEND_SPEED_LARGE + */ +const CURLOPT_MAX_SEND_SPEED_LARGE = UNKNOWN; + +/* Available since 7.16.0 */ +/** + * @var int + * @cvalue CURLE_SSL_CACERT_BADFILE + */ +const CURLE_SSL_CACERT_BADFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_SESSIONID_CACHE + */ +const CURLOPT_SSL_SESSIONID_CACHE = UNKNOWN; +/** + * @var int + * @cvalue CURLMOPT_PIPELINING + */ +const CURLMOPT_PIPELINING = UNKNOWN; + +/* Available since 7.16.1 */ +/** + * @var int + * @cvalue CURLE_SSH + */ +const CURLE_SSH = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTP_SSL_CCC + */ +const CURLOPT_FTP_SSL_CCC = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSH_AUTH_TYPES + */ +const CURLOPT_SSH_AUTH_TYPES = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSH_PRIVATE_KEYFILE + */ +const CURLOPT_SSH_PRIVATE_KEYFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSH_PUBLIC_KEYFILE + */ +const CURLOPT_SSH_PUBLIC_KEYFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPSSL_CCC_ACTIVE + */ +const CURLFTPSSL_CCC_ACTIVE = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPSSL_CCC_NONE + */ +const CURLFTPSSL_CCC_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURLFTPSSL_CCC_PASSIVE + */ +const CURLFTPSSL_CCC_PASSIVE = UNKNOWN; + +/* Available since 7.16.2 */ +/** + * @var int + * @cvalue CURLOPT_CONNECTTIMEOUT_MS + */ +const CURLOPT_CONNECTTIMEOUT_MS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HTTP_CONTENT_DECODING + */ +const CURLOPT_HTTP_CONTENT_DECODING = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HTTP_TRANSFER_DECODING + */ +const CURLOPT_HTTP_TRANSFER_DECODING = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TIMEOUT_MS + */ +const CURLOPT_TIMEOUT_MS = UNKNOWN; + +/* Available since 7.16.3 */ +/** + * @var int + * @cvalue CURLMOPT_MAXCONNECTS + */ +const CURLMOPT_MAXCONNECTS = UNKNOWN; + +/* Available since 7.16.4 */ +/** + * @var int + * @cvalue CURLOPT_KRBLEVEL + */ +const CURLOPT_KRBLEVEL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_NEW_DIRECTORY_PERMS + */ +const CURLOPT_NEW_DIRECTORY_PERMS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_NEW_FILE_PERMS + */ +const CURLOPT_NEW_FILE_PERMS = UNKNOWN; + +/* Available since 7.17.0 */ +/** + * @var int + * @cvalue CURLOPT_APPEND + */ +const CURLOPT_APPEND = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DIRLISTONLY + */ +const CURLOPT_DIRLISTONLY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_USE_SSL + */ +const CURLOPT_USE_SSL = UNKNOWN; +/* Curl SSL Constants */ +/** + * @var int + * @cvalue CURLUSESSL_ALL + */ +const CURLUSESSL_ALL = UNKNOWN; +/** + * @var int + * @cvalue CURLUSESSL_CONTROL + */ +const CURLUSESSL_CONTROL = UNKNOWN; +/** + * @var int + * @cvalue CURLUSESSL_NONE + */ +const CURLUSESSL_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURLUSESSL_TRY + */ +const CURLUSESSL_TRY = UNKNOWN; + +/* Available since 7.17.1 */ +/** + * @var int + * @cvalue CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 + */ +const CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 = UNKNOWN; + +/* Available since 7.18.0 */ +/** + * @var int + * @cvalue CURLOPT_PROXY_TRANSFER_MODE + */ +const CURLOPT_PROXY_TRANSFER_MODE = UNKNOWN; +/** + * @var int + * @cvalue CURLPAUSE_ALL + */ +const CURLPAUSE_ALL = UNKNOWN; +/** + * @var int + * @cvalue CURLPAUSE_CONT + */ +const CURLPAUSE_CONT = UNKNOWN; +/** + * @var int + * @cvalue CURLPAUSE_RECV + */ +const CURLPAUSE_RECV = UNKNOWN; +/** + * @var int + * @cvalue CURLPAUSE_RECV_CONT + */ +const CURLPAUSE_RECV_CONT = UNKNOWN; +/** + * @var int + * @cvalue CURLPAUSE_SEND + */ +const CURLPAUSE_SEND = UNKNOWN; +/** + * @var int + * @cvalue CURLPAUSE_SEND_CONT + */ +const CURLPAUSE_SEND_CONT = UNKNOWN; +/** + * @var int + * @cvalue CURL_READFUNC_PAUSE + */ +const CURL_READFUNC_PAUSE = UNKNOWN; +/** + * @var int + * @cvalue CURL_WRITEFUNC_PAUSE + */ +const CURL_WRITEFUNC_PAUSE = UNKNOWN; + +/** + * @var int + * @cvalue CURLPROXY_SOCKS4A + */ +const CURLPROXY_SOCKS4A = UNKNOWN; +/** + * @var int + * @cvalue CURLPROXY_SOCKS5_HOSTNAME + */ +const CURLPROXY_SOCKS5_HOSTNAME = UNKNOWN; + +/* Available since 7.18.2 */ +/** + * @var int + * @cvalue CURLINFO_REDIRECT_URL + */ +const CURLINFO_REDIRECT_URL = UNKNOWN; + +/* Available since 7.19.0 */ +/** + * @var int + * @cvalue CURLINFO_APPCONNECT_TIME + */ +const CURLINFO_APPCONNECT_TIME = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PRIMARY_IP + */ +const CURLINFO_PRIMARY_IP = UNKNOWN; + +/** + * @var int + * @cvalue CURLOPT_ADDRESS_SCOPE + */ +const CURLOPT_ADDRESS_SCOPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CRLFILE + */ +const CURLOPT_CRLFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_ISSUERCERT + */ +const CURLOPT_ISSUERCERT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_KEYPASSWD + */ +const CURLOPT_KEYPASSWD = UNKNOWN; + +/** + * @var int + * @cvalue CURLSSH_AUTH_ANY + */ +const CURLSSH_AUTH_ANY = UNKNOWN; +/** + * @var int + * @cvalue CURLSSH_AUTH_DEFAULT + */ +const CURLSSH_AUTH_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue CURLSSH_AUTH_HOST + */ +const CURLSSH_AUTH_HOST = UNKNOWN; +/** + * @var int + * @cvalue CURLSSH_AUTH_KEYBOARD + */ +const CURLSSH_AUTH_KEYBOARD = UNKNOWN; +/** + * @var int + * @cvalue CURLSSH_AUTH_NONE + */ +const CURLSSH_AUTH_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURLSSH_AUTH_PASSWORD + */ +const CURLSSH_AUTH_PASSWORD = UNKNOWN; +/** + * @var int + * @cvalue CURLSSH_AUTH_PUBLICKEY + */ +const CURLSSH_AUTH_PUBLICKEY = UNKNOWN; + +/* Available since 7.19.1 */ +/** + * @var int + * @cvalue CURLINFO_CERTINFO + */ +const CURLINFO_CERTINFO = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CERTINFO + */ +const CURLOPT_CERTINFO = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PASSWORD + */ +const CURLOPT_PASSWORD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_POSTREDIR + */ +const CURLOPT_POSTREDIR = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXYPASSWORD + */ +const CURLOPT_PROXYPASSWORD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXYUSERNAME + */ +const CURLOPT_PROXYUSERNAME = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_USERNAME + */ +const CURLOPT_USERNAME = UNKNOWN; +/** + * @var int + * @cvalue CURL_REDIR_POST_301 + */ +const CURL_REDIR_POST_301 = UNKNOWN; +/** + * @var int + * @cvalue CURL_REDIR_POST_302 + */ +const CURL_REDIR_POST_302 = UNKNOWN; +/** + * @var int + * @cvalue CURL_REDIR_POST_ALL + */ +const CURL_REDIR_POST_ALL = UNKNOWN; + +/* Available since 7.19.3 */ +/** + * @var int + * @cvalue CURLAUTH_DIGEST_IE + */ +const CURLAUTH_DIGEST_IE = UNKNOWN; + +/* Available since 7.19.4 */ +/** + * @var int + * @cvalue CURLINFO_CONDITION_UNMET + */ +const CURLINFO_CONDITION_UNMET = UNKNOWN; + +/** + * @var int + * @cvalue CURLOPT_NOPROXY + */ +const CURLOPT_NOPROXY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROTOCOLS + */ +const CURLOPT_PROTOCOLS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_REDIR_PROTOCOLS + */ +const CURLOPT_REDIR_PROTOCOLS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SOCKS5_GSSAPI_NEC + */ +const CURLOPT_SOCKS5_GSSAPI_NEC = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SOCKS5_GSSAPI_SERVICE + */ +const CURLOPT_SOCKS5_GSSAPI_SERVICE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TFTP_BLKSIZE + */ +const CURLOPT_TFTP_BLKSIZE = UNKNOWN; + +/** + * @var int + * @cvalue CURLPROTO_ALL + */ +const CURLPROTO_ALL = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_DICT + */ +const CURLPROTO_DICT = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_FILE + */ +const CURLPROTO_FILE = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_FTP + */ +const CURLPROTO_FTP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_FTPS + */ +const CURLPROTO_FTPS = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_HTTP + */ +const CURLPROTO_HTTP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_HTTPS + */ +const CURLPROTO_HTTPS = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_LDAP + */ +const CURLPROTO_LDAP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_LDAPS + */ +const CURLPROTO_LDAPS = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_SCP + */ +const CURLPROTO_SCP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_SFTP + */ +const CURLPROTO_SFTP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_TELNET + */ +const CURLPROTO_TELNET = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_TFTP + */ +const CURLPROTO_TFTP = UNKNOWN; + +/** + * @var int + * @cvalue CURLPROXY_HTTP_1_0 + */ +const CURLPROXY_HTTP_1_0 = UNKNOWN; + +/** + * @var int + * @cvalue CURLFTP_CREATE_DIR + */ +const CURLFTP_CREATE_DIR = UNKNOWN; +/** + * @var int + * @cvalue CURLFTP_CREATE_DIR_NONE + */ +const CURLFTP_CREATE_DIR_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURLFTP_CREATE_DIR_RETRY + */ +const CURLFTP_CREATE_DIR_RETRY = UNKNOWN; + +/* Available since 7.19.6 */ +/** + * @var int + * @cvalue CURL_VERSION_CURLDEBUG + */ +const CURL_VERSION_CURLDEBUG = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSH_KNOWNHOSTS + */ +const CURLOPT_SSH_KNOWNHOSTS = UNKNOWN; + +/* Available since 7.20.0 */ +/** + * @var int + * @cvalue CURLINFO_RTSP_CLIENT_CSEQ + */ +const CURLINFO_RTSP_CLIENT_CSEQ = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_RTSP_CSEQ_RECV + */ +const CURLINFO_RTSP_CSEQ_RECV = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_RTSP_SERVER_CSEQ + */ +const CURLINFO_RTSP_SERVER_CSEQ = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_RTSP_SESSION_ID + */ +const CURLINFO_RTSP_SESSION_ID = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FTP_USE_PRET + */ +const CURLOPT_FTP_USE_PRET = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAIL_FROM + */ +const CURLOPT_MAIL_FROM = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_MAIL_RCPT + */ +const CURLOPT_MAIL_RCPT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RTSP_CLIENT_CSEQ + */ +const CURLOPT_RTSP_CLIENT_CSEQ = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RTSP_REQUEST + */ +const CURLOPT_RTSP_REQUEST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RTSP_SERVER_CSEQ + */ +const CURLOPT_RTSP_SERVER_CSEQ = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RTSP_SESSION_ID + */ +const CURLOPT_RTSP_SESSION_ID = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RTSP_STREAM_URI + */ +const CURLOPT_RTSP_STREAM_URI = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RTSP_TRANSPORT + */ +const CURLOPT_RTSP_TRANSPORT = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_IMAP + */ +const CURLPROTO_IMAP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_IMAPS + */ +const CURLPROTO_IMAPS = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_POP3 + */ +const CURLPROTO_POP3 = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_POP3S + */ +const CURLPROTO_POP3S = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_RTSP + */ +const CURLPROTO_RTSP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_SMTP + */ +const CURLPROTO_SMTP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_SMTPS + */ +const CURLPROTO_SMTPS = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_ANNOUNCE + */ +const CURL_RTSPREQ_ANNOUNCE = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_DESCRIBE + */ +const CURL_RTSPREQ_DESCRIBE = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_GET_PARAMETER + */ +const CURL_RTSPREQ_GET_PARAMETER = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_OPTIONS + */ +const CURL_RTSPREQ_OPTIONS = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_PAUSE + */ +const CURL_RTSPREQ_PAUSE = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_PLAY + */ +const CURL_RTSPREQ_PLAY = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_RECEIVE + */ +const CURL_RTSPREQ_RECEIVE = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_RECORD + */ +const CURL_RTSPREQ_RECORD = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_SET_PARAMETER + */ +const CURL_RTSPREQ_SET_PARAMETER = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_SETUP + */ +const CURL_RTSPREQ_SETUP = UNKNOWN; +/** + * @var int + * @cvalue CURL_RTSPREQ_TEARDOWN + */ +const CURL_RTSPREQ_TEARDOWN = UNKNOWN; + +/* Available since 7.21.0 */ +/** + * @var int + * @cvalue CURLINFO_LOCAL_IP + */ +const CURLINFO_LOCAL_IP = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_LOCAL_PORT + */ +const CURLINFO_LOCAL_PORT = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PRIMARY_PORT + */ +const CURLINFO_PRIMARY_PORT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_FNMATCH_FUNCTION + */ +const CURLOPT_FNMATCH_FUNCTION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_WILDCARDMATCH + */ +const CURLOPT_WILDCARDMATCH = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_RTMP + */ +const CURLPROTO_RTMP = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_RTMPE + */ +const CURLPROTO_RTMPE = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_RTMPS + */ +const CURLPROTO_RTMPS = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_RTMPT + */ +const CURLPROTO_RTMPT = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_RTMPTE + */ +const CURLPROTO_RTMPTE = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_RTMPTS + */ +const CURLPROTO_RTMPTS = UNKNOWN; +/** + * @var int + * @cvalue CURL_FNMATCHFUNC_FAIL + */ +const CURL_FNMATCHFUNC_FAIL = UNKNOWN; +/** + * @var int + * @cvalue CURL_FNMATCHFUNC_MATCH + */ +const CURL_FNMATCHFUNC_MATCH = UNKNOWN; +/** + * @var int + * @cvalue CURL_FNMATCHFUNC_NOMATCH + */ +const CURL_FNMATCHFUNC_NOMATCH = UNKNOWN; + +/* Available since 7.21.2 */ +/** + * @var int + * @cvalue CURLPROTO_GOPHER + */ +const CURLPROTO_GOPHER = UNKNOWN; + +/* Available since 7.21.3 */ +/** + * @var int + * @cvalue CURLAUTH_ONLY + */ +const CURLAUTH_ONLY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_RESOLVE + */ +const CURLOPT_RESOLVE = UNKNOWN; + +/* Available since 7.21.4 */ +/** + * @var int + * @cvalue CURLOPT_TLSAUTH_PASSWORD + */ +const CURLOPT_TLSAUTH_PASSWORD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TLSAUTH_TYPE + */ +const CURLOPT_TLSAUTH_TYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TLSAUTH_USERNAME + */ +const CURLOPT_TLSAUTH_USERNAME = UNKNOWN; +/** + * @var int + * @cvalue CURL_TLSAUTH_SRP + */ +const CURL_TLSAUTH_SRP = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_TLSAUTH_SRP + */ +const CURL_VERSION_TLSAUTH_SRP = UNKNOWN; + +/* Available since 7.21.6 */ +/** + * @var int + * @cvalue CURLOPT_ACCEPT_ENCODING + */ +const CURLOPT_ACCEPT_ENCODING = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TRANSFER_ENCODING + */ +const CURLOPT_TRANSFER_ENCODING = UNKNOWN; + +/* Available since 7.22.0 */ +/** + * @var int + * @cvalue CURLAUTH_NTLM_WB + */ +const CURLAUTH_NTLM_WB = UNKNOWN; +/** + * @var int + * @cvalue CURLGSSAPI_DELEGATION_FLAG + */ +const CURLGSSAPI_DELEGATION_FLAG = UNKNOWN; +/** + * @var int + * @cvalue CURLGSSAPI_DELEGATION_POLICY_FLAG + */ +const CURLGSSAPI_DELEGATION_POLICY_FLAG = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_GSSAPI_DELEGATION + */ +const CURLOPT_GSSAPI_DELEGATION = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_NTLM_WB + */ +const CURL_VERSION_NTLM_WB = UNKNOWN; + +/* Available since 7.24.0 */ +/** + * @var int + * @cvalue CURLOPT_ACCEPTTIMEOUT_MS + */ +const CURLOPT_ACCEPTTIMEOUT_MS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DNS_SERVERS + */ +const CURLOPT_DNS_SERVERS = UNKNOWN; + +/* Available since 7.25.0 */ +/** + * @var int + * @cvalue CURLOPT_MAIL_AUTH + */ +const CURLOPT_MAIL_AUTH = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_OPTIONS + */ +const CURLOPT_SSL_OPTIONS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TCP_KEEPALIVE + */ +const CURLOPT_TCP_KEEPALIVE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TCP_KEEPIDLE + */ +const CURLOPT_TCP_KEEPIDLE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TCP_KEEPINTVL + */ +const CURLOPT_TCP_KEEPINTVL = UNKNOWN; +/** + * @var int + * @cvalue CURLSSLOPT_ALLOW_BEAST + */ +const CURLSSLOPT_ALLOW_BEAST = UNKNOWN; + +/* Available since 7.25.1 */ +/** + * @var int + * @cvalue CURL_REDIR_POST_303 + */ +const CURL_REDIR_POST_303 = UNKNOWN; + +/* Available since 7.28.0 */ +/** + * @var int + * @cvalue CURLSSH_AUTH_AGENT + */ +const CURLSSH_AUTH_AGENT = UNKNOWN; + +#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ +/** + * @var int + * @cvalue CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE + */ +const CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE + */ +const CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLMOPT_MAX_HOST_CONNECTIONS + */ +const CURLMOPT_MAX_HOST_CONNECTIONS = UNKNOWN; +/** + * @var int + * @cvalue CURLMOPT_MAX_PIPELINE_LENGTH + */ +const CURLMOPT_MAX_PIPELINE_LENGTH = UNKNOWN; +/** + * @var int + * @cvalue CURLMOPT_MAX_TOTAL_CONNECTIONS + */ +const CURLMOPT_MAX_TOTAL_CONNECTIONS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x071f00 /* Available since 7.31.0 */ +/** + * @var int + * @cvalue CURLOPT_SASL_IR + */ +const CURLOPT_SASL_IR = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ +/** + * @var int + * @cvalue CURLOPT_DNS_INTERFACE + */ +const CURLOPT_DNS_INTERFACE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DNS_LOCAL_IP4 + */ +const CURLOPT_DNS_LOCAL_IP4 = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DNS_LOCAL_IP6 + */ +const CURLOPT_DNS_LOCAL_IP6 = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_XOAUTH2_BEARER + */ +const CURLOPT_XOAUTH2_BEARER = UNKNOWN; + +/** + * @var int + * @cvalue CURL_HTTP_VERSION_2_0 + */ +const CURL_HTTP_VERSION_2_0 = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_HTTP2 + */ +const CURL_VERSION_HTTP2 = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */ +/** + * @var int + * @cvalue CURLOPT_LOGIN_OPTIONS + */ +const CURLOPT_LOGIN_OPTIONS = UNKNOWN; + +/** + * @var int + * @cvalue CURL_SSLVERSION_TLSv1_0 + */ +const CURL_SSLVERSION_TLSv1_0 = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_TLSv1_1 + */ +const CURL_SSLVERSION_TLSv1_1 = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_TLSv1_2 + */ +const CURL_SSLVERSION_TLSv1_2 = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072400 /* Available since 7.36.0 */ +/** + * @var int + * @cvalue CURLOPT_EXPECT_100_TIMEOUT_MS + */ +const CURLOPT_EXPECT_100_TIMEOUT_MS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_ENABLE_ALPN + */ +const CURLOPT_SSL_ENABLE_ALPN = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_ENABLE_NPN + */ +const CURLOPT_SSL_ENABLE_NPN = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ +/** + * @var int + * @cvalue CURLHEADER_SEPARATE + */ +const CURLHEADER_SEPARATE = UNKNOWN; +/** + * @var int + * @cvalue CURLHEADER_UNIFIED + */ +const CURLHEADER_UNIFIED = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HEADEROPT + */ +const CURLOPT_HEADEROPT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXYHEADER + */ +const CURLOPT_PROXYHEADER = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072600 /* Available since 7.38.0 */ +/** + * @var int + * @cvalue CURLAUTH_NEGOTIATE + */ +const CURLAUTH_NEGOTIATE = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_GSSAPI + */ +const CURL_VERSION_GSSAPI = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ +/** + * @var int + * @cvalue CURLOPT_PINNEDPUBLICKEY + */ +const CURLOPT_PINNEDPUBLICKEY = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ +/** + * @var int + * @cvalue CURLOPT_UNIX_SOCKET_PATH + */ +const CURLOPT_UNIX_SOCKET_PATH = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_SMB + */ +const CURLPROTO_SMB = UNKNOWN; +/** + * @var int + * @cvalue CURLPROTO_SMBS + */ +const CURLPROTO_SMBS = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_KERBEROS5 + */ +const CURL_VERSION_KERBEROS5 = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_UNIX_SOCKETS + */ +const CURL_VERSION_UNIX_SOCKETS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072900 /* Available since 7.41.0 */ +/** + * @var int + * @cvalue CURLOPT_SSL_VERIFYSTATUS + */ +const CURLOPT_SSL_VERIFYSTATUS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072a00 /* Available since 7.42.0 */ +/** + * @var int + * @cvalue CURLOPT_PATH_AS_IS + */ +const CURLOPT_PATH_AS_IS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_FALSESTART + */ +const CURLOPT_SSL_FALSESTART = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ +/** + * @var int + * @cvalue CURL_HTTP_VERSION_2 + */ +const CURL_HTTP_VERSION_2 = UNKNOWN; + +/** + * @var int + * @cvalue CURLOPT_PIPEWAIT + */ +const CURLOPT_PIPEWAIT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SERVICE_NAME + */ +const CURLOPT_PROXY_SERVICE_NAME = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SERVICE_NAME + */ +const CURLOPT_SERVICE_NAME = UNKNOWN; + +/** + * @var int + * @cvalue CURLPIPE_NOTHING + */ +const CURLPIPE_NOTHING = UNKNOWN; +/** + * @var int + * @cvalue CURLPIPE_HTTP1 + */ +const CURLPIPE_HTTP1 = UNKNOWN; +/** + * @var int + * @cvalue CURLPIPE_MULTIPLEX + */ +const CURLPIPE_MULTIPLEX = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072c00 /* Available since 7.44.0 */ +/** + * @var int + * @cvalue CURLSSLOPT_NO_REVOKE + */ +const CURLSSLOPT_NO_REVOKE = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072d00 /* Available since 7.45.0 */ +/** + * @var int + * @cvalue CURLOPT_DEFAULT_PROTOCOL + */ +const CURLOPT_DEFAULT_PROTOCOL = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072e00 /* Available since 7.46.0 */ +/** + * @var int + * @cvalue CURLOPT_STREAM_WEIGHT + */ +const CURLOPT_STREAM_WEIGHT = UNKNOWN; +/** + * @var int + * @cvalue CURLMOPT_PUSHFUNCTION + */ +const CURLMOPT_PUSHFUNCTION = UNKNOWN; +/** + * @var int + * @cvalue CURL_PUSH_OK + */ +const CURL_PUSH_OK = UNKNOWN; +/** + * @var int + * @cvalue CURL_PUSH_DENY + */ +const CURL_PUSH_DENY = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x072f00 /* Available since 7.47.0 */ +/** + * @var int + * @cvalue CURL_HTTP_VERSION_2TLS + */ +const CURL_HTTP_VERSION_2TLS = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_PSL + */ +const CURL_VERSION_PSL = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073000 /* Available since 7.48.0 */ +/** + * @var int + * @cvalue CURLOPT_TFTP_NO_OPTIONS + */ +const CURLOPT_TFTP_NO_OPTIONS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */ +/** + * @var int + * @cvalue CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE + */ +const CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_CONNECT_TO + */ +const CURLOPT_CONNECT_TO = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TCP_FASTOPEN + */ +const CURLOPT_TCP_FASTOPEN = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */ +/** + * @var int + * @cvalue CURLINFO_HTTP_VERSION + */ +const CURLINFO_HTTP_VERSION = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */ +/** + * @var int + * @cvalue CURLE_WEIRD_SERVER_REPLY + */ +const CURLE_WEIRD_SERVER_REPLY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_KEEP_SENDING_ON_ERROR + */ +const CURLOPT_KEEP_SENDING_ON_ERROR = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ +/** + * @var int + * @cvalue CURL_SSLVERSION_TLSv1_3 + */ +const CURL_SSLVERSION_TLSv1_3 = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_HTTPS_PROXY + */ +const CURL_VERSION_HTTPS_PROXY = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PROTOCOL + */ +const CURLINFO_PROTOCOL = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PROXY_SSL_VERIFYRESULT + */ +const CURLINFO_PROXY_SSL_VERIFYRESULT = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SCHEME + */ +const CURLINFO_SCHEME = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PRE_PROXY + */ +const CURLOPT_PRE_PROXY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_CAINFO + */ +const CURLOPT_PROXY_CAINFO = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_CAPATH + */ +const CURLOPT_PROXY_CAPATH = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_CRLFILE + */ +const CURLOPT_PROXY_CRLFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_KEYPASSWD + */ +const CURLOPT_PROXY_KEYPASSWD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_PINNEDPUBLICKEY + */ +const CURLOPT_PROXY_PINNEDPUBLICKEY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSL_CIPHER_LIST + */ +const CURLOPT_PROXY_SSL_CIPHER_LIST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSL_OPTIONS + */ +const CURLOPT_PROXY_SSL_OPTIONS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSL_VERIFYHOST + */ +const CURLOPT_PROXY_SSL_VERIFYHOST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSL_VERIFYPEER + */ +const CURLOPT_PROXY_SSL_VERIFYPEER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSLCERT + */ +const CURLOPT_PROXY_SSLCERT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSLCERTTYPE + */ +const CURLOPT_PROXY_SSLCERTTYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSLKEY + */ +const CURLOPT_PROXY_SSLKEY = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSLKEYTYPE + */ +const CURLOPT_PROXY_SSLKEYTYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSLVERSION + */ +const CURLOPT_PROXY_SSLVERSION = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_TLSAUTH_PASSWORD + */ +const CURLOPT_PROXY_TLSAUTH_PASSWORD = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_TLSAUTH_TYPE + */ +const CURLOPT_PROXY_TLSAUTH_TYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_TLSAUTH_USERNAME + */ +const CURLOPT_PROXY_TLSAUTH_USERNAME = UNKNOWN; +/** + * @var int + * @cvalue CURLPROXY_HTTPS + */ +const CURLPROXY_HTTPS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */ +/** + * @var int + * @cvalue CURL_MAX_READ_SIZE + */ +const CURL_MAX_READ_SIZE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_ABSTRACT_UNIX_SOCKET + */ +const CURLOPT_ABSTRACT_UNIX_SOCKET = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ +/** + * @var int + * @cvalue CURL_SSLVERSION_MAX_DEFAULT + */ +const CURL_SSLVERSION_MAX_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_MAX_NONE + */ +const CURL_SSLVERSION_MAX_NONE = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_MAX_TLSv1_0 + */ +const CURL_SSLVERSION_MAX_TLSv1_0 = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_MAX_TLSv1_1 + */ +const CURL_SSLVERSION_MAX_TLSv1_1 = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_MAX_TLSv1_2 + */ +const CURL_SSLVERSION_MAX_TLSv1_2 = UNKNOWN; +/** + * @var int + * @cvalue CURL_SSLVERSION_MAX_TLSv1_3 + */ +const CURL_SSLVERSION_MAX_TLSv1_3 = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SUPPRESS_CONNECT_HEADERS + */ +const CURLOPT_SUPPRESS_CONNECT_HEADERS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073601 /* Available since 7.54.1 */ +/** + * @var int + * @cvalue CURLAUTH_GSSAPI + */ +const CURLAUTH_GSSAPI = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ +/** + * @var int + * @cvalue CURLINFO_CONTENT_LENGTH_DOWNLOAD_T + */ +const CURLINFO_CONTENT_LENGTH_DOWNLOAD_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_CONTENT_LENGTH_UPLOAD_T + */ +const CURLINFO_CONTENT_LENGTH_UPLOAD_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SIZE_DOWNLOAD_T + */ +const CURLINFO_SIZE_DOWNLOAD_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SIZE_UPLOAD_T + */ +const CURLINFO_SIZE_UPLOAD_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SPEED_DOWNLOAD_T + */ +const CURLINFO_SPEED_DOWNLOAD_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_SPEED_UPLOAD_T + */ +const CURLINFO_SPEED_UPLOAD_T = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_REQUEST_TARGET + */ +const CURLOPT_REQUEST_TARGET = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SOCKS5_AUTH + */ +const CURLOPT_SOCKS5_AUTH = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073800 /* Available since 7.56.0 */ +/** + * @var int + * @cvalue CURLOPT_SSH_COMPRESSION + */ +const CURLOPT_SSH_COMPRESSION = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_MULTI_SSL + */ +const CURL_VERSION_MULTI_SSL = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073900 /* Available since 7.57.0 */ +/** + * @var int + * @cvalue CURL_VERSION_BROTLI + */ +const CURL_VERSION_BROTLI = UNKNOWN; +/** + * @var int + * @cvalue CURL_LOCK_DATA_CONNECT + */ +const CURL_LOCK_DATA_CONNECT = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073a00 /* Available since 7.58.0 */ +/** + * @var int + * @cvalue CURLSSH_AUTH_GSSAPI + */ +const CURLSSH_AUTH_GSSAPI = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073b00 /* Available since 7.59.0 */ +/** + * @var int + * @cvalue CURLINFO_FILETIME_T + */ +const CURLINFO_FILETIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS + */ +const CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TIMEVALUE_LARGE + */ +const CURLOPT_TIMEVALUE_LARGE = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073c00 /* Available since 7.60.0 */ +/** + * @var int + * @cvalue CURLOPT_DNS_SHUFFLE_ADDRESSES + */ +const CURLOPT_DNS_SHUFFLE_ADDRESSES = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HAPROXYPROTOCOL + */ +const CURLOPT_HAPROXYPROTOCOL = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ +/** + * @var int + * @cvalue CURL_LOCK_DATA_PSL + */ +const CURL_LOCK_DATA_PSL = UNKNOWN; +/** + * @var int + * @cvalue CURLAUTH_BEARER + */ +const CURLAUTH_BEARER = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_APPCONNECT_TIME_T + */ +const CURLINFO_APPCONNECT_TIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_CONNECT_TIME_T + */ +const CURLINFO_CONNECT_TIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_NAMELOOKUP_TIME_T + */ +const CURLINFO_NAMELOOKUP_TIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PRETRANSFER_TIME_T + */ +const CURLINFO_PRETRANSFER_TIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_REDIRECT_TIME_T + */ +const CURLINFO_REDIRECT_TIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_STARTTRANSFER_TIME_T + */ +const CURLINFO_STARTTRANSFER_TIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_TOTAL_TIME_T + */ +const CURLINFO_TOTAL_TIME_T = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DISALLOW_USERNAME_IN_URL + */ +const CURLOPT_DISALLOW_USERNAME_IN_URL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_TLS13_CIPHERS + */ +const CURLOPT_PROXY_TLS13_CIPHERS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_TLS13_CIPHERS + */ +const CURLOPT_TLS13_CIPHERS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */ +/** + * @var int + * @cvalue CURLOPT_DOH_URL + */ +const CURLOPT_DOH_URL = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_UPKEEP_INTERVAL_MS + */ +const CURLOPT_UPKEEP_INTERVAL_MS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_UPLOAD_BUFFERSIZE + */ +const CURLOPT_UPLOAD_BUFFERSIZE = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074000 /* Available since 7.64.0 */ +/** + * @var int + * @cvalue CURLOPT_HTTP09_ALLOWED + */ +const CURLOPT_HTTP09_ALLOWED = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ +/** + * @var int + * @cvalue CURLALTSVC_H1 + */ +const CURLALTSVC_H1 = UNKNOWN; +/** + * @var int + * @cvalue CURLALTSVC_H2 + */ +const CURLALTSVC_H2 = UNKNOWN; +/** + * @var int + * @cvalue CURLALTSVC_H3 + */ +const CURLALTSVC_H3 = UNKNOWN; +/** + * @var int + * @cvalue CURLALTSVC_READONLYFILE + */ +const CURLALTSVC_READONLYFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_ALTSVC + */ +const CURLOPT_ALTSVC = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_ALTSVC_CTRL + */ +const CURLOPT_ALTSVC_CTRL = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_ALTSVC + */ +const CURL_VERSION_ALTSVC = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074100 /* Available since 7.65.0 */ +/** + * @var int + * @cvalue CURLOPT_MAXAGE_CONN + */ +const CURLOPT_MAXAGE_CONN = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */ +/** + * @var int + * @cvalue CURLOPT_SASL_AUTHZID + */ +const CURLOPT_SASL_AUTHZID = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_HTTP3 + */ +const CURL_VERSION_HTTP3 = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_RETRY_AFTER + */ +const CURLINFO_RETRY_AFTER = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074300 /* Available since 7.67.0 */ +/** + * @var int + * @cvalue CURLMOPT_MAX_CONCURRENT_STREAMS + */ +const CURLMOPT_MAX_CONCURRENT_STREAMS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074400 /* Available since 7.68.0 */ +/** + * @var int + * @cvalue CURLSSLOPT_NO_PARTIALCHAIN + */ +const CURLSSLOPT_NO_PARTIALCHAIN = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */ +/** + * @var int + * @cvalue CURLOPT_MAIL_RCPT_ALLLOWFAILS + */ +const CURLOPT_MAIL_RCPT_ALLLOWFAILS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074600 /* Available since 7.70.0 */ +/** + * @var int + * @cvalue CURLSSLOPT_REVOKE_BEST_EFFORT + */ +const CURLSSLOPT_REVOKE_BEST_EFFORT = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ +/** + * @var int + * @cvalue CURLOPT_ISSUERCERT_BLOB + */ +const CURLOPT_ISSUERCERT_BLOB = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_ISSUERCERT + */ +const CURLOPT_PROXY_ISSUERCERT = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_ISSUERCERT_BLOB + */ +const CURLOPT_PROXY_ISSUERCERT_BLOB = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSLCERT_BLOB + */ +const CURLOPT_PROXY_SSLCERT_BLOB = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_SSLKEY_BLOB + */ +const CURLOPT_PROXY_SSLKEY_BLOB = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLCERT_BLOB + */ +const CURLOPT_SSLCERT_BLOB = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSLKEY_BLOB + */ +const CURLOPT_SSLKEY_BLOB = UNKNOWN; + +/** + * @var int + * @cvalue CURLPROTO_MQTT + */ +const CURLPROTO_MQTT = UNKNOWN; + +/** + * @var int + * @cvalue CURLSSLOPT_NATIVE_CA + */ +const CURLSSLOPT_NATIVE_CA = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */ +/** + * @var int + * @cvalue CURL_VERSION_UNICODE + */ +const CURL_VERSION_UNICODE = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_ZSTD + */ +const CURL_VERSION_ZSTD = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ +/** + * @var int + * @cvalue CURLE_PROXY + */ +const CURLE_PROXY = UNKNOWN; +/** + * @var int + * @cvalue CURLINFO_PROXY_ERROR + */ +const CURLINFO_PROXY_ERROR = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSL_EC_CURVES + */ +const CURLOPT_SSL_EC_CURVES = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_BAD_ADDRESS_TYPE + */ +const CURLPX_BAD_ADDRESS_TYPE = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_BAD_VERSION + */ +const CURLPX_BAD_VERSION = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_CLOSED + */ +const CURLPX_CLOSED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_GSSAPI + */ +const CURLPX_GSSAPI = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_GSSAPI_PERMSG + */ +const CURLPX_GSSAPI_PERMSG = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_GSSAPI_PROTECTION + */ +const CURLPX_GSSAPI_PROTECTION = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_IDENTD + */ +const CURLPX_IDENTD = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_IDENTD_DIFFER + */ +const CURLPX_IDENTD_DIFFER = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_LONG_HOSTNAME + */ +const CURLPX_LONG_HOSTNAME = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_LONG_PASSWD + */ +const CURLPX_LONG_PASSWD = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_LONG_USER + */ +const CURLPX_LONG_USER = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_NO_AUTH + */ +const CURLPX_NO_AUTH = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_OK + */ +const CURLPX_OK = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_RECV_ADDRESS + */ +const CURLPX_RECV_ADDRESS = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_RECV_AUTH + */ +const CURLPX_RECV_AUTH = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_RECV_CONNECT + */ +const CURLPX_RECV_CONNECT = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_RECV_REQACK + */ +const CURLPX_RECV_REQACK = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED + */ +const CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_COMMAND_NOT_SUPPORTED + */ +const CURLPX_REPLY_COMMAND_NOT_SUPPORTED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_CONNECTION_REFUSED + */ +const CURLPX_REPLY_CONNECTION_REFUSED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_GENERAL_SERVER_FAILURE + */ +const CURLPX_REPLY_GENERAL_SERVER_FAILURE = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_HOST_UNREACHABLE + */ +const CURLPX_REPLY_HOST_UNREACHABLE = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_NETWORK_UNREACHABLE + */ +const CURLPX_REPLY_NETWORK_UNREACHABLE = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_NOT_ALLOWED + */ +const CURLPX_REPLY_NOT_ALLOWED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_TTL_EXPIRED + */ +const CURLPX_REPLY_TTL_EXPIRED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REPLY_UNASSIGNED + */ +const CURLPX_REPLY_UNASSIGNED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_REQUEST_FAILED + */ +const CURLPX_REQUEST_FAILED = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_RESOLVE_HOST + */ +const CURLPX_RESOLVE_HOST = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_SEND_AUTH + */ +const CURLPX_SEND_AUTH = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_SEND_CONNECT + */ +const CURLPX_SEND_CONNECT = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_SEND_REQUEST + */ +const CURLPX_SEND_REQUEST = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_UNKNOWN_FAIL + */ +const CURLPX_UNKNOWN_FAIL = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_UNKNOWN_MODE + */ +const CURLPX_UNKNOWN_MODE = UNKNOWN; +/** + * @var int + * @cvalue CURLPX_USER_REJECTED + */ +const CURLPX_USER_REJECTED = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ +/** + * @var int + * @cvalue CURLHSTS_ENABLE + */ +const CURLHSTS_ENABLE = UNKNOWN; +/** + * @var int + * @cvalue CURLHSTS_READONLYFILE + */ +const CURLHSTS_READONLYFILE = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HSTS + */ +const CURLOPT_HSTS = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_HSTS_CTRL + */ +const CURLOPT_HSTS_CTRL = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_HSTS + */ +const CURL_VERSION_HSTS = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074b00 /* Available since 7.75.0 */ +/** + * @var int + * @cvalue CURLAUTH_AWS_SIGV4 + */ +const CURLAUTH_AWS_SIGV4 = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_AWS_SIGV4 + */ +const CURLOPT_AWS_SIGV4 = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */ +/** + * @var int + * @cvalue CURLINFO_REFERER + */ +const CURLINFO_REFERER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DOH_SSL_VERIFYHOST + */ +const CURLOPT_DOH_SSL_VERIFYHOST = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DOH_SSL_VERIFYPEER + */ +const CURLOPT_DOH_SSL_VERIFYPEER = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_DOH_SSL_VERIFYSTATUS + */ +const CURLOPT_DOH_SSL_VERIFYSTATUS = UNKNOWN; +/** + * @var int + * @cvalue CURL_VERSION_GSASL + */ +const CURL_VERSION_GSASL = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x074d00 /* Available since 7.77.0 */ +/** + * @var int + * @cvalue CURLOPT_CAINFO_BLOB + */ +const CURLOPT_CAINFO_BLOB = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_PROXY_CAINFO_BLOB + */ +const CURLOPT_PROXY_CAINFO_BLOB = UNKNOWN; +/** + * @var int + * @cvalue CURLSSLOPT_AUTO_CLIENT_CERT + */ +const CURLSSLOPT_AUTO_CLIENT_CERT = UNKNOWN; +#endif + +#if LIBCURL_VERSION_NUM >= 0x075000 /* Available since 7.80.0 */ +/** + * @var int + * @cvalue CURLOPT_MAXLIFETIME_CONN + */ +const CURLOPT_MAXLIFETIME_CONN = UNKNOWN; +/** + * @var int + * @cvalue CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 + */ +const CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 = UNKNOWN; +#endif + +/** + * @var int + * @cvalue CURLOPT_SAFE_UPLOAD + */ +const CURLOPT_SAFE_UPLOAD = UNKNOWN; + /** * @strict-properties * @not-serializable diff --git a/ext/curl/curl_arginfo.h b/ext/curl/curl_arginfo.h index b8b0b4013ef95..c746edbb4a41c 100644 --- a/ext/curl/curl_arginfo.h +++ b/ext/curl/curl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 1bd8a84a4aa80912463ea76d08f64d3c2cf4c0db */ + * Stub hash: 778f1aa4a9333ef419c89276911333bc8a04a065 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_curl_close, 0, 1, IS_VOID, 0) ZEND_ARG_OBJ_INFO(0, handle, CurlHandle, 0) @@ -230,6 +230,1075 @@ static const zend_function_entry class_CurlShareHandle_methods[] = { ZEND_FE_END }; +static void register_curl_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("CURLOPT_AUTOREFERER", CURLOPT_AUTOREFERER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_BINARYTRANSFER", CURLOPT_BINARYTRANSFER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_BUFFERSIZE", CURLOPT_BUFFERSIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CAINFO", CURLOPT_CAINFO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CAPATH", CURLOPT_CAPATH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CONNECTTIMEOUT", CURLOPT_CONNECTTIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_COOKIE", CURLOPT_COOKIE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_COOKIEFILE", CURLOPT_COOKIEFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_COOKIEJAR", CURLOPT_COOKIEJAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_COOKIESESSION", CURLOPT_COOKIESESSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CRLF", CURLOPT_CRLF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CUSTOMREQUEST", CURLOPT_CUSTOMREQUEST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_DNS_CACHE_TIMEOUT", CURLOPT_DNS_CACHE_TIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_DNS_USE_GLOBAL_CACHE", CURLOPT_DNS_USE_GLOBAL_CACHE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_EGDSOCKET", CURLOPT_EGDSOCKET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_ENCODING", CURLOPT_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FAILONERROR", CURLOPT_FAILONERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FILE", CURLOPT_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FILETIME", CURLOPT_FILETIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FOLLOWLOCATION", CURLOPT_FOLLOWLOCATION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FORBID_REUSE", CURLOPT_FORBID_REUSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FRESH_CONNECT", CURLOPT_FRESH_CONNECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTPAPPEND", CURLOPT_FTPAPPEND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTPLISTONLY", CURLOPT_FTPLISTONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTPPORT", CURLOPT_FTPPORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_USE_EPRT", CURLOPT_FTP_USE_EPRT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_USE_EPSV", CURLOPT_FTP_USE_EPSV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HEADER", CURLOPT_HEADER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HEADERFUNCTION", CURLOPT_HEADERFUNCTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTP200ALIASES", CURLOPT_HTTP200ALIASES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTPGET", CURLOPT_HTTPGET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTPHEADER", CURLOPT_HTTPHEADER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTPPROXYTUNNEL", CURLOPT_HTTPPROXYTUNNEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTP_VERSION", CURLOPT_HTTP_VERSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_INFILE", CURLOPT_INFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_INFILESIZE", CURLOPT_INFILESIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_INTERFACE", CURLOPT_INTERFACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_KRB4LEVEL", CURLOPT_KRB4LEVEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_LOW_SPEED_LIMIT", CURLOPT_LOW_SPEED_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_LOW_SPEED_TIME", CURLOPT_LOW_SPEED_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAXCONNECTS", CURLOPT_MAXCONNECTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAXREDIRS", CURLOPT_MAXREDIRS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NETRC", CURLOPT_NETRC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NOBODY", CURLOPT_NOBODY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NOPROGRESS", CURLOPT_NOPROGRESS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NOSIGNAL", CURLOPT_NOSIGNAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PORT", CURLOPT_PORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_POST", CURLOPT_POST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_POSTFIELDS", CURLOPT_POSTFIELDS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_POSTQUOTE", CURLOPT_POSTQUOTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PREQUOTE", CURLOPT_PREQUOTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PRIVATE", CURLOPT_PRIVATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROGRESSFUNCTION", CURLOPT_PROGRESSFUNCTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXY", CURLOPT_PROXY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXYPORT", CURLOPT_PROXYPORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXYTYPE", CURLOPT_PROXYTYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXYUSERPWD", CURLOPT_PROXYUSERPWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PUT", CURLOPT_PUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_QUOTE", CURLOPT_QUOTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RANDOM_FILE", CURLOPT_RANDOM_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RANGE", CURLOPT_RANGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_READDATA", CURLOPT_READDATA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_READFUNCTION", CURLOPT_READFUNCTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_REFERER", CURLOPT_REFERER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RESUME_FROM", CURLOPT_RESUME_FROM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RETURNTRANSFER", CURLOPT_RETURNTRANSFER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SHARE", CURLOPT_SHARE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLCERT", CURLOPT_SSLCERT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLCERTPASSWD", CURLOPT_SSLCERTPASSWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLCERTTYPE", CURLOPT_SSLCERTTYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLENGINE", CURLOPT_SSLENGINE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLENGINE_DEFAULT", CURLOPT_SSLENGINE_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLKEY", CURLOPT_SSLKEY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLKEYPASSWD", CURLOPT_SSLKEYPASSWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLKEYTYPE", CURLOPT_SSLKEYTYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSLVERSION", CURLOPT_SSLVERSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSL_CIPHER_LIST", CURLOPT_SSL_CIPHER_LIST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSL_VERIFYHOST", CURLOPT_SSL_VERIFYHOST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSL_VERIFYPEER", CURLOPT_SSL_VERIFYPEER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_STDERR", CURLOPT_STDERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TELNETOPTIONS", CURLOPT_TELNETOPTIONS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TIMECONDITION", CURLOPT_TIMECONDITION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TIMEOUT", CURLOPT_TIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TIMEVALUE", CURLOPT_TIMEVALUE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TRANSFERTEXT", CURLOPT_TRANSFERTEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_UNRESTRICTED_AUTH", CURLOPT_UNRESTRICTED_AUTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_UPLOAD", CURLOPT_UPLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_URL", CURLOPT_URL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_USERAGENT", CURLOPT_USERAGENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_USERPWD", CURLOPT_USERPWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_VERBOSE", CURLOPT_VERBOSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_WRITEFUNCTION", CURLOPT_WRITEFUNCTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_WRITEHEADER", CURLOPT_WRITEHEADER, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x072000 + REGISTER_LONG_CONSTANT("CURLOPT_XFERINFOFUNCTION", CURLOPT_XFERINFOFUNCTION, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("CURLE_ABORTED_BY_CALLBACK", CURLE_ABORTED_BY_CALLBACK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_BAD_CALLING_ORDER", CURLE_BAD_CALLING_ORDER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_BAD_CONTENT_ENCODING", CURLE_BAD_CONTENT_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_BAD_DOWNLOAD_RESUME", CURLE_BAD_DOWNLOAD_RESUME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_BAD_FUNCTION_ARGUMENT", CURLE_BAD_FUNCTION_ARGUMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_BAD_PASSWORD_ENTERED", CURLE_BAD_PASSWORD_ENTERED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_COULDNT_CONNECT", CURLE_COULDNT_CONNECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_COULDNT_RESOLVE_HOST", CURLE_COULDNT_RESOLVE_HOST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_COULDNT_RESOLVE_PROXY", CURLE_COULDNT_RESOLVE_PROXY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FAILED_INIT", CURLE_FAILED_INIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FILE_COULDNT_READ_FILE", CURLE_FILE_COULDNT_READ_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_ACCESS_DENIED", CURLE_FTP_ACCESS_DENIED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_BAD_DOWNLOAD_RESUME", CURLE_FTP_BAD_DOWNLOAD_RESUME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_CANT_GET_HOST", CURLE_FTP_CANT_GET_HOST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_CANT_RECONNECT", CURLE_FTP_CANT_RECONNECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_GET_SIZE", CURLE_FTP_COULDNT_GET_SIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_RETR_FILE", CURLE_FTP_COULDNT_RETR_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_SET_ASCII", CURLE_FTP_COULDNT_SET_ASCII, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_SET_BINARY", CURLE_FTP_COULDNT_SET_BINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_STOR_FILE", CURLE_FTP_COULDNT_STOR_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_COULDNT_USE_REST", CURLE_FTP_COULDNT_USE_REST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_PARTIAL_FILE", CURLE_FTP_PARTIAL_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_PORT_FAILED", CURLE_FTP_PORT_FAILED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_QUOTE_ERROR", CURLE_FTP_QUOTE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_USER_PASSWORD_INCORRECT", CURLE_FTP_USER_PASSWORD_INCORRECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_WEIRD_227_FORMAT", CURLE_FTP_WEIRD_227_FORMAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_WEIRD_PASS_REPLY", CURLE_FTP_WEIRD_PASS_REPLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_WEIRD_PASV_REPLY", CURLE_FTP_WEIRD_PASV_REPLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_WEIRD_SERVER_REPLY", CURLE_FTP_WEIRD_SERVER_REPLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_WEIRD_USER_REPLY", CURLE_FTP_WEIRD_USER_REPLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_WRITE_ERROR", CURLE_FTP_WRITE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FUNCTION_NOT_FOUND", CURLE_FUNCTION_NOT_FOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_GOT_NOTHING", CURLE_GOT_NOTHING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_HTTP_NOT_FOUND", CURLE_HTTP_NOT_FOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_HTTP_PORT_FAILED", CURLE_HTTP_PORT_FAILED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_HTTP_POST_ERROR", CURLE_HTTP_POST_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_HTTP_RANGE_ERROR", CURLE_HTTP_RANGE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_HTTP_RETURNED_ERROR", CURLE_HTTP_RETURNED_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_LDAP_CANNOT_BIND", CURLE_LDAP_CANNOT_BIND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_LDAP_SEARCH_FAILED", CURLE_LDAP_SEARCH_FAILED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_LIBRARY_NOT_FOUND", CURLE_LIBRARY_NOT_FOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_MALFORMAT_USER", CURLE_MALFORMAT_USER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_OBSOLETE", CURLE_OBSOLETE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_OK", CURLE_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_OPERATION_TIMEDOUT", CURLE_OPERATION_TIMEDOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_OPERATION_TIMEOUTED", CURLE_OPERATION_TIMEOUTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_OUT_OF_MEMORY", CURLE_OUT_OF_MEMORY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_PARTIAL_FILE", CURLE_PARTIAL_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_READ_ERROR", CURLE_READ_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_RECV_ERROR", CURLE_RECV_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SEND_ERROR", CURLE_SEND_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SHARE_IN_USE", CURLE_SHARE_IN_USE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_CACERT", CURLE_SSL_CACERT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_CERTPROBLEM", CURLE_SSL_CERTPROBLEM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_CIPHER", CURLE_SSL_CIPHER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_CONNECT_ERROR", CURLE_SSL_CONNECT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_ENGINE_NOTFOUND", CURLE_SSL_ENGINE_NOTFOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_ENGINE_SETFAILED", CURLE_SSL_ENGINE_SETFAILED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_PEER_CERTIFICATE", CURLE_SSL_PEER_CERTIFICATE, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ + REGISTER_LONG_CONSTANT("CURLE_SSL_PINNEDPUBKEYNOTMATCH", CURLE_SSL_PINNEDPUBKEYNOTMATCH, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("CURLE_TELNET_OPTION_SYNTAX", CURLE_TELNET_OPTION_SYNTAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_TOO_MANY_REDIRECTS", CURLE_TOO_MANY_REDIRECTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_UNKNOWN_TELNET_OPTION", CURLE_UNKNOWN_TELNET_OPTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_UNSUPPORTED_PROTOCOL", CURLE_UNSUPPORTED_PROTOCOL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_URL_MALFORMAT", CURLE_URL_MALFORMAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_URL_MALFORMAT_USER", CURLE_URL_MALFORMAT_USER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_WRITE_ERROR", CURLE_WRITE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_CONNECT_TIME", CURLINFO_CONNECT_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_CONTENT_LENGTH_DOWNLOAD", CURLINFO_CONTENT_LENGTH_DOWNLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_CONTENT_LENGTH_UPLOAD", CURLINFO_CONTENT_LENGTH_UPLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_CONTENT_TYPE", CURLINFO_CONTENT_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_EFFECTIVE_URL", CURLINFO_EFFECTIVE_URL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_FILETIME", CURLINFO_FILETIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_HEADER_OUT", CURLINFO_HEADER_OUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_HEADER_SIZE", CURLINFO_HEADER_SIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_HTTP_CODE", CURLINFO_HTTP_CODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_LASTONE", CURLINFO_LASTONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_NAMELOOKUP_TIME", CURLINFO_NAMELOOKUP_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_PRETRANSFER_TIME", CURLINFO_PRETRANSFER_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_PRIVATE", CURLINFO_PRIVATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_REDIRECT_COUNT", CURLINFO_REDIRECT_COUNT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_REDIRECT_TIME", CURLINFO_REDIRECT_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_REQUEST_SIZE", CURLINFO_REQUEST_SIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_SIZE_DOWNLOAD", CURLINFO_SIZE_DOWNLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_SIZE_UPLOAD", CURLINFO_SIZE_UPLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_SPEED_DOWNLOAD", CURLINFO_SPEED_DOWNLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_SPEED_UPLOAD", CURLINFO_SPEED_UPLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_SSL_VERIFYRESULT", CURLINFO_SSL_VERIFYRESULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_STARTTRANSFER_TIME", CURLINFO_STARTTRANSFER_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_TOTAL_TIME", CURLINFO_TOTAL_TIME, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_EFFECTIVE_METHOD", CURLINFO_EFFECTIVE_METHOD, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("CURLMSG_DONE", CURLMSG_DONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLVERSION_NOW", CURLVERSION_NOW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLM_BAD_EASY_HANDLE", CURLM_BAD_EASY_HANDLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLM_BAD_HANDLE", CURLM_BAD_HANDLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLM_CALL_MULTI_PERFORM", CURLM_CALL_MULTI_PERFORM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLM_INTERNAL_ERROR", CURLM_INTERNAL_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLM_OK", CURLM_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLM_OUT_OF_MEMORY", CURLM_OUT_OF_MEMORY, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x072001 /* Available since 7.32.1 */ + REGISTER_LONG_CONSTANT("CURLM_ADDED_ALREADY", CURLM_ADDED_ALREADY, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("CURLPROXY_HTTP", CURLPROXY_HTTP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROXY_SOCKS4", CURLPROXY_SOCKS4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROXY_SOCKS5", CURLPROXY_SOCKS5, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSHOPT_NONE", CURLSHOPT_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSHOPT_SHARE", CURLSHOPT_SHARE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSHOPT_UNSHARE", CURLSHOPT_UNSHARE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_HTTP_VERSION_1_0", CURL_HTTP_VERSION_1_0, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_HTTP_VERSION_1_1", CURL_HTTP_VERSION_1_1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_HTTP_VERSION_NONE", CURL_HTTP_VERSION_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_LOCK_DATA_COOKIE", CURL_LOCK_DATA_COOKIE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_LOCK_DATA_DNS", CURL_LOCK_DATA_DNS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_LOCK_DATA_SSL_SESSION", CURL_LOCK_DATA_SSL_SESSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_NETRC_IGNORED", CURL_NETRC_IGNORED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_NETRC_OPTIONAL", CURL_NETRC_OPTIONAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_NETRC_REQUIRED", CURL_NETRC_REQUIRED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_DEFAULT", CURL_SSLVERSION_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_SSLv2", CURL_SSLVERSION_SSLv2, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_SSLv3", CURL_SSLVERSION_SSLv3, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_TLSv1", CURL_SSLVERSION_TLSv1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_TIMECOND_IFMODSINCE", CURL_TIMECOND_IFMODSINCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_TIMECOND_IFUNMODSINCE", CURL_TIMECOND_IFUNMODSINCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_TIMECOND_LASTMOD", CURL_TIMECOND_LASTMOD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_TIMECOND_NONE", CURL_TIMECOND_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_ASYNCHDNS", CURL_VERSION_ASYNCHDNS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_CONV", CURL_VERSION_CONV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_DEBUG", CURL_VERSION_DEBUG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_GSSNEGOTIATE", CURL_VERSION_GSSNEGOTIATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_IDN", CURL_VERSION_IDN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_IPV6", CURL_VERSION_IPV6, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_KERBEROS4", CURL_VERSION_KERBEROS4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_LARGEFILE", CURL_VERSION_LARGEFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_LIBZ", CURL_VERSION_LIBZ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_NTLM", CURL_VERSION_NTLM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_SPNEGO", CURL_VERSION_SPNEGO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_SSL", CURL_VERSION_SSL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_SSPI", CURL_VERSION_SSPI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTPAUTH", CURLOPT_HTTPAUTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_ANY", CURLAUTH_ANY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_ANYSAFE", CURLAUTH_ANYSAFE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_BASIC", CURLAUTH_BASIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_DIGEST", CURLAUTH_DIGEST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_GSSNEGOTIATE", CURLAUTH_GSSNEGOTIATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_NONE", CURLAUTH_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_NTLM", CURLAUTH_NTLM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_HTTP_CONNECTCODE", CURLINFO_HTTP_CONNECTCODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_CREATE_MISSING_DIRS", CURLOPT_FTP_CREATE_MISSING_DIRS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXYAUTH", CURLOPT_PROXYAUTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FILESIZE_EXCEEDED", CURLE_FILESIZE_EXCEEDED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_LDAP_INVALID_URL", CURLE_LDAP_INVALID_URL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_HTTPAUTH_AVAIL", CURLINFO_HTTPAUTH_AVAIL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_RESPONSE_CODE", CURLINFO_RESPONSE_CODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_PROXYAUTH_AVAIL", CURLINFO_PROXYAUTH_AVAIL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_RESPONSE_TIMEOUT", CURLOPT_FTP_RESPONSE_TIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_IPRESOLVE", CURLOPT_IPRESOLVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAXFILESIZE", CURLOPT_MAXFILESIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_IPRESOLVE_V4", CURL_IPRESOLVE_V4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_IPRESOLVE_V6", CURL_IPRESOLVE_V6, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_IPRESOLVE_WHATEVER", CURL_IPRESOLVE_WHATEVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_FTP_SSL_FAILED", CURLE_FTP_SSL_FAILED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPSSL_ALL", CURLFTPSSL_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPSSL_CONTROL", CURLFTPSSL_CONTROL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPSSL_NONE", CURLFTPSSL_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPSSL_TRY", CURLFTPSSL_TRY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_SSL", CURLOPT_FTP_SSL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NETRC_FILE", CURLOPT_NETRC_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAXFILESIZE_LARGE", CURLOPT_MAXFILESIZE_LARGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TCP_NODELAY", CURLOPT_TCP_NODELAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPAUTH_DEFAULT", CURLFTPAUTH_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPAUTH_SSL", CURLFTPAUTH_SSL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPAUTH_TLS", CURLFTPAUTH_TLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTPSSLAUTH", CURLOPT_FTPSSLAUTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_ACCOUNT", CURLOPT_FTP_ACCOUNT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_OS_ERRNO", CURLINFO_OS_ERRNO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_NUM_CONNECTS", CURLINFO_NUM_CONNECTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_SSL_ENGINES", CURLINFO_SSL_ENGINES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_COOKIELIST", CURLINFO_COOKIELIST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_COOKIELIST", CURLOPT_COOKIELIST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_IGNORE_CONTENT_LENGTH", CURLOPT_IGNORE_CONTENT_LENGTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_SKIP_PASV_IP", CURLOPT_FTP_SKIP_PASV_IP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_FILEMETHOD", CURLOPT_FTP_FILEMETHOD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CONNECT_ONLY", CURLOPT_CONNECT_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_LOCALPORT", CURLOPT_LOCALPORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_LOCALPORTRANGE", CURLOPT_LOCALPORTRANGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPMETHOD_DEFAULT", CURLFTPMETHOD_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPMETHOD_MULTICWD", CURLFTPMETHOD_MULTICWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPMETHOD_NOCWD", CURLFTPMETHOD_NOCWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPMETHOD_SINGLECWD", CURLFTPMETHOD_SINGLECWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_FTP_ENTRY_PATH", CURLINFO_FTP_ENTRY_PATH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_ALTERNATIVE_TO_USER", CURLOPT_FTP_ALTERNATIVE_TO_USER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAX_RECV_SPEED_LARGE", CURLOPT_MAX_RECV_SPEED_LARGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAX_SEND_SPEED_LARGE", CURLOPT_MAX_SEND_SPEED_LARGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSL_CACERT_BADFILE", CURLE_SSL_CACERT_BADFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSL_SESSIONID_CACHE", CURLOPT_SSL_SESSIONID_CACHE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLMOPT_PIPELINING", CURLMOPT_PIPELINING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLE_SSH", CURLE_SSH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_SSL_CCC", CURLOPT_FTP_SSL_CCC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSH_AUTH_TYPES", CURLOPT_SSH_AUTH_TYPES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSH_PRIVATE_KEYFILE", CURLOPT_SSH_PRIVATE_KEYFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSH_PUBLIC_KEYFILE", CURLOPT_SSH_PUBLIC_KEYFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPSSL_CCC_ACTIVE", CURLFTPSSL_CCC_ACTIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPSSL_CCC_NONE", CURLFTPSSL_CCC_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTPSSL_CCC_PASSIVE", CURLFTPSSL_CCC_PASSIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CONNECTTIMEOUT_MS", CURLOPT_CONNECTTIMEOUT_MS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTP_CONTENT_DECODING", CURLOPT_HTTP_CONTENT_DECODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_HTTP_TRANSFER_DECODING", CURLOPT_HTTP_TRANSFER_DECODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TIMEOUT_MS", CURLOPT_TIMEOUT_MS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLMOPT_MAXCONNECTS", CURLMOPT_MAXCONNECTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_KRBLEVEL", CURLOPT_KRBLEVEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NEW_DIRECTORY_PERMS", CURLOPT_NEW_DIRECTORY_PERMS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NEW_FILE_PERMS", CURLOPT_NEW_FILE_PERMS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_APPEND", CURLOPT_APPEND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_DIRLISTONLY", CURLOPT_DIRLISTONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_USE_SSL", CURLOPT_USE_SSL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLUSESSL_ALL", CURLUSESSL_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLUSESSL_CONTROL", CURLUSESSL_CONTROL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLUSESSL_NONE", CURLUSESSL_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLUSESSL_TRY", CURLUSESSL_TRY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSH_HOST_PUBLIC_KEY_MD5", CURLOPT_SSH_HOST_PUBLIC_KEY_MD5, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_TRANSFER_MODE", CURLOPT_PROXY_TRANSFER_MODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPAUSE_ALL", CURLPAUSE_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPAUSE_CONT", CURLPAUSE_CONT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPAUSE_RECV", CURLPAUSE_RECV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPAUSE_RECV_CONT", CURLPAUSE_RECV_CONT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPAUSE_SEND", CURLPAUSE_SEND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPAUSE_SEND_CONT", CURLPAUSE_SEND_CONT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_READFUNC_PAUSE", CURL_READFUNC_PAUSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_WRITEFUNC_PAUSE", CURL_WRITEFUNC_PAUSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROXY_SOCKS4A", CURLPROXY_SOCKS4A, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROXY_SOCKS5_HOSTNAME", CURLPROXY_SOCKS5_HOSTNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_REDIRECT_URL", CURLINFO_REDIRECT_URL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_APPCONNECT_TIME", CURLINFO_APPCONNECT_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_PRIMARY_IP", CURLINFO_PRIMARY_IP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_ADDRESS_SCOPE", CURLOPT_ADDRESS_SCOPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CRLFILE", CURLOPT_CRLFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_ISSUERCERT", CURLOPT_ISSUERCERT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_KEYPASSWD", CURLOPT_KEYPASSWD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_ANY", CURLSSH_AUTH_ANY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_DEFAULT", CURLSSH_AUTH_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_HOST", CURLSSH_AUTH_HOST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_KEYBOARD", CURLSSH_AUTH_KEYBOARD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_NONE", CURLSSH_AUTH_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_PASSWORD", CURLSSH_AUTH_PASSWORD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_PUBLICKEY", CURLSSH_AUTH_PUBLICKEY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_CERTINFO", CURLINFO_CERTINFO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_CERTINFO", CURLOPT_CERTINFO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PASSWORD", CURLOPT_PASSWORD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_POSTREDIR", CURLOPT_POSTREDIR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXYPASSWORD", CURLOPT_PROXYPASSWORD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROXYUSERNAME", CURLOPT_PROXYUSERNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_USERNAME", CURLOPT_USERNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_REDIR_POST_301", CURL_REDIR_POST_301, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_REDIR_POST_302", CURL_REDIR_POST_302, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_REDIR_POST_ALL", CURL_REDIR_POST_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_DIGEST_IE", CURLAUTH_DIGEST_IE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_CONDITION_UNMET", CURLINFO_CONDITION_UNMET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_NOPROXY", CURLOPT_NOPROXY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_PROTOCOLS", CURLOPT_PROTOCOLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_REDIR_PROTOCOLS", CURLOPT_REDIR_PROTOCOLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SOCKS5_GSSAPI_NEC", CURLOPT_SOCKS5_GSSAPI_NEC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SOCKS5_GSSAPI_SERVICE", CURLOPT_SOCKS5_GSSAPI_SERVICE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TFTP_BLKSIZE", CURLOPT_TFTP_BLKSIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_ALL", CURLPROTO_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_DICT", CURLPROTO_DICT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_FILE", CURLPROTO_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_FTP", CURLPROTO_FTP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_FTPS", CURLPROTO_FTPS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_HTTP", CURLPROTO_HTTP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_HTTPS", CURLPROTO_HTTPS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_LDAP", CURLPROTO_LDAP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_LDAPS", CURLPROTO_LDAPS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_SCP", CURLPROTO_SCP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_SFTP", CURLPROTO_SFTP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_TELNET", CURLPROTO_TELNET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_TFTP", CURLPROTO_TFTP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROXY_HTTP_1_0", CURLPROXY_HTTP_1_0, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTP_CREATE_DIR", CURLFTP_CREATE_DIR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTP_CREATE_DIR_NONE", CURLFTP_CREATE_DIR_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLFTP_CREATE_DIR_RETRY", CURLFTP_CREATE_DIR_RETRY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_CURLDEBUG", CURL_VERSION_CURLDEBUG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSH_KNOWNHOSTS", CURLOPT_SSH_KNOWNHOSTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_RTSP_CLIENT_CSEQ", CURLINFO_RTSP_CLIENT_CSEQ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_RTSP_CSEQ_RECV", CURLINFO_RTSP_CSEQ_RECV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_RTSP_SERVER_CSEQ", CURLINFO_RTSP_SERVER_CSEQ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_RTSP_SESSION_ID", CURLINFO_RTSP_SESSION_ID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FTP_USE_PRET", CURLOPT_FTP_USE_PRET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAIL_FROM", CURLOPT_MAIL_FROM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAIL_RCPT", CURLOPT_MAIL_RCPT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RTSP_CLIENT_CSEQ", CURLOPT_RTSP_CLIENT_CSEQ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RTSP_REQUEST", CURLOPT_RTSP_REQUEST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RTSP_SERVER_CSEQ", CURLOPT_RTSP_SERVER_CSEQ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RTSP_SESSION_ID", CURLOPT_RTSP_SESSION_ID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RTSP_STREAM_URI", CURLOPT_RTSP_STREAM_URI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RTSP_TRANSPORT", CURLOPT_RTSP_TRANSPORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_IMAP", CURLPROTO_IMAP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_IMAPS", CURLPROTO_IMAPS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_POP3", CURLPROTO_POP3, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_POP3S", CURLPROTO_POP3S, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_RTSP", CURLPROTO_RTSP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_SMTP", CURLPROTO_SMTP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_SMTPS", CURLPROTO_SMTPS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_ANNOUNCE", CURL_RTSPREQ_ANNOUNCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_DESCRIBE", CURL_RTSPREQ_DESCRIBE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_GET_PARAMETER", CURL_RTSPREQ_GET_PARAMETER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_OPTIONS", CURL_RTSPREQ_OPTIONS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_PAUSE", CURL_RTSPREQ_PAUSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_PLAY", CURL_RTSPREQ_PLAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_RECEIVE", CURL_RTSPREQ_RECEIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_RECORD", CURL_RTSPREQ_RECORD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_SET_PARAMETER", CURL_RTSPREQ_SET_PARAMETER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_SETUP", CURL_RTSPREQ_SETUP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_RTSPREQ_TEARDOWN", CURL_RTSPREQ_TEARDOWN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_LOCAL_IP", CURLINFO_LOCAL_IP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_LOCAL_PORT", CURLINFO_LOCAL_PORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLINFO_PRIMARY_PORT", CURLINFO_PRIMARY_PORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_FNMATCH_FUNCTION", CURLOPT_FNMATCH_FUNCTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_WILDCARDMATCH", CURLOPT_WILDCARDMATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_RTMP", CURLPROTO_RTMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_RTMPE", CURLPROTO_RTMPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_RTMPS", CURLPROTO_RTMPS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_RTMPT", CURLPROTO_RTMPT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_RTMPTE", CURLPROTO_RTMPTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_RTMPTS", CURLPROTO_RTMPTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_FNMATCHFUNC_FAIL", CURL_FNMATCHFUNC_FAIL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_FNMATCHFUNC_MATCH", CURL_FNMATCHFUNC_MATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_FNMATCHFUNC_NOMATCH", CURL_FNMATCHFUNC_NOMATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLPROTO_GOPHER", CURLPROTO_GOPHER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_ONLY", CURLAUTH_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_RESOLVE", CURLOPT_RESOLVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TLSAUTH_PASSWORD", CURLOPT_TLSAUTH_PASSWORD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TLSAUTH_TYPE", CURLOPT_TLSAUTH_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TLSAUTH_USERNAME", CURLOPT_TLSAUTH_USERNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_TLSAUTH_SRP", CURL_TLSAUTH_SRP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_TLSAUTH_SRP", CURL_VERSION_TLSAUTH_SRP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_ACCEPT_ENCODING", CURLOPT_ACCEPT_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TRANSFER_ENCODING", CURLOPT_TRANSFER_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLAUTH_NTLM_WB", CURLAUTH_NTLM_WB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLGSSAPI_DELEGATION_FLAG", CURLGSSAPI_DELEGATION_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLGSSAPI_DELEGATION_POLICY_FLAG", CURLGSSAPI_DELEGATION_POLICY_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_GSSAPI_DELEGATION", CURLOPT_GSSAPI_DELEGATION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_VERSION_NTLM_WB", CURL_VERSION_NTLM_WB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_ACCEPTTIMEOUT_MS", CURLOPT_ACCEPTTIMEOUT_MS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_DNS_SERVERS", CURLOPT_DNS_SERVERS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_MAIL_AUTH", CURLOPT_MAIL_AUTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_SSL_OPTIONS", CURLOPT_SSL_OPTIONS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TCP_KEEPALIVE", CURLOPT_TCP_KEEPALIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TCP_KEEPIDLE", CURLOPT_TCP_KEEPIDLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLOPT_TCP_KEEPINTVL", CURLOPT_TCP_KEEPINTVL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSLOPT_ALLOW_BEAST", CURLSSLOPT_ALLOW_BEAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURL_REDIR_POST_303", CURL_REDIR_POST_303, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_AGENT", CURLSSH_AUTH_AGENT, CONST_PERSISTENT); +#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ + REGISTER_LONG_CONSTANT("CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE", CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ + REGISTER_LONG_CONSTANT("CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE", CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ + REGISTER_LONG_CONSTANT("CURLMOPT_MAX_HOST_CONNECTIONS", CURLMOPT_MAX_HOST_CONNECTIONS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ + REGISTER_LONG_CONSTANT("CURLMOPT_MAX_PIPELINE_LENGTH", CURLMOPT_MAX_PIPELINE_LENGTH, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ + REGISTER_LONG_CONSTANT("CURLMOPT_MAX_TOTAL_CONNECTIONS", CURLMOPT_MAX_TOTAL_CONNECTIONS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x071f00 /* Available since 7.31.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SASL_IR", CURLOPT_SASL_IR, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DNS_INTERFACE", CURLOPT_DNS_INTERFACE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DNS_LOCAL_IP4", CURLOPT_DNS_LOCAL_IP4, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DNS_LOCAL_IP6", CURLOPT_DNS_LOCAL_IP6, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_XOAUTH2_BEARER", CURLOPT_XOAUTH2_BEARER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ + REGISTER_LONG_CONSTANT("CURL_HTTP_VERSION_2_0", CURL_HTTP_VERSION_2_0, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_HTTP2", CURL_VERSION_HTTP2, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_LOGIN_OPTIONS", CURLOPT_LOGIN_OPTIONS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_TLSv1_0", CURL_SSLVERSION_TLSv1_0, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_TLSv1_1", CURL_SSLVERSION_TLSv1_1, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_TLSv1_2", CURL_SSLVERSION_TLSv1_2, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072400 /* Available since 7.36.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_EXPECT_100_TIMEOUT_MS", CURLOPT_EXPECT_100_TIMEOUT_MS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072400 /* Available since 7.36.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSL_ENABLE_ALPN", CURLOPT_SSL_ENABLE_ALPN, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072400 /* Available since 7.36.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSL_ENABLE_NPN", CURLOPT_SSL_ENABLE_NPN, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ + REGISTER_LONG_CONSTANT("CURLHEADER_SEPARATE", CURLHEADER_SEPARATE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ + REGISTER_LONG_CONSTANT("CURLHEADER_UNIFIED", CURLHEADER_UNIFIED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_HEADEROPT", CURLOPT_HEADEROPT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXYHEADER", CURLOPT_PROXYHEADER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072600 /* Available since 7.38.0 */ + REGISTER_LONG_CONSTANT("CURLAUTH_NEGOTIATE", CURLAUTH_NEGOTIATE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072600 /* Available since 7.38.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_GSSAPI", CURL_VERSION_GSSAPI, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PINNEDPUBLICKEY", CURLOPT_PINNEDPUBLICKEY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_UNIX_SOCKET_PATH", CURLOPT_UNIX_SOCKET_PATH, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ + REGISTER_LONG_CONSTANT("CURLPROTO_SMB", CURLPROTO_SMB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ + REGISTER_LONG_CONSTANT("CURLPROTO_SMBS", CURLPROTO_SMBS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_KERBEROS5", CURL_VERSION_KERBEROS5, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_UNIX_SOCKETS", CURL_VERSION_UNIX_SOCKETS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072900 /* Available since 7.41.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSL_VERIFYSTATUS", CURLOPT_SSL_VERIFYSTATUS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072a00 /* Available since 7.42.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PATH_AS_IS", CURLOPT_PATH_AS_IS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072a00 /* Available since 7.42.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSL_FALSESTART", CURLOPT_SSL_FALSESTART, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ + REGISTER_LONG_CONSTANT("CURL_HTTP_VERSION_2", CURL_HTTP_VERSION_2, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PIPEWAIT", CURLOPT_PIPEWAIT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SERVICE_NAME", CURLOPT_PROXY_SERVICE_NAME, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SERVICE_NAME", CURLOPT_SERVICE_NAME, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ + REGISTER_LONG_CONSTANT("CURLPIPE_NOTHING", CURLPIPE_NOTHING, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ + REGISTER_LONG_CONSTANT("CURLPIPE_HTTP1", CURLPIPE_HTTP1, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ + REGISTER_LONG_CONSTANT("CURLPIPE_MULTIPLEX", CURLPIPE_MULTIPLEX, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072c00 /* Available since 7.44.0 */ + REGISTER_LONG_CONSTANT("CURLSSLOPT_NO_REVOKE", CURLSSLOPT_NO_REVOKE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072d00 /* Available since 7.45.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DEFAULT_PROTOCOL", CURLOPT_DEFAULT_PROTOCOL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072e00 /* Available since 7.46.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_STREAM_WEIGHT", CURLOPT_STREAM_WEIGHT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072e00 /* Available since 7.46.0 */ + REGISTER_LONG_CONSTANT("CURLMOPT_PUSHFUNCTION", CURLMOPT_PUSHFUNCTION, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072e00 /* Available since 7.46.0 */ + REGISTER_LONG_CONSTANT("CURL_PUSH_OK", CURL_PUSH_OK, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072e00 /* Available since 7.46.0 */ + REGISTER_LONG_CONSTANT("CURL_PUSH_DENY", CURL_PUSH_DENY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072f00 /* Available since 7.47.0 */ + REGISTER_LONG_CONSTANT("CURL_HTTP_VERSION_2TLS", CURL_HTTP_VERSION_2TLS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x072f00 /* Available since 7.47.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_PSL", CURL_VERSION_PSL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073000 /* Available since 7.48.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_TFTP_NO_OPTIONS", CURLOPT_TFTP_NO_OPTIONS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */ + REGISTER_LONG_CONSTANT("CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE", CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_CONNECT_TO", CURLOPT_CONNECT_TO, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_TCP_FASTOPEN", CURLOPT_TCP_FASTOPEN, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_HTTP_VERSION", CURLINFO_HTTP_VERSION, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */ + REGISTER_LONG_CONSTANT("CURLE_WEIRD_SERVER_REPLY", CURLE_WEIRD_SERVER_REPLY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_KEEP_SENDING_ON_ERROR", CURLOPT_KEEP_SENDING_ON_ERROR, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_TLSv1_3", CURL_SSLVERSION_TLSv1_3, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_HTTPS_PROXY", CURL_VERSION_HTTPS_PROXY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_PROTOCOL", CURLINFO_PROTOCOL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_PROXY_SSL_VERIFYRESULT", CURLINFO_PROXY_SSL_VERIFYRESULT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_SCHEME", CURLINFO_SCHEME, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PRE_PROXY", CURLOPT_PRE_PROXY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_CAINFO", CURLOPT_PROXY_CAINFO, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_CAPATH", CURLOPT_PROXY_CAPATH, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_CRLFILE", CURLOPT_PROXY_CRLFILE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_KEYPASSWD", CURLOPT_PROXY_KEYPASSWD, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_PINNEDPUBLICKEY", CURLOPT_PROXY_PINNEDPUBLICKEY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSL_CIPHER_LIST", CURLOPT_PROXY_SSL_CIPHER_LIST, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSL_OPTIONS", CURLOPT_PROXY_SSL_OPTIONS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSL_VERIFYHOST", CURLOPT_PROXY_SSL_VERIFYHOST, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSL_VERIFYPEER", CURLOPT_PROXY_SSL_VERIFYPEER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSLCERT", CURLOPT_PROXY_SSLCERT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSLCERTTYPE", CURLOPT_PROXY_SSLCERTTYPE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSLKEY", CURLOPT_PROXY_SSLKEY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSLKEYTYPE", CURLOPT_PROXY_SSLKEYTYPE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSLVERSION", CURLOPT_PROXY_SSLVERSION, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_TLSAUTH_PASSWORD", CURLOPT_PROXY_TLSAUTH_PASSWORD, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_TLSAUTH_TYPE", CURLOPT_PROXY_TLSAUTH_TYPE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_TLSAUTH_USERNAME", CURLOPT_PROXY_TLSAUTH_USERNAME, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ + REGISTER_LONG_CONSTANT("CURLPROXY_HTTPS", CURLPROXY_HTTPS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */ + REGISTER_LONG_CONSTANT("CURL_MAX_READ_SIZE", CURL_MAX_READ_SIZE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_ABSTRACT_UNIX_SOCKET", CURLOPT_ABSTRACT_UNIX_SOCKET, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_MAX_DEFAULT", CURL_SSLVERSION_MAX_DEFAULT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_MAX_NONE", CURL_SSLVERSION_MAX_NONE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_MAX_TLSv1_0", CURL_SSLVERSION_MAX_TLSv1_0, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_MAX_TLSv1_1", CURL_SSLVERSION_MAX_TLSv1_1, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_MAX_TLSv1_2", CURL_SSLVERSION_MAX_TLSv1_2, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_LONG_CONSTANT("CURL_SSLVERSION_MAX_TLSv1_3", CURL_SSLVERSION_MAX_TLSv1_3, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SUPPRESS_CONNECT_HEADERS", CURLOPT_SUPPRESS_CONNECT_HEADERS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073601 /* Available since 7.54.1 */ + REGISTER_LONG_CONSTANT("CURLAUTH_GSSAPI", CURLAUTH_GSSAPI, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_CONTENT_LENGTH_DOWNLOAD_T", CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_CONTENT_LENGTH_UPLOAD_T", CURLINFO_CONTENT_LENGTH_UPLOAD_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_SIZE_DOWNLOAD_T", CURLINFO_SIZE_DOWNLOAD_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_SIZE_UPLOAD_T", CURLINFO_SIZE_UPLOAD_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_SPEED_DOWNLOAD_T", CURLINFO_SPEED_DOWNLOAD_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_SPEED_UPLOAD_T", CURLINFO_SPEED_UPLOAD_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_REQUEST_TARGET", CURLOPT_REQUEST_TARGET, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SOCKS5_AUTH", CURLOPT_SOCKS5_AUTH, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073800 /* Available since 7.56.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSH_COMPRESSION", CURLOPT_SSH_COMPRESSION, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073800 /* Available since 7.56.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_MULTI_SSL", CURL_VERSION_MULTI_SSL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073900 /* Available since 7.57.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_BROTLI", CURL_VERSION_BROTLI, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073900 /* Available since 7.57.0 */ + REGISTER_LONG_CONSTANT("CURL_LOCK_DATA_CONNECT", CURL_LOCK_DATA_CONNECT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073a00 /* Available since 7.58.0 */ + REGISTER_LONG_CONSTANT("CURLSSH_AUTH_GSSAPI", CURLSSH_AUTH_GSSAPI, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073b00 /* Available since 7.59.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_FILETIME_T", CURLINFO_FILETIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073b00 /* Available since 7.59.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS", CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073b00 /* Available since 7.59.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_TIMEVALUE_LARGE", CURLOPT_TIMEVALUE_LARGE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073c00 /* Available since 7.60.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DNS_SHUFFLE_ADDRESSES", CURLOPT_DNS_SHUFFLE_ADDRESSES, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073c00 /* Available since 7.60.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_HAPROXYPROTOCOL", CURLOPT_HAPROXYPROTOCOL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURL_LOCK_DATA_PSL", CURL_LOCK_DATA_PSL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLAUTH_BEARER", CURLAUTH_BEARER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_APPCONNECT_TIME_T", CURLINFO_APPCONNECT_TIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_CONNECT_TIME_T", CURLINFO_CONNECT_TIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_NAMELOOKUP_TIME_T", CURLINFO_NAMELOOKUP_TIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_PRETRANSFER_TIME_T", CURLINFO_PRETRANSFER_TIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_REDIRECT_TIME_T", CURLINFO_REDIRECT_TIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_STARTTRANSFER_TIME_T", CURLINFO_STARTTRANSFER_TIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_TOTAL_TIME_T", CURLINFO_TOTAL_TIME_T, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DISALLOW_USERNAME_IN_URL", CURLOPT_DISALLOW_USERNAME_IN_URL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_TLS13_CIPHERS", CURLOPT_PROXY_TLS13_CIPHERS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_TLS13_CIPHERS", CURLOPT_TLS13_CIPHERS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DOH_URL", CURLOPT_DOH_URL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_UPKEEP_INTERVAL_MS", CURLOPT_UPKEEP_INTERVAL_MS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_UPLOAD_BUFFERSIZE", CURLOPT_UPLOAD_BUFFERSIZE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074000 /* Available since 7.64.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_HTTP09_ALLOWED", CURLOPT_HTTP09_ALLOWED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_LONG_CONSTANT("CURLALTSVC_H1", CURLALTSVC_H1, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_LONG_CONSTANT("CURLALTSVC_H2", CURLALTSVC_H2, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_LONG_CONSTANT("CURLALTSVC_H3", CURLALTSVC_H3, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_LONG_CONSTANT("CURLALTSVC_READONLYFILE", CURLALTSVC_READONLYFILE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_LONG_CONSTANT("CURLOPT_ALTSVC", CURLOPT_ALTSVC, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_LONG_CONSTANT("CURLOPT_ALTSVC_CTRL", CURLOPT_ALTSVC_CTRL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_ALTSVC", CURL_VERSION_ALTSVC, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074100 /* Available since 7.65.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_MAXAGE_CONN", CURLOPT_MAXAGE_CONN, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SASL_AUTHZID", CURLOPT_SASL_AUTHZID, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_HTTP3", CURL_VERSION_HTTP3, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_RETRY_AFTER", CURLINFO_RETRY_AFTER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074300 /* Available since 7.67.0 */ + REGISTER_LONG_CONSTANT("CURLMOPT_MAX_CONCURRENT_STREAMS", CURLMOPT_MAX_CONCURRENT_STREAMS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074400 /* Available since 7.68.0 */ + REGISTER_LONG_CONSTANT("CURLSSLOPT_NO_PARTIALCHAIN", CURLSSLOPT_NO_PARTIALCHAIN, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_MAIL_RCPT_ALLLOWFAILS", CURLOPT_MAIL_RCPT_ALLLOWFAILS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074600 /* Available since 7.70.0 */ + REGISTER_LONG_CONSTANT("CURLSSLOPT_REVOKE_BEST_EFFORT", CURLSSLOPT_REVOKE_BEST_EFFORT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_ISSUERCERT_BLOB", CURLOPT_ISSUERCERT_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_ISSUERCERT", CURLOPT_PROXY_ISSUERCERT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_ISSUERCERT_BLOB", CURLOPT_PROXY_ISSUERCERT_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSLCERT_BLOB", CURLOPT_PROXY_SSLCERT_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_SSLKEY_BLOB", CURLOPT_PROXY_SSLKEY_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSLCERT_BLOB", CURLOPT_SSLCERT_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSLKEY_BLOB", CURLOPT_SSLKEY_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLPROTO_MQTT", CURLPROTO_MQTT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ + REGISTER_LONG_CONSTANT("CURLSSLOPT_NATIVE_CA", CURLSSLOPT_NATIVE_CA, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_UNICODE", CURL_VERSION_UNICODE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_ZSTD", CURL_VERSION_ZSTD, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLE_PROXY", CURLE_PROXY, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_PROXY_ERROR", CURLINFO_PROXY_ERROR, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSL_EC_CURVES", CURLOPT_SSL_EC_CURVES, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_BAD_ADDRESS_TYPE", CURLPX_BAD_ADDRESS_TYPE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_BAD_VERSION", CURLPX_BAD_VERSION, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_CLOSED", CURLPX_CLOSED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_GSSAPI", CURLPX_GSSAPI, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_GSSAPI_PERMSG", CURLPX_GSSAPI_PERMSG, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_GSSAPI_PROTECTION", CURLPX_GSSAPI_PROTECTION, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_IDENTD", CURLPX_IDENTD, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_IDENTD_DIFFER", CURLPX_IDENTD_DIFFER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_LONG_HOSTNAME", CURLPX_LONG_HOSTNAME, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_LONG_PASSWD", CURLPX_LONG_PASSWD, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_LONG_USER", CURLPX_LONG_USER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_NO_AUTH", CURLPX_NO_AUTH, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_OK", CURLPX_OK, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_RECV_ADDRESS", CURLPX_RECV_ADDRESS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_RECV_AUTH", CURLPX_RECV_AUTH, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_RECV_CONNECT", CURLPX_RECV_CONNECT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_RECV_REQACK", CURLPX_RECV_REQACK, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED", CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_COMMAND_NOT_SUPPORTED", CURLPX_REPLY_COMMAND_NOT_SUPPORTED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_CONNECTION_REFUSED", CURLPX_REPLY_CONNECTION_REFUSED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_GENERAL_SERVER_FAILURE", CURLPX_REPLY_GENERAL_SERVER_FAILURE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_HOST_UNREACHABLE", CURLPX_REPLY_HOST_UNREACHABLE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_NETWORK_UNREACHABLE", CURLPX_REPLY_NETWORK_UNREACHABLE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_NOT_ALLOWED", CURLPX_REPLY_NOT_ALLOWED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_TTL_EXPIRED", CURLPX_REPLY_TTL_EXPIRED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REPLY_UNASSIGNED", CURLPX_REPLY_UNASSIGNED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_REQUEST_FAILED", CURLPX_REQUEST_FAILED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_RESOLVE_HOST", CURLPX_RESOLVE_HOST, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_SEND_AUTH", CURLPX_SEND_AUTH, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_SEND_CONNECT", CURLPX_SEND_CONNECT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_SEND_REQUEST", CURLPX_SEND_REQUEST, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_UNKNOWN_FAIL", CURLPX_UNKNOWN_FAIL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_UNKNOWN_MODE", CURLPX_UNKNOWN_MODE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ + REGISTER_LONG_CONSTANT("CURLPX_USER_REJECTED", CURLPX_USER_REJECTED, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ + REGISTER_LONG_CONSTANT("CURLHSTS_ENABLE", CURLHSTS_ENABLE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ + REGISTER_LONG_CONSTANT("CURLHSTS_READONLYFILE", CURLHSTS_READONLYFILE, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_HSTS", CURLOPT_HSTS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_HSTS_CTRL", CURLOPT_HSTS_CTRL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_HSTS", CURL_VERSION_HSTS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074b00 /* Available since 7.75.0 */ + REGISTER_LONG_CONSTANT("CURLAUTH_AWS_SIGV4", CURLAUTH_AWS_SIGV4, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074b00 /* Available since 7.75.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_AWS_SIGV4", CURLOPT_AWS_SIGV4, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */ + REGISTER_LONG_CONSTANT("CURLINFO_REFERER", CURLINFO_REFERER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DOH_SSL_VERIFYHOST", CURLOPT_DOH_SSL_VERIFYHOST, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DOH_SSL_VERIFYPEER", CURLOPT_DOH_SSL_VERIFYPEER, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_DOH_SSL_VERIFYSTATUS", CURLOPT_DOH_SSL_VERIFYSTATUS, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */ + REGISTER_LONG_CONSTANT("CURL_VERSION_GSASL", CURL_VERSION_GSASL, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074d00 /* Available since 7.77.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_CAINFO_BLOB", CURLOPT_CAINFO_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074d00 /* Available since 7.77.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_PROXY_CAINFO_BLOB", CURLOPT_PROXY_CAINFO_BLOB, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x074d00 /* Available since 7.77.0 */ + REGISTER_LONG_CONSTANT("CURLSSLOPT_AUTO_CLIENT_CERT", CURLSSLOPT_AUTO_CLIENT_CERT, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x075000 /* Available since 7.80.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_MAXLIFETIME_CONN", CURLOPT_MAXLIFETIME_CONN, CONST_PERSISTENT); +#endif +#if LIBCURL_VERSION_NUM >= 0x075000 /* Available since 7.80.0 */ + REGISTER_LONG_CONSTANT("CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256", CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("CURLOPT_SAFE_UPLOAD", CURLOPT_SAFE_UPLOAD, CONST_PERSISTENT); +} + static zend_class_entry *register_class_CurlHandle(void) { zend_class_entry ce, *class_entry; diff --git a/ext/curl/interface.c b/ext/curl/interface.c index 0e9aae4b76458..e1da59a6c16da 100644 --- a/ext/curl/interface.c +++ b/ext/curl/interface.c @@ -367,943 +367,12 @@ PHP_MINFO_FUNCTION(curl) } /* }}} */ -#define REGISTER_CURL_CONSTANT(__c) REGISTER_LONG_CONSTANT(#__c, __c, CONST_CS | CONST_PERSISTENT) - /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(curl) { REGISTER_INI_ENTRIES(); - /* See http://curl.haxx.se/lxr/source/docs/libcurl/symbols-in-versions - or curl src/docs/libcurl/symbols-in-versions for a (almost) complete list - of options and which version they were introduced */ - - /* Constants for curl_setopt() */ - REGISTER_CURL_CONSTANT(CURLOPT_AUTOREFERER); - REGISTER_CURL_CONSTANT(CURLOPT_BINARYTRANSFER); - REGISTER_CURL_CONSTANT(CURLOPT_BUFFERSIZE); - REGISTER_CURL_CONSTANT(CURLOPT_CAINFO); - REGISTER_CURL_CONSTANT(CURLOPT_CAPATH); - REGISTER_CURL_CONSTANT(CURLOPT_CONNECTTIMEOUT); - REGISTER_CURL_CONSTANT(CURLOPT_COOKIE); - REGISTER_CURL_CONSTANT(CURLOPT_COOKIEFILE); - REGISTER_CURL_CONSTANT(CURLOPT_COOKIEJAR); - REGISTER_CURL_CONSTANT(CURLOPT_COOKIESESSION); - REGISTER_CURL_CONSTANT(CURLOPT_CRLF); - REGISTER_CURL_CONSTANT(CURLOPT_CUSTOMREQUEST); - REGISTER_CURL_CONSTANT(CURLOPT_DNS_CACHE_TIMEOUT); - REGISTER_CURL_CONSTANT(CURLOPT_DNS_USE_GLOBAL_CACHE); - REGISTER_CURL_CONSTANT(CURLOPT_EGDSOCKET); - REGISTER_CURL_CONSTANT(CURLOPT_ENCODING); - REGISTER_CURL_CONSTANT(CURLOPT_FAILONERROR); - REGISTER_CURL_CONSTANT(CURLOPT_FILE); - REGISTER_CURL_CONSTANT(CURLOPT_FILETIME); - REGISTER_CURL_CONSTANT(CURLOPT_FOLLOWLOCATION); - REGISTER_CURL_CONSTANT(CURLOPT_FORBID_REUSE); - REGISTER_CURL_CONSTANT(CURLOPT_FRESH_CONNECT); - REGISTER_CURL_CONSTANT(CURLOPT_FTPAPPEND); - REGISTER_CURL_CONSTANT(CURLOPT_FTPLISTONLY); - REGISTER_CURL_CONSTANT(CURLOPT_FTPPORT); - REGISTER_CURL_CONSTANT(CURLOPT_FTP_USE_EPRT); - REGISTER_CURL_CONSTANT(CURLOPT_FTP_USE_EPSV); - REGISTER_CURL_CONSTANT(CURLOPT_HEADER); - REGISTER_CURL_CONSTANT(CURLOPT_HEADERFUNCTION); - REGISTER_CURL_CONSTANT(CURLOPT_HTTP200ALIASES); - REGISTER_CURL_CONSTANT(CURLOPT_HTTPGET); - REGISTER_CURL_CONSTANT(CURLOPT_HTTPHEADER); - REGISTER_CURL_CONSTANT(CURLOPT_HTTPPROXYTUNNEL); - REGISTER_CURL_CONSTANT(CURLOPT_HTTP_VERSION); - REGISTER_CURL_CONSTANT(CURLOPT_INFILE); - REGISTER_CURL_CONSTANT(CURLOPT_INFILESIZE); - REGISTER_CURL_CONSTANT(CURLOPT_INTERFACE); - REGISTER_CURL_CONSTANT(CURLOPT_KRB4LEVEL); - REGISTER_CURL_CONSTANT(CURLOPT_LOW_SPEED_LIMIT); - REGISTER_CURL_CONSTANT(CURLOPT_LOW_SPEED_TIME); - REGISTER_CURL_CONSTANT(CURLOPT_MAXCONNECTS); - REGISTER_CURL_CONSTANT(CURLOPT_MAXREDIRS); - REGISTER_CURL_CONSTANT(CURLOPT_NETRC); - REGISTER_CURL_CONSTANT(CURLOPT_NOBODY); - REGISTER_CURL_CONSTANT(CURLOPT_NOPROGRESS); - REGISTER_CURL_CONSTANT(CURLOPT_NOSIGNAL); - REGISTER_CURL_CONSTANT(CURLOPT_PORT); - REGISTER_CURL_CONSTANT(CURLOPT_POST); - REGISTER_CURL_CONSTANT(CURLOPT_POSTFIELDS); - REGISTER_CURL_CONSTANT(CURLOPT_POSTQUOTE); - REGISTER_CURL_CONSTANT(CURLOPT_PREQUOTE); - REGISTER_CURL_CONSTANT(CURLOPT_PRIVATE); - REGISTER_CURL_CONSTANT(CURLOPT_PROGRESSFUNCTION); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY); - REGISTER_CURL_CONSTANT(CURLOPT_PROXYPORT); - REGISTER_CURL_CONSTANT(CURLOPT_PROXYTYPE); - REGISTER_CURL_CONSTANT(CURLOPT_PROXYUSERPWD); - REGISTER_CURL_CONSTANT(CURLOPT_PUT); - REGISTER_CURL_CONSTANT(CURLOPT_QUOTE); - REGISTER_CURL_CONSTANT(CURLOPT_RANDOM_FILE); - REGISTER_CURL_CONSTANT(CURLOPT_RANGE); - REGISTER_CURL_CONSTANT(CURLOPT_READDATA); - REGISTER_CURL_CONSTANT(CURLOPT_READFUNCTION); - REGISTER_CURL_CONSTANT(CURLOPT_REFERER); - REGISTER_CURL_CONSTANT(CURLOPT_RESUME_FROM); - REGISTER_CURL_CONSTANT(CURLOPT_RETURNTRANSFER); - REGISTER_CURL_CONSTANT(CURLOPT_SHARE); - REGISTER_CURL_CONSTANT(CURLOPT_SSLCERT); - REGISTER_CURL_CONSTANT(CURLOPT_SSLCERTPASSWD); - REGISTER_CURL_CONSTANT(CURLOPT_SSLCERTTYPE); - REGISTER_CURL_CONSTANT(CURLOPT_SSLENGINE); - REGISTER_CURL_CONSTANT(CURLOPT_SSLENGINE_DEFAULT); - REGISTER_CURL_CONSTANT(CURLOPT_SSLKEY); - REGISTER_CURL_CONSTANT(CURLOPT_SSLKEYPASSWD); - REGISTER_CURL_CONSTANT(CURLOPT_SSLKEYTYPE); - REGISTER_CURL_CONSTANT(CURLOPT_SSLVERSION); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_CIPHER_LIST); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_VERIFYHOST); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_VERIFYPEER); - REGISTER_CURL_CONSTANT(CURLOPT_STDERR); - REGISTER_CURL_CONSTANT(CURLOPT_TELNETOPTIONS); - REGISTER_CURL_CONSTANT(CURLOPT_TIMECONDITION); - REGISTER_CURL_CONSTANT(CURLOPT_TIMEOUT); - REGISTER_CURL_CONSTANT(CURLOPT_TIMEVALUE); - REGISTER_CURL_CONSTANT(CURLOPT_TRANSFERTEXT); - REGISTER_CURL_CONSTANT(CURLOPT_UNRESTRICTED_AUTH); - REGISTER_CURL_CONSTANT(CURLOPT_UPLOAD); - REGISTER_CURL_CONSTANT(CURLOPT_URL); - REGISTER_CURL_CONSTANT(CURLOPT_USERAGENT); - REGISTER_CURL_CONSTANT(CURLOPT_USERPWD); - REGISTER_CURL_CONSTANT(CURLOPT_VERBOSE); - REGISTER_CURL_CONSTANT(CURLOPT_WRITEFUNCTION); - REGISTER_CURL_CONSTANT(CURLOPT_WRITEHEADER); -#if LIBCURL_VERSION_NUM >= 0x072000 - REGISTER_CURL_CONSTANT(CURLOPT_XFERINFOFUNCTION); -#endif - - /* */ - REGISTER_CURL_CONSTANT(CURLE_ABORTED_BY_CALLBACK); - REGISTER_CURL_CONSTANT(CURLE_BAD_CALLING_ORDER); - REGISTER_CURL_CONSTANT(CURLE_BAD_CONTENT_ENCODING); - REGISTER_CURL_CONSTANT(CURLE_BAD_DOWNLOAD_RESUME); - REGISTER_CURL_CONSTANT(CURLE_BAD_FUNCTION_ARGUMENT); - REGISTER_CURL_CONSTANT(CURLE_BAD_PASSWORD_ENTERED); - REGISTER_CURL_CONSTANT(CURLE_COULDNT_CONNECT); - REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_HOST); - REGISTER_CURL_CONSTANT(CURLE_COULDNT_RESOLVE_PROXY); - REGISTER_CURL_CONSTANT(CURLE_FAILED_INIT); - REGISTER_CURL_CONSTANT(CURLE_FILE_COULDNT_READ_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_ACCESS_DENIED); - REGISTER_CURL_CONSTANT(CURLE_FTP_BAD_DOWNLOAD_RESUME); - REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_GET_HOST); - REGISTER_CURL_CONSTANT(CURLE_FTP_CANT_RECONNECT); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_GET_SIZE); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_RETR_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_ASCII); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_SET_BINARY); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_STOR_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_COULDNT_USE_REST); - REGISTER_CURL_CONSTANT(CURLE_FTP_PARTIAL_FILE); - REGISTER_CURL_CONSTANT(CURLE_FTP_PORT_FAILED); - REGISTER_CURL_CONSTANT(CURLE_FTP_QUOTE_ERROR); - REGISTER_CURL_CONSTANT(CURLE_FTP_USER_PASSWORD_INCORRECT); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_227_FORMAT); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASS_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_PASV_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_SERVER_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WEIRD_USER_REPLY); - REGISTER_CURL_CONSTANT(CURLE_FTP_WRITE_ERROR); - REGISTER_CURL_CONSTANT(CURLE_FUNCTION_NOT_FOUND); - REGISTER_CURL_CONSTANT(CURLE_GOT_NOTHING); - REGISTER_CURL_CONSTANT(CURLE_HTTP_NOT_FOUND); - REGISTER_CURL_CONSTANT(CURLE_HTTP_PORT_FAILED); - REGISTER_CURL_CONSTANT(CURLE_HTTP_POST_ERROR); - REGISTER_CURL_CONSTANT(CURLE_HTTP_RANGE_ERROR); - REGISTER_CURL_CONSTANT(CURLE_HTTP_RETURNED_ERROR); - REGISTER_CURL_CONSTANT(CURLE_LDAP_CANNOT_BIND); - REGISTER_CURL_CONSTANT(CURLE_LDAP_SEARCH_FAILED); - REGISTER_CURL_CONSTANT(CURLE_LIBRARY_NOT_FOUND); - REGISTER_CURL_CONSTANT(CURLE_MALFORMAT_USER); - REGISTER_CURL_CONSTANT(CURLE_OBSOLETE); - REGISTER_CURL_CONSTANT(CURLE_OK); - REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEDOUT); - REGISTER_CURL_CONSTANT(CURLE_OPERATION_TIMEOUTED); - REGISTER_CURL_CONSTANT(CURLE_OUT_OF_MEMORY); - REGISTER_CURL_CONSTANT(CURLE_PARTIAL_FILE); - REGISTER_CURL_CONSTANT(CURLE_READ_ERROR); - REGISTER_CURL_CONSTANT(CURLE_RECV_ERROR); - REGISTER_CURL_CONSTANT(CURLE_SEND_ERROR); - REGISTER_CURL_CONSTANT(CURLE_SHARE_IN_USE); - REGISTER_CURL_CONSTANT(CURLE_SSL_CACERT); - REGISTER_CURL_CONSTANT(CURLE_SSL_CERTPROBLEM); - REGISTER_CURL_CONSTANT(CURLE_SSL_CIPHER); - REGISTER_CURL_CONSTANT(CURLE_SSL_CONNECT_ERROR); - REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_NOTFOUND); - REGISTER_CURL_CONSTANT(CURLE_SSL_ENGINE_SETFAILED); - REGISTER_CURL_CONSTANT(CURLE_SSL_PEER_CERTIFICATE); -#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ - REGISTER_CURL_CONSTANT(CURLE_SSL_PINNEDPUBKEYNOTMATCH); -#endif - REGISTER_CURL_CONSTANT(CURLE_TELNET_OPTION_SYNTAX); - REGISTER_CURL_CONSTANT(CURLE_TOO_MANY_REDIRECTS); - REGISTER_CURL_CONSTANT(CURLE_UNKNOWN_TELNET_OPTION); - REGISTER_CURL_CONSTANT(CURLE_UNSUPPORTED_PROTOCOL); - REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT); - REGISTER_CURL_CONSTANT(CURLE_URL_MALFORMAT_USER); - REGISTER_CURL_CONSTANT(CURLE_WRITE_ERROR); - - /* cURL info constants */ - REGISTER_CURL_CONSTANT(CURLINFO_CONNECT_TIME); - REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_DOWNLOAD); - REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_UPLOAD); - REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_TYPE); - REGISTER_CURL_CONSTANT(CURLINFO_EFFECTIVE_URL); - REGISTER_CURL_CONSTANT(CURLINFO_FILETIME); - REGISTER_CURL_CONSTANT(CURLINFO_HEADER_OUT); - REGISTER_CURL_CONSTANT(CURLINFO_HEADER_SIZE); - REGISTER_CURL_CONSTANT(CURLINFO_HTTP_CODE); - REGISTER_CURL_CONSTANT(CURLINFO_LASTONE); - REGISTER_CURL_CONSTANT(CURLINFO_NAMELOOKUP_TIME); - REGISTER_CURL_CONSTANT(CURLINFO_PRETRANSFER_TIME); - REGISTER_CURL_CONSTANT(CURLINFO_PRIVATE); - REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_COUNT); - REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_TIME); - REGISTER_CURL_CONSTANT(CURLINFO_REQUEST_SIZE); - REGISTER_CURL_CONSTANT(CURLINFO_SIZE_DOWNLOAD); - REGISTER_CURL_CONSTANT(CURLINFO_SIZE_UPLOAD); - REGISTER_CURL_CONSTANT(CURLINFO_SPEED_DOWNLOAD); - REGISTER_CURL_CONSTANT(CURLINFO_SPEED_UPLOAD); - REGISTER_CURL_CONSTANT(CURLINFO_SSL_VERIFYRESULT); - REGISTER_CURL_CONSTANT(CURLINFO_STARTTRANSFER_TIME); - REGISTER_CURL_CONSTANT(CURLINFO_TOTAL_TIME); -#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_EFFECTIVE_METHOD); -#endif - - /* Other */ - REGISTER_CURL_CONSTANT(CURLMSG_DONE); - REGISTER_CURL_CONSTANT(CURLVERSION_NOW); - - /* Curl Multi Constants */ - REGISTER_CURL_CONSTANT(CURLM_BAD_EASY_HANDLE); - REGISTER_CURL_CONSTANT(CURLM_BAD_HANDLE); - REGISTER_CURL_CONSTANT(CURLM_CALL_MULTI_PERFORM); - REGISTER_CURL_CONSTANT(CURLM_INTERNAL_ERROR); - REGISTER_CURL_CONSTANT(CURLM_OK); - REGISTER_CURL_CONSTANT(CURLM_OUT_OF_MEMORY); -#if LIBCURL_VERSION_NUM >= 0x072001 /* Available since 7.32.1 */ - REGISTER_CURL_CONSTANT(CURLM_ADDED_ALREADY); -#endif - - /* Curl proxy constants */ - REGISTER_CURL_CONSTANT(CURLPROXY_HTTP); - REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS4); - REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS5); - - /* Curl Share constants */ - REGISTER_CURL_CONSTANT(CURLSHOPT_NONE); - REGISTER_CURL_CONSTANT(CURLSHOPT_SHARE); - REGISTER_CURL_CONSTANT(CURLSHOPT_UNSHARE); - - /* Curl Http Version constants (CURLOPT_HTTP_VERSION) */ - REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_1_0); - REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_1_1); - REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_NONE); - - /* Curl Lock constants */ - REGISTER_CURL_CONSTANT(CURL_LOCK_DATA_COOKIE); - REGISTER_CURL_CONSTANT(CURL_LOCK_DATA_DNS); - REGISTER_CURL_CONSTANT(CURL_LOCK_DATA_SSL_SESSION); - - /* Curl NETRC constants (CURLOPT_NETRC) */ - REGISTER_CURL_CONSTANT(CURL_NETRC_IGNORED); - REGISTER_CURL_CONSTANT(CURL_NETRC_OPTIONAL); - REGISTER_CURL_CONSTANT(CURL_NETRC_REQUIRED); - - /* Curl SSL Version constants (CURLOPT_SSLVERSION) */ - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_DEFAULT); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_SSLv2); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_SSLv3); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1); - - /* Curl TIMECOND constants (CURLOPT_TIMECONDITION) */ - REGISTER_CURL_CONSTANT(CURL_TIMECOND_IFMODSINCE); - REGISTER_CURL_CONSTANT(CURL_TIMECOND_IFUNMODSINCE); - REGISTER_CURL_CONSTANT(CURL_TIMECOND_LASTMOD); - REGISTER_CURL_CONSTANT(CURL_TIMECOND_NONE); - - /* Curl version constants */ - REGISTER_CURL_CONSTANT(CURL_VERSION_ASYNCHDNS); - REGISTER_CURL_CONSTANT(CURL_VERSION_CONV); - REGISTER_CURL_CONSTANT(CURL_VERSION_DEBUG); - REGISTER_CURL_CONSTANT(CURL_VERSION_GSSNEGOTIATE); - REGISTER_CURL_CONSTANT(CURL_VERSION_IDN); - REGISTER_CURL_CONSTANT(CURL_VERSION_IPV6); - REGISTER_CURL_CONSTANT(CURL_VERSION_KERBEROS4); - REGISTER_CURL_CONSTANT(CURL_VERSION_LARGEFILE); - REGISTER_CURL_CONSTANT(CURL_VERSION_LIBZ); - REGISTER_CURL_CONSTANT(CURL_VERSION_NTLM); - REGISTER_CURL_CONSTANT(CURL_VERSION_SPNEGO); - REGISTER_CURL_CONSTANT(CURL_VERSION_SSL); - REGISTER_CURL_CONSTANT(CURL_VERSION_SSPI); - - /* Available since 7.10.6 */ - REGISTER_CURL_CONSTANT(CURLOPT_HTTPAUTH); - /* http authentication options */ - REGISTER_CURL_CONSTANT(CURLAUTH_ANY); - REGISTER_CURL_CONSTANT(CURLAUTH_ANYSAFE); - REGISTER_CURL_CONSTANT(CURLAUTH_BASIC); - REGISTER_CURL_CONSTANT(CURLAUTH_DIGEST); - REGISTER_CURL_CONSTANT(CURLAUTH_GSSNEGOTIATE); - REGISTER_CURL_CONSTANT(CURLAUTH_NONE); - REGISTER_CURL_CONSTANT(CURLAUTH_NTLM); - - /* Available since 7.10.7 */ - REGISTER_CURL_CONSTANT(CURLINFO_HTTP_CONNECTCODE); - REGISTER_CURL_CONSTANT(CURLOPT_FTP_CREATE_MISSING_DIRS); - REGISTER_CURL_CONSTANT(CURLOPT_PROXYAUTH); - - /* Available since 7.10.8 */ - REGISTER_CURL_CONSTANT(CURLE_FILESIZE_EXCEEDED); - REGISTER_CURL_CONSTANT(CURLE_LDAP_INVALID_URL); - REGISTER_CURL_CONSTANT(CURLINFO_HTTPAUTH_AVAIL); - REGISTER_CURL_CONSTANT(CURLINFO_RESPONSE_CODE); - REGISTER_CURL_CONSTANT(CURLINFO_PROXYAUTH_AVAIL); - REGISTER_CURL_CONSTANT(CURLOPT_FTP_RESPONSE_TIMEOUT); - REGISTER_CURL_CONSTANT(CURLOPT_IPRESOLVE); - REGISTER_CURL_CONSTANT(CURLOPT_MAXFILESIZE); - REGISTER_CURL_CONSTANT(CURL_IPRESOLVE_V4); - REGISTER_CURL_CONSTANT(CURL_IPRESOLVE_V6); - REGISTER_CURL_CONSTANT(CURL_IPRESOLVE_WHATEVER); - - /* Available since 7.11.0 */ - REGISTER_CURL_CONSTANT(CURLE_FTP_SSL_FAILED); - REGISTER_CURL_CONSTANT(CURLFTPSSL_ALL); - REGISTER_CURL_CONSTANT(CURLFTPSSL_CONTROL); - REGISTER_CURL_CONSTANT(CURLFTPSSL_NONE); - REGISTER_CURL_CONSTANT(CURLFTPSSL_TRY); - REGISTER_CURL_CONSTANT(CURLOPT_FTP_SSL); - REGISTER_CURL_CONSTANT(CURLOPT_NETRC_FILE); - - /* Available since 7.11.1 */ - REGISTER_CURL_CONSTANT(CURLOPT_MAXFILESIZE_LARGE); - - /* Available since 7.11.2 */ - REGISTER_CURL_CONSTANT(CURLOPT_TCP_NODELAY); - - /* Available since 7.12.2 */ - REGISTER_CURL_CONSTANT(CURLFTPAUTH_DEFAULT); - REGISTER_CURL_CONSTANT(CURLFTPAUTH_SSL); - REGISTER_CURL_CONSTANT(CURLFTPAUTH_TLS); - REGISTER_CURL_CONSTANT(CURLOPT_FTPSSLAUTH); - - /* Available since 7.13.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_FTP_ACCOUNT); - - /* Available since 7.12.2 */ - REGISTER_CURL_CONSTANT(CURLINFO_OS_ERRNO); - - /* Available since 7.12.3 */ - REGISTER_CURL_CONSTANT(CURLINFO_NUM_CONNECTS); - REGISTER_CURL_CONSTANT(CURLINFO_SSL_ENGINES); - - /* Available since 7.14.1 */ - REGISTER_CURL_CONSTANT(CURLINFO_COOKIELIST); - REGISTER_CURL_CONSTANT(CURLOPT_COOKIELIST); - REGISTER_CURL_CONSTANT(CURLOPT_IGNORE_CONTENT_LENGTH); - - /* Available since 7.15.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_FTP_SKIP_PASV_IP); - - /* Available since 7.15.1 */ - REGISTER_CURL_CONSTANT(CURLOPT_FTP_FILEMETHOD); - - /* Available since 7.15.2 */ - REGISTER_CURL_CONSTANT(CURLOPT_CONNECT_ONLY); - REGISTER_CURL_CONSTANT(CURLOPT_LOCALPORT); - REGISTER_CURL_CONSTANT(CURLOPT_LOCALPORTRANGE); - - /* Available since 7.15.3 */ - REGISTER_CURL_CONSTANT(CURLFTPMETHOD_DEFAULT); - REGISTER_CURL_CONSTANT(CURLFTPMETHOD_MULTICWD); - REGISTER_CURL_CONSTANT(CURLFTPMETHOD_NOCWD); - REGISTER_CURL_CONSTANT(CURLFTPMETHOD_SINGLECWD); - - /* Available since 7.15.4 */ - REGISTER_CURL_CONSTANT(CURLINFO_FTP_ENTRY_PATH); - - /* Available since 7.15.5 */ - REGISTER_CURL_CONSTANT(CURLOPT_FTP_ALTERNATIVE_TO_USER); - REGISTER_CURL_CONSTANT(CURLOPT_MAX_RECV_SPEED_LARGE); - REGISTER_CURL_CONSTANT(CURLOPT_MAX_SEND_SPEED_LARGE); - - /* Available since 7.16.0 */ - REGISTER_CURL_CONSTANT(CURLE_SSL_CACERT_BADFILE); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_SESSIONID_CACHE); - REGISTER_CURL_CONSTANT(CURLMOPT_PIPELINING); - - /* Available since 7.16.1 */ - REGISTER_CURL_CONSTANT(CURLE_SSH); - REGISTER_CURL_CONSTANT(CURLOPT_FTP_SSL_CCC); - REGISTER_CURL_CONSTANT(CURLOPT_SSH_AUTH_TYPES); - REGISTER_CURL_CONSTANT(CURLOPT_SSH_PRIVATE_KEYFILE); - REGISTER_CURL_CONSTANT(CURLOPT_SSH_PUBLIC_KEYFILE); - REGISTER_CURL_CONSTANT(CURLFTPSSL_CCC_ACTIVE); - REGISTER_CURL_CONSTANT(CURLFTPSSL_CCC_NONE); - REGISTER_CURL_CONSTANT(CURLFTPSSL_CCC_PASSIVE); - - /* Available since 7.16.2 */ - REGISTER_CURL_CONSTANT(CURLOPT_CONNECTTIMEOUT_MS); - REGISTER_CURL_CONSTANT(CURLOPT_HTTP_CONTENT_DECODING); - REGISTER_CURL_CONSTANT(CURLOPT_HTTP_TRANSFER_DECODING); - REGISTER_CURL_CONSTANT(CURLOPT_TIMEOUT_MS); - - /* Available since 7.16.3 */ - REGISTER_CURL_CONSTANT(CURLMOPT_MAXCONNECTS); - - /* Available since 7.16.4 */ - REGISTER_CURL_CONSTANT(CURLOPT_KRBLEVEL); - REGISTER_CURL_CONSTANT(CURLOPT_NEW_DIRECTORY_PERMS); - REGISTER_CURL_CONSTANT(CURLOPT_NEW_FILE_PERMS); - - /* Available since 7.17.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_APPEND); - REGISTER_CURL_CONSTANT(CURLOPT_DIRLISTONLY); - REGISTER_CURL_CONSTANT(CURLOPT_USE_SSL); - /* Curl SSL Constants */ - REGISTER_CURL_CONSTANT(CURLUSESSL_ALL); - REGISTER_CURL_CONSTANT(CURLUSESSL_CONTROL); - REGISTER_CURL_CONSTANT(CURLUSESSL_NONE); - REGISTER_CURL_CONSTANT(CURLUSESSL_TRY); - - /* Available since 7.17.1 */ - REGISTER_CURL_CONSTANT(CURLOPT_SSH_HOST_PUBLIC_KEY_MD5); - - /* Available since 7.18.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TRANSFER_MODE); - REGISTER_CURL_CONSTANT(CURLPAUSE_ALL); - REGISTER_CURL_CONSTANT(CURLPAUSE_CONT); - REGISTER_CURL_CONSTANT(CURLPAUSE_RECV); - REGISTER_CURL_CONSTANT(CURLPAUSE_RECV_CONT); - REGISTER_CURL_CONSTANT(CURLPAUSE_SEND); - REGISTER_CURL_CONSTANT(CURLPAUSE_SEND_CONT); - REGISTER_CURL_CONSTANT(CURL_READFUNC_PAUSE); - REGISTER_CURL_CONSTANT(CURL_WRITEFUNC_PAUSE); - - REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS4A); - REGISTER_CURL_CONSTANT(CURLPROXY_SOCKS5_HOSTNAME); - - /* Available since 7.18.2 */ - REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_URL); - - /* Available since 7.19.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_APPCONNECT_TIME); - REGISTER_CURL_CONSTANT(CURLINFO_PRIMARY_IP); - - REGISTER_CURL_CONSTANT(CURLOPT_ADDRESS_SCOPE); - REGISTER_CURL_CONSTANT(CURLOPT_CRLFILE); - REGISTER_CURL_CONSTANT(CURLOPT_ISSUERCERT); - REGISTER_CURL_CONSTANT(CURLOPT_KEYPASSWD); - - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_ANY); - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_DEFAULT); - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_HOST); - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_KEYBOARD); - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_NONE); - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_PASSWORD); - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_PUBLICKEY); - - /* Available since 7.19.1 */ - REGISTER_CURL_CONSTANT(CURLINFO_CERTINFO); - REGISTER_CURL_CONSTANT(CURLOPT_CERTINFO); - REGISTER_CURL_CONSTANT(CURLOPT_PASSWORD); - REGISTER_CURL_CONSTANT(CURLOPT_POSTREDIR); - REGISTER_CURL_CONSTANT(CURLOPT_PROXYPASSWORD); - REGISTER_CURL_CONSTANT(CURLOPT_PROXYUSERNAME); - REGISTER_CURL_CONSTANT(CURLOPT_USERNAME); - REGISTER_CURL_CONSTANT(CURL_REDIR_POST_301); - REGISTER_CURL_CONSTANT(CURL_REDIR_POST_302); - REGISTER_CURL_CONSTANT(CURL_REDIR_POST_ALL); - - /* Available since 7.19.3 */ - REGISTER_CURL_CONSTANT(CURLAUTH_DIGEST_IE); - - /* Available since 7.19.4 */ - REGISTER_CURL_CONSTANT(CURLINFO_CONDITION_UNMET); - - REGISTER_CURL_CONSTANT(CURLOPT_NOPROXY); - REGISTER_CURL_CONSTANT(CURLOPT_PROTOCOLS); - REGISTER_CURL_CONSTANT(CURLOPT_REDIR_PROTOCOLS); - REGISTER_CURL_CONSTANT(CURLOPT_SOCKS5_GSSAPI_NEC); - REGISTER_CURL_CONSTANT(CURLOPT_SOCKS5_GSSAPI_SERVICE); - REGISTER_CURL_CONSTANT(CURLOPT_TFTP_BLKSIZE); - - REGISTER_CURL_CONSTANT(CURLPROTO_ALL); - REGISTER_CURL_CONSTANT(CURLPROTO_DICT); - REGISTER_CURL_CONSTANT(CURLPROTO_FILE); - REGISTER_CURL_CONSTANT(CURLPROTO_FTP); - REGISTER_CURL_CONSTANT(CURLPROTO_FTPS); - REGISTER_CURL_CONSTANT(CURLPROTO_HTTP); - REGISTER_CURL_CONSTANT(CURLPROTO_HTTPS); - REGISTER_CURL_CONSTANT(CURLPROTO_LDAP); - REGISTER_CURL_CONSTANT(CURLPROTO_LDAPS); - REGISTER_CURL_CONSTANT(CURLPROTO_SCP); - REGISTER_CURL_CONSTANT(CURLPROTO_SFTP); - REGISTER_CURL_CONSTANT(CURLPROTO_TELNET); - REGISTER_CURL_CONSTANT(CURLPROTO_TFTP); - - REGISTER_CURL_CONSTANT(CURLPROXY_HTTP_1_0); - - REGISTER_CURL_CONSTANT(CURLFTP_CREATE_DIR); - REGISTER_CURL_CONSTANT(CURLFTP_CREATE_DIR_NONE); - REGISTER_CURL_CONSTANT(CURLFTP_CREATE_DIR_RETRY); - - /* Available since 7.19.6 */ - REGISTER_CURL_CONSTANT(CURL_VERSION_CURLDEBUG); - REGISTER_CURL_CONSTANT(CURLOPT_SSH_KNOWNHOSTS); - - /* Available since 7.20.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_RTSP_CLIENT_CSEQ); - REGISTER_CURL_CONSTANT(CURLINFO_RTSP_CSEQ_RECV); - REGISTER_CURL_CONSTANT(CURLINFO_RTSP_SERVER_CSEQ); - REGISTER_CURL_CONSTANT(CURLINFO_RTSP_SESSION_ID); - REGISTER_CURL_CONSTANT(CURLOPT_FTP_USE_PRET); - REGISTER_CURL_CONSTANT(CURLOPT_MAIL_FROM); - REGISTER_CURL_CONSTANT(CURLOPT_MAIL_RCPT); - REGISTER_CURL_CONSTANT(CURLOPT_RTSP_CLIENT_CSEQ); - REGISTER_CURL_CONSTANT(CURLOPT_RTSP_REQUEST); - REGISTER_CURL_CONSTANT(CURLOPT_RTSP_SERVER_CSEQ); - REGISTER_CURL_CONSTANT(CURLOPT_RTSP_SESSION_ID); - REGISTER_CURL_CONSTANT(CURLOPT_RTSP_STREAM_URI); - REGISTER_CURL_CONSTANT(CURLOPT_RTSP_TRANSPORT); - REGISTER_CURL_CONSTANT(CURLPROTO_IMAP); - REGISTER_CURL_CONSTANT(CURLPROTO_IMAPS); - REGISTER_CURL_CONSTANT(CURLPROTO_POP3); - REGISTER_CURL_CONSTANT(CURLPROTO_POP3S); - REGISTER_CURL_CONSTANT(CURLPROTO_RTSP); - REGISTER_CURL_CONSTANT(CURLPROTO_SMTP); - REGISTER_CURL_CONSTANT(CURLPROTO_SMTPS); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_ANNOUNCE); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_DESCRIBE); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_GET_PARAMETER); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_OPTIONS); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_PAUSE); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_PLAY); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_RECEIVE); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_RECORD); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_SET_PARAMETER); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_SETUP); - REGISTER_CURL_CONSTANT(CURL_RTSPREQ_TEARDOWN); - - /* Available since 7.21.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_LOCAL_IP); - REGISTER_CURL_CONSTANT(CURLINFO_LOCAL_PORT); - REGISTER_CURL_CONSTANT(CURLINFO_PRIMARY_PORT); - REGISTER_CURL_CONSTANT(CURLOPT_FNMATCH_FUNCTION); - REGISTER_CURL_CONSTANT(CURLOPT_WILDCARDMATCH); - REGISTER_CURL_CONSTANT(CURLPROTO_RTMP); - REGISTER_CURL_CONSTANT(CURLPROTO_RTMPE); - REGISTER_CURL_CONSTANT(CURLPROTO_RTMPS); - REGISTER_CURL_CONSTANT(CURLPROTO_RTMPT); - REGISTER_CURL_CONSTANT(CURLPROTO_RTMPTE); - REGISTER_CURL_CONSTANT(CURLPROTO_RTMPTS); - REGISTER_CURL_CONSTANT(CURL_FNMATCHFUNC_FAIL); - REGISTER_CURL_CONSTANT(CURL_FNMATCHFUNC_MATCH); - REGISTER_CURL_CONSTANT(CURL_FNMATCHFUNC_NOMATCH); - - /* Available since 7.21.2 */ - REGISTER_CURL_CONSTANT(CURLPROTO_GOPHER); - - /* Available since 7.21.3 */ - REGISTER_CURL_CONSTANT(CURLAUTH_ONLY); - REGISTER_CURL_CONSTANT(CURLOPT_RESOLVE); - - /* Available since 7.21.4 */ - REGISTER_CURL_CONSTANT(CURLOPT_TLSAUTH_PASSWORD); - REGISTER_CURL_CONSTANT(CURLOPT_TLSAUTH_TYPE); - REGISTER_CURL_CONSTANT(CURLOPT_TLSAUTH_USERNAME); - REGISTER_CURL_CONSTANT(CURL_TLSAUTH_SRP); - REGISTER_CURL_CONSTANT(CURL_VERSION_TLSAUTH_SRP); - - /* Available since 7.21.6 */ - REGISTER_CURL_CONSTANT(CURLOPT_ACCEPT_ENCODING); - REGISTER_CURL_CONSTANT(CURLOPT_TRANSFER_ENCODING); - - /* Available since 7.22.0 */ - REGISTER_CURL_CONSTANT(CURLAUTH_NTLM_WB); - REGISTER_CURL_CONSTANT(CURLGSSAPI_DELEGATION_FLAG); - REGISTER_CURL_CONSTANT(CURLGSSAPI_DELEGATION_POLICY_FLAG); - REGISTER_CURL_CONSTANT(CURLOPT_GSSAPI_DELEGATION); - REGISTER_CURL_CONSTANT(CURL_VERSION_NTLM_WB); - - /* Available since 7.24.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_ACCEPTTIMEOUT_MS); - REGISTER_CURL_CONSTANT(CURLOPT_DNS_SERVERS); - - /* Available since 7.25.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_MAIL_AUTH); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_OPTIONS); - REGISTER_CURL_CONSTANT(CURLOPT_TCP_KEEPALIVE); - REGISTER_CURL_CONSTANT(CURLOPT_TCP_KEEPIDLE); - REGISTER_CURL_CONSTANT(CURLOPT_TCP_KEEPINTVL); - REGISTER_CURL_CONSTANT(CURLSSLOPT_ALLOW_BEAST); - - /* Available since 7.25.1 */ - REGISTER_CURL_CONSTANT(CURL_REDIR_POST_303); - - /* Available since 7.28.0 */ - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_AGENT); - -#if LIBCURL_VERSION_NUM >= 0x071e00 /* Available since 7.30.0 */ - REGISTER_CURL_CONSTANT(CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE); - REGISTER_CURL_CONSTANT(CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE); - REGISTER_CURL_CONSTANT(CURLMOPT_MAX_HOST_CONNECTIONS); - REGISTER_CURL_CONSTANT(CURLMOPT_MAX_PIPELINE_LENGTH); - REGISTER_CURL_CONSTANT(CURLMOPT_MAX_TOTAL_CONNECTIONS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x071f00 /* Available since 7.31.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_SASL_IR); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072100 /* Available since 7.33.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_DNS_INTERFACE); - REGISTER_CURL_CONSTANT(CURLOPT_DNS_LOCAL_IP4); - REGISTER_CURL_CONSTANT(CURLOPT_DNS_LOCAL_IP6); - REGISTER_CURL_CONSTANT(CURLOPT_XOAUTH2_BEARER); - - REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_2_0); - REGISTER_CURL_CONSTANT(CURL_VERSION_HTTP2); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072200 /* Available since 7.34.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_LOGIN_OPTIONS); - - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1_0); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1_1); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1_2); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072400 /* Available since 7.36.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_EXPECT_100_TIMEOUT_MS); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_ENABLE_ALPN); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_ENABLE_NPN); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072500 /* Available since 7.37.0 */ - REGISTER_CURL_CONSTANT(CURLHEADER_SEPARATE); - REGISTER_CURL_CONSTANT(CURLHEADER_UNIFIED); - REGISTER_CURL_CONSTANT(CURLOPT_HEADEROPT); - REGISTER_CURL_CONSTANT(CURLOPT_PROXYHEADER); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072600 /* Available since 7.38.0 */ - REGISTER_CURL_CONSTANT(CURLAUTH_NEGOTIATE); - REGISTER_CURL_CONSTANT(CURL_VERSION_GSSAPI); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072700 /* Available since 7.39.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_PINNEDPUBLICKEY); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072800 /* Available since 7.40.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_UNIX_SOCKET_PATH); - REGISTER_CURL_CONSTANT(CURLPROTO_SMB); - REGISTER_CURL_CONSTANT(CURLPROTO_SMBS); - REGISTER_CURL_CONSTANT(CURL_VERSION_KERBEROS5); - REGISTER_CURL_CONSTANT(CURL_VERSION_UNIX_SOCKETS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072900 /* Available since 7.41.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_SSL_VERIFYSTATUS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072a00 /* Available since 7.42.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_PATH_AS_IS); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_FALSESTART); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072b00 /* Available since 7.43.0 */ - REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_2); - - REGISTER_CURL_CONSTANT(CURLOPT_PIPEWAIT); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SERVICE_NAME); - REGISTER_CURL_CONSTANT(CURLOPT_SERVICE_NAME); - - REGISTER_CURL_CONSTANT(CURLPIPE_NOTHING); - REGISTER_CURL_CONSTANT(CURLPIPE_HTTP1); - REGISTER_CURL_CONSTANT(CURLPIPE_MULTIPLEX); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072c00 /* Available since 7.44.0 */ - REGISTER_CURL_CONSTANT(CURLSSLOPT_NO_REVOKE); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072d00 /* Available since 7.45.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_DEFAULT_PROTOCOL); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072e00 /* Available since 7.46.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_STREAM_WEIGHT); - REGISTER_CURL_CONSTANT(CURLMOPT_PUSHFUNCTION); - REGISTER_CURL_CONSTANT(CURL_PUSH_OK); - REGISTER_CURL_CONSTANT(CURL_PUSH_DENY); -#endif - -#if LIBCURL_VERSION_NUM >= 0x072f00 /* Available since 7.47.0 */ - REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_2TLS); - REGISTER_CURL_CONSTANT(CURL_VERSION_PSL); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073000 /* Available since 7.48.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_TFTP_NO_OPTIONS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073100 /* Available since 7.49.0 */ - REGISTER_CURL_CONSTANT(CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE); - REGISTER_CURL_CONSTANT(CURLOPT_CONNECT_TO); - REGISTER_CURL_CONSTANT(CURLOPT_TCP_FASTOPEN); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073200 /* Available since 7.50.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_HTTP_VERSION); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073300 /* Available since 7.51.0 */ - REGISTER_CURL_CONSTANT(CURLE_WEIRD_SERVER_REPLY); - REGISTER_CURL_CONSTANT(CURLOPT_KEEP_SENDING_ON_ERROR); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073400 /* Available since 7.52.0 */ - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_TLSv1_3); - REGISTER_CURL_CONSTANT(CURL_VERSION_HTTPS_PROXY); - REGISTER_CURL_CONSTANT(CURLINFO_PROTOCOL); - REGISTER_CURL_CONSTANT(CURLINFO_PROXY_SSL_VERIFYRESULT); - REGISTER_CURL_CONSTANT(CURLINFO_SCHEME); - REGISTER_CURL_CONSTANT(CURLOPT_PRE_PROXY); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAINFO); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAPATH); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CRLFILE); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_KEYPASSWD); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_PINNEDPUBLICKEY); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_CIPHER_LIST); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_OPTIONS); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYHOST); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSL_VERIFYPEER); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERT); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERTTYPE); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEY); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEYTYPE); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLVERSION); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_PASSWORD); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_TYPE); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLSAUTH_USERNAME); - REGISTER_CURL_CONSTANT(CURLPROXY_HTTPS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073500 /* Available since 7.53.0 */ - REGISTER_CURL_CONSTANT(CURL_MAX_READ_SIZE); - REGISTER_CURL_CONSTANT(CURLOPT_ABSTRACT_UNIX_SOCKET); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073600 /* Available since 7.54.0 */ - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_DEFAULT); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_NONE); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_0); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_1); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_2); - REGISTER_CURL_CONSTANT(CURL_SSLVERSION_MAX_TLSv1_3); - REGISTER_CURL_CONSTANT(CURLOPT_SUPPRESS_CONNECT_HEADERS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073601 /* Available since 7.54.1 */ - REGISTER_CURL_CONSTANT(CURLAUTH_GSSAPI); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073700 /* Available since 7.55.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_DOWNLOAD_T); - REGISTER_CURL_CONSTANT(CURLINFO_CONTENT_LENGTH_UPLOAD_T); - REGISTER_CURL_CONSTANT(CURLINFO_SIZE_DOWNLOAD_T); - REGISTER_CURL_CONSTANT(CURLINFO_SIZE_UPLOAD_T); - REGISTER_CURL_CONSTANT(CURLINFO_SPEED_DOWNLOAD_T); - REGISTER_CURL_CONSTANT(CURLINFO_SPEED_UPLOAD_T); - REGISTER_CURL_CONSTANT(CURLOPT_REQUEST_TARGET); - REGISTER_CURL_CONSTANT(CURLOPT_SOCKS5_AUTH); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073800 /* Available since 7.56.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_SSH_COMPRESSION); - REGISTER_CURL_CONSTANT(CURL_VERSION_MULTI_SSL); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073900 /* Available since 7.57.0 */ - REGISTER_CURL_CONSTANT(CURL_VERSION_BROTLI); - REGISTER_CURL_CONSTANT(CURL_LOCK_DATA_CONNECT); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073a00 /* Available since 7.58.0 */ - REGISTER_CURL_CONSTANT(CURLSSH_AUTH_GSSAPI); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073b00 /* Available since 7.59.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_FILETIME_T); - REGISTER_CURL_CONSTANT(CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS); - REGISTER_CURL_CONSTANT(CURLOPT_TIMEVALUE_LARGE); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073c00 /* Available since 7.60.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_DNS_SHUFFLE_ADDRESSES); - REGISTER_CURL_CONSTANT(CURLOPT_HAPROXYPROTOCOL); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073d00 /* Available since 7.61.0 */ - REGISTER_CURL_CONSTANT(CURL_LOCK_DATA_PSL); - REGISTER_CURL_CONSTANT(CURLAUTH_BEARER); - REGISTER_CURL_CONSTANT(CURLINFO_APPCONNECT_TIME_T); - REGISTER_CURL_CONSTANT(CURLINFO_CONNECT_TIME_T); - REGISTER_CURL_CONSTANT(CURLINFO_NAMELOOKUP_TIME_T); - REGISTER_CURL_CONSTANT(CURLINFO_PRETRANSFER_TIME_T); - REGISTER_CURL_CONSTANT(CURLINFO_REDIRECT_TIME_T); - REGISTER_CURL_CONSTANT(CURLINFO_STARTTRANSFER_TIME_T); - REGISTER_CURL_CONSTANT(CURLINFO_TOTAL_TIME_T); - REGISTER_CURL_CONSTANT(CURLOPT_DISALLOW_USERNAME_IN_URL); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_TLS13_CIPHERS); - REGISTER_CURL_CONSTANT(CURLOPT_TLS13_CIPHERS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x073E00 /* Available since 7.62.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_DOH_URL); - REGISTER_CURL_CONSTANT(CURLOPT_UPKEEP_INTERVAL_MS); - REGISTER_CURL_CONSTANT(CURLOPT_UPLOAD_BUFFERSIZE); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074000 /* Available since 7.64.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_HTTP09_ALLOWED); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074001 /* Available since 7.64.1 */ - REGISTER_CURL_CONSTANT(CURLALTSVC_H1); - REGISTER_CURL_CONSTANT(CURLALTSVC_H2); - REGISTER_CURL_CONSTANT(CURLALTSVC_H3); - REGISTER_CURL_CONSTANT(CURLALTSVC_READONLYFILE); - REGISTER_CURL_CONSTANT(CURLOPT_ALTSVC); - REGISTER_CURL_CONSTANT(CURLOPT_ALTSVC_CTRL); - REGISTER_CURL_CONSTANT(CURL_VERSION_ALTSVC); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074100 /* Available since 7.65.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_MAXAGE_CONN); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074200 /* Available since 7.66.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_SASL_AUTHZID); - REGISTER_CURL_CONSTANT(CURL_VERSION_HTTP3); - REGISTER_CURL_CONSTANT(CURLINFO_RETRY_AFTER); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074300 /* Available since 7.67.0 */ - REGISTER_CURL_CONSTANT(CURLMOPT_MAX_CONCURRENT_STREAMS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074400 /* Available since 7.68.0 */ - REGISTER_CURL_CONSTANT(CURLSSLOPT_NO_PARTIALCHAIN); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074500 /* Available since 7.69.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_MAIL_RCPT_ALLLOWFAILS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074600 /* Available since 7.70.0 */ - REGISTER_CURL_CONSTANT(CURLSSLOPT_REVOKE_BEST_EFFORT); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074700 /* Available since 7.71.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_ISSUERCERT_BLOB); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_ISSUERCERT); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_ISSUERCERT_BLOB); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLCERT_BLOB); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_SSLKEY_BLOB); - REGISTER_CURL_CONSTANT(CURLOPT_SSLCERT_BLOB); - REGISTER_CURL_CONSTANT(CURLOPT_SSLKEY_BLOB); - - REGISTER_CURL_CONSTANT(CURLPROTO_MQTT); - - REGISTER_CURL_CONSTANT(CURLSSLOPT_NATIVE_CA); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074800 /* Available since 7.72.0 */ - REGISTER_CURL_CONSTANT(CURL_VERSION_UNICODE); - REGISTER_CURL_CONSTANT(CURL_VERSION_ZSTD); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074900 /* Available since 7.73.0 */ - REGISTER_CURL_CONSTANT(CURLE_PROXY); - REGISTER_CURL_CONSTANT(CURLINFO_PROXY_ERROR); - REGISTER_CURL_CONSTANT(CURLOPT_SSL_EC_CURVES); - REGISTER_CURL_CONSTANT(CURLPX_BAD_ADDRESS_TYPE); - REGISTER_CURL_CONSTANT(CURLPX_BAD_VERSION); - REGISTER_CURL_CONSTANT(CURLPX_CLOSED); - REGISTER_CURL_CONSTANT(CURLPX_GSSAPI); - REGISTER_CURL_CONSTANT(CURLPX_GSSAPI_PERMSG); - REGISTER_CURL_CONSTANT(CURLPX_GSSAPI_PROTECTION); - REGISTER_CURL_CONSTANT(CURLPX_IDENTD); - REGISTER_CURL_CONSTANT(CURLPX_IDENTD_DIFFER); - REGISTER_CURL_CONSTANT(CURLPX_LONG_HOSTNAME); - REGISTER_CURL_CONSTANT(CURLPX_LONG_PASSWD); - REGISTER_CURL_CONSTANT(CURLPX_LONG_USER); - REGISTER_CURL_CONSTANT(CURLPX_NO_AUTH); - REGISTER_CURL_CONSTANT(CURLPX_OK); - REGISTER_CURL_CONSTANT(CURLPX_RECV_ADDRESS); - REGISTER_CURL_CONSTANT(CURLPX_RECV_AUTH); - REGISTER_CURL_CONSTANT(CURLPX_RECV_CONNECT); - REGISTER_CURL_CONSTANT(CURLPX_RECV_REQACK); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_COMMAND_NOT_SUPPORTED); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_CONNECTION_REFUSED); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_GENERAL_SERVER_FAILURE); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_HOST_UNREACHABLE); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_NETWORK_UNREACHABLE); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_NOT_ALLOWED); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_TTL_EXPIRED); - REGISTER_CURL_CONSTANT(CURLPX_REPLY_UNASSIGNED); - REGISTER_CURL_CONSTANT(CURLPX_REQUEST_FAILED); - REGISTER_CURL_CONSTANT(CURLPX_RESOLVE_HOST); - REGISTER_CURL_CONSTANT(CURLPX_SEND_AUTH); - REGISTER_CURL_CONSTANT(CURLPX_SEND_CONNECT); - REGISTER_CURL_CONSTANT(CURLPX_SEND_REQUEST); - REGISTER_CURL_CONSTANT(CURLPX_UNKNOWN_FAIL); - REGISTER_CURL_CONSTANT(CURLPX_UNKNOWN_MODE); - REGISTER_CURL_CONSTANT(CURLPX_USER_REJECTED); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074a00 /* Available since 7.74.0 */ - REGISTER_CURL_CONSTANT(CURLHSTS_ENABLE); - REGISTER_CURL_CONSTANT(CURLHSTS_READONLYFILE); - REGISTER_CURL_CONSTANT(CURLOPT_HSTS); - REGISTER_CURL_CONSTANT(CURLOPT_HSTS_CTRL); - REGISTER_CURL_CONSTANT(CURL_VERSION_HSTS); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074b00 /* Available since 7.75.0 */ - REGISTER_CURL_CONSTANT(CURLAUTH_AWS_SIGV4); - REGISTER_CURL_CONSTANT(CURLOPT_AWS_SIGV4); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074c00 /* Available since 7.76.0 */ - REGISTER_CURL_CONSTANT(CURLINFO_REFERER); - REGISTER_CURL_CONSTANT(CURLOPT_DOH_SSL_VERIFYHOST); - REGISTER_CURL_CONSTANT(CURLOPT_DOH_SSL_VERIFYPEER); - REGISTER_CURL_CONSTANT(CURLOPT_DOH_SSL_VERIFYSTATUS); - REGISTER_CURL_CONSTANT(CURL_VERSION_GSASL); -#endif - -#if LIBCURL_VERSION_NUM >= 0x074d00 /* Available since 7.77.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_CAINFO_BLOB); - REGISTER_CURL_CONSTANT(CURLOPT_PROXY_CAINFO_BLOB); - REGISTER_CURL_CONSTANT(CURLSSLOPT_AUTO_CLIENT_CERT); -#endif - -#if LIBCURL_VERSION_NUM >= 0x075000 /* Available since 7.80.0 */ - REGISTER_CURL_CONSTANT(CURLOPT_MAXLIFETIME_CONN); - REGISTER_CURL_CONSTANT(CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256); -#endif - - REGISTER_CURL_CONSTANT(CURLOPT_SAFE_UPLOAD); + register_curl_symbols(module_number); #ifdef PHP_CURL_NEED_OPENSSL_TSL if (!CRYPTO_get_id_callback()) { @@ -1329,6 +398,7 @@ PHP_MINIT_FUNCTION(curl) curl_ce = register_class_CurlHandle(); curl_ce->create_object = curl_create_object; + curl_ce->default_object_handlers = &curl_object_handlers; memcpy(&curl_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); curl_object_handlers.offset = XtOffsetOf(php_curl, std); @@ -1357,7 +427,6 @@ static zend_object *curl_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &curl_object_handlers; return &intern->std; } diff --git a/ext/curl/multi.c b/ext/curl/multi.c index fb8f08ccdbaa4..4998a2ffa365b 100644 --- a/ext/curl/multi.c +++ b/ext/curl/multi.c @@ -512,14 +512,11 @@ PHP_FUNCTION(curl_multi_setopt) /* CurlMultiHandle class */ -static zend_object_handlers curl_multi_handlers; - static zend_object *curl_multi_create_object(zend_class_entry *class_type) { php_curlm *intern = zend_object_alloc(sizeof(php_curlm), class_type); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &curl_multi_handlers; return &intern->std; } @@ -582,8 +579,11 @@ static HashTable *curl_multi_get_gc(zend_object *object, zval **table, int *n) return zend_std_get_properties(object); } +static zend_object_handlers curl_multi_handlers; + void curl_multi_register_handlers(void) { curl_multi_ce->create_object = curl_multi_create_object; + curl_multi_ce->default_object_handlers = &curl_multi_handlers; memcpy(&curl_multi_handlers, &std_object_handlers, sizeof(zend_object_handlers)); curl_multi_handlers.offset = XtOffsetOf(php_curlm, std); diff --git a/ext/curl/share.c b/ext/curl/share.c index 7f65cb4a27a94..f30790250e0ca 100644 --- a/ext/curl/share.c +++ b/ext/curl/share.c @@ -136,14 +136,11 @@ PHP_FUNCTION(curl_share_strerror) /* CurlShareHandle class */ -static zend_object_handlers curl_share_handlers; - static zend_object *curl_share_create_object(zend_class_entry *class_type) { php_curlsh *intern = zend_object_alloc(sizeof(php_curlsh), class_type); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &curl_share_handlers; return &intern->std; } @@ -161,8 +158,11 @@ void curl_share_free_obj(zend_object *object) zend_object_std_dtor(&sh->std); } +static zend_object_handlers curl_share_handlers; + void curl_share_register_handlers(void) { curl_share_ce->create_object = curl_share_create_object; + curl_share_ce->default_object_handlers = &curl_share_handlers; memcpy(&curl_share_handlers, &std_object_handlers, sizeof(zend_object_handlers)); curl_share_handlers.offset = XtOffsetOf(php_curlsh, std); diff --git a/ext/curl/sync-constants.php b/ext/curl/sync-constants.php index 2ed2efb18a24d..caf03aae59cab 100755 --- a/ext/curl/sync-constants.php +++ b/ext/curl/sync-constants.php @@ -10,17 +10,87 @@ const CURL_DOC_FILE = 'https://curl.haxx.se/libcurl/c/symbols-in-versions.html'; -const SOURCE_FILE = __DIR__ . '/interface.c'; +const SOURCE_FILE = __DIR__ . '/curl_arginfo.h'; const MIN_SUPPORTED_CURL_VERSION = '7.29.0'; -const IGNORED_CONSTANTS = [ +const IGNORED_CURL_CONSTANTS = [ 'CURLOPT_PROGRESSDATA', - 'CURLOPT_XFERINFODATA' + 'CURLOPT_XFERINFODATA', +]; + +const IGNORED_PHP_CONSTANTS = [ + 'CURLOPT_BINARYTRANSFER', + 'CURLOPT_RETURNTRANSFER', + 'CURLOPT_SAFE_UPLOAD', ]; const CONSTANTS_REGEX_PATTERN = '~^CURL(?:OPT|_VERSION)_[A-Z0-9_]+$~'; +/** + * A simple helper to create ASCII tables. + * It assumes that the same number of columns is always given to add(). + */ +class AsciiTable +{ + /** + * @var array + */ + private $values = []; + + /** + * @var array + */ + private $length = []; + + /** + * @var int + */ + private $padding = 4; + + /** + * @param string[] $values + * + * @return void + */ + public function add(string ...$values) : void + { + $this->values[] = $values; + + foreach ($values as $key => $value) { + $length = strlen($value); + + if (isset($this->length[$key])) { + $this->length[$key] = max($this->length[$key], $length); + } else { + $this->length[$key] = $length; + } + } + } + + /** + * @return string + */ + public function __toString() : string + { + $result = ''; + + foreach ($this->values as $values) { + foreach ($values as $key => $value) { + if ($key !== 0) { + $result .= str_repeat(' ', $this->padding); + } + + $result .= str_pad($value, $this->length[$key]); + } + + $result .= "\n"; + } + + return $result; + } +} + $curlConstants = getCurlConstants(); $sourceConstants = getSourceConstants(); @@ -161,7 +231,7 @@ function getCurlConstants() : array $deprecated = $match[3] ?? null; $removed = $match[4] ?? null; - if (in_array($name, IGNORED_CONSTANTS, true) || !preg_match(CONSTANTS_REGEX_PATTERN, $name)) { + if (in_array($name, IGNORED_CURL_CONSTANTS, true) || !preg_match(CONSTANTS_REGEX_PATTERN, $name)) { // not a wanted constant continue; } @@ -187,7 +257,7 @@ function getSourceConstants() : array { $source = file_get_contents(SOURCE_FILE); - preg_match_all('/REGISTER_CURL_CONSTANT\(([A-Za-z0-9_]+)\)/', $source, $matches); + preg_match_all('/REGISTER_LONG_CONSTANT\(\"\w+\", (\w+), .+\)/', $source, $matches); $constants = []; @@ -196,7 +266,7 @@ function getSourceConstants() : array continue; } - if (!preg_match(CONSTANTS_REGEX_PATTERN, $name)) { + if (in_array($name, IGNORED_PHP_CONSTANTS, true) || !preg_match(CONSTANTS_REGEX_PATTERN, $name)) { // not a wanted constant continue; } @@ -254,67 +324,3 @@ function getHexVersion(string $version) : string return $hex; } - -/** - * A simple helper to create ASCII tables. - * It assumes that the same number of columns is always given to add(). - */ -class AsciiTable -{ - /** - * @var array - */ - private $values = []; - - /** - * @var array - */ - private $length = []; - - /** - * @var int - */ - private $padding = 4; - - /** - * @param string[] $values - * - * @return void - */ - public function add(string ...$values) : void - { - $this->values[] = $values; - - foreach ($values as $key => $value) { - $length = strlen($value); - - if (isset($this->length[$key])) { - $this->length[$key] = max($this->length[$key], $length); - } else { - $this->length[$key] = $length; - } - } - } - - /** - * @return string - */ - public function __toString() : string - { - $result = ''; - - foreach ($this->values as $values) { - foreach ($values as $key => $value) { - if ($key !== 0) { - $result .= str_repeat(' ', $this->padding); - } - - $result .= str_pad($value, $this->length[$key]); - } - - $result .= "\n"; - } - - return $result; - } -} diff --git a/ext/date/lib/timezonedb.h b/ext/date/lib/timezonedb.h index 60cc4b3ab6cc9..8db0629127043 100644 --- a/ext/date/lib/timezonedb.h +++ b/ext/date/lib/timezonedb.h @@ -4,606 +4,607 @@ #endif #ifdef TIMELIB_SUPPORT_SLIM_FILE -const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { - { "Africa/Abidjan" , 0x000000 }, - { "Africa/Accra" , 0x00008E }, - { "Africa/Addis_Ababa" , 0x00011C }, - { "Africa/Algiers" , 0x0001E7 }, - { "Africa/Asmara" , 0x0003C9 }, - { "Africa/Asmera" , 0x000494 }, - { "Africa/Bamako" , 0x00055F }, - { "Africa/Bangui" , 0x0005ED }, - { "Africa/Banjul" , 0x0006AD }, - { "Africa/Bissau" , 0x00073B }, - { "Africa/Blantyre" , 0x0007DC }, - { "Africa/Brazzaville" , 0x00086B }, - { "Africa/Bujumbura" , 0x00092B }, - { "Africa/Cairo" , 0x0009BA }, - { "Africa/Casablanca" , 0x000EC2 }, - { "Africa/Ceuta" , 0x00164D }, - { "Africa/Conakry" , 0x001899 }, - { "Africa/Dakar" , 0x001927 }, - { "Africa/Dar_es_Salaam" , 0x0019B5 }, - { "Africa/Djibouti" , 0x001A80 }, - { "Africa/Douala" , 0x001B4B }, - { "Africa/El_Aaiun" , 0x001C0B }, - { "Africa/Freetown" , 0x00233D }, - { "Africa/Gaborone" , 0x0023CB }, - { "Africa/Harare" , 0x00245A }, - { "Africa/Johannesburg" , 0x0024E9 }, - { "Africa/Juba" , 0x0025B3 }, - { "Africa/Kampala" , 0x002789 }, - { "Africa/Khartoum" , 0x002854 }, - { "Africa/Kigali" , 0x002A2A }, - { "Africa/Kinshasa" , 0x002AB9 }, - { "Africa/Lagos" , 0x002B92 }, - { "Africa/Libreville" , 0x002C52 }, - { "Africa/Lome" , 0x002D12 }, - { "Africa/Luanda" , 0x002DA0 }, - { "Africa/Lubumbashi" , 0x002E60 }, - { "Africa/Lusaka" , 0x002F08 }, - { "Africa/Malabo" , 0x002F97 }, - { "Africa/Maputo" , 0x003057 }, - { "Africa/Maseru" , 0x0030E6 }, - { "Africa/Mbabane" , 0x0031B0 }, - { "Africa/Mogadishu" , 0x00327A }, - { "Africa/Monrovia" , 0x003345 }, - { "Africa/Nairobi" , 0x0033F5 }, - { "Africa/Ndjamena" , 0x0034C0 }, - { "Africa/Niamey" , 0x00356C }, - { "Africa/Nouakchott" , 0x00362C }, - { "Africa/Ouagadougou" , 0x0036BA }, - { "Africa/Porto-Novo" , 0x003748 }, - { "Africa/Sao_Tome" , 0x003808 }, - { "Africa/Timbuktu" , 0x0038C1 }, - { "Africa/Tripoli" , 0x00394F }, - { "Africa/Tunis" , 0x003B0A }, - { "Africa/Windhoek" , 0x003CD7 }, - { "America/Adak" , 0x003F61 }, - { "America/Anchorage" , 0x004346 }, - { "America/Anguilla" , 0x004736 }, - { "America/Antigua" , 0x0047F3 }, - { "America/Araguaina" , 0x0048B0 }, - { "America/Argentina/Buenos_Aires" , 0x004B15 }, - { "America/Argentina/Catamarca" , 0x004DFA }, - { "America/Argentina/ComodRivadavia" , 0x0050E5 }, - { "America/Argentina/Cordoba" , 0x0053B5 }, - { "America/Argentina/Jujuy" , 0x0056BB }, - { "America/Argentina/La_Rioja" , 0x005983 }, - { "America/Argentina/Mendoza" , 0x005C69 }, - { "America/Argentina/Rio_Gallegos" , 0x005F45 }, - { "America/Argentina/Salta" , 0x006224 }, - { "America/Argentina/San_Juan" , 0x0064F8 }, - { "America/Argentina/San_Luis" , 0x0067DE }, - { "America/Argentina/Tucuman" , 0x006AC4 }, - { "America/Argentina/Ushuaia" , 0x006DB2 }, - { "America/Aruba" , 0x007097 }, - { "America/Asuncion" , 0x007154 }, - { "America/Atikokan" , 0x0074D4 }, - { "America/Atka" , 0x007596 }, - { "America/Bahia" , 0x00796B }, - { "America/Bahia_Banderas" , 0x007C26 }, - { "America/Barbados" , 0x007E64 }, - { "America/Belem" , 0x007F86 }, - { "America/Belize" , 0x00812E }, - { "America/Blanc-Sablon" , 0x00854F }, - { "America/Boa_Vista" , 0x008628 }, - { "America/Bogota" , 0x0087E9 }, - { "America/Boise" , 0x0088A8 }, - { "America/Buenos_Aires" , 0x008CBB }, - { "America/Cambridge_Bay" , 0x008F8B }, - { "America/Campo_Grande" , 0x0092AB }, - { "America/Cancun" , 0x009681 }, - { "America/Caracas" , 0x0098C2 }, - { "America/Catamarca" , 0x00998C }, - { "America/Cayenne" , 0x009C5C }, - { "America/Cayman" , 0x009CFF }, - { "America/Chicago" , 0x009DA0 }, - { "America/Chihuahua" , 0x00A49A }, - { "America/Coral_Harbour" , 0x00A620 }, - { "America/Cordoba" , 0x00A6C1 }, - { "America/Costa_Rica" , 0x00A991 }, - { "America/Creston" , 0x00AA85 }, - { "America/Cuiaba" , 0x00AB93 }, - { "America/Curacao" , 0x00AF50 }, - { "America/Danmarkshavn" , 0x00B00D }, - { "America/Dawson" , 0x00B1F2 }, - { "America/Dawson_Creek" , 0x00B615 }, - { "America/Denver" , 0x00B8EC }, - { "America/Detroit" , 0x00BD1F }, - { "America/Dominica" , 0x00C0C7 }, - { "America/Edmonton" , 0x00C184 }, - { "America/Eirunepe" , 0x00C577 }, - { "America/El_Salvador" , 0x00C746 }, - { "America/Ensenada" , 0x00C802 }, - { "America/Fort_Nelson" , 0x00CC0F }, - { "America/Fort_Wayne" , 0x00D1D7 }, - { "America/Fortaleza" , 0x00D3F6 }, - { "America/Glace_Bay" , 0x00D60C }, - { "America/Godthab" , 0x00D9A3 }, - { "America/Goose_Bay" , 0x00DB80 }, - { "America/Grand_Turk" , 0x00E1D8 }, - { "America/Grenada" , 0x00E539 }, - { "America/Guadeloupe" , 0x00E5F6 }, - { "America/Guatemala" , 0x00E6B3 }, - { "America/Guayaquil" , 0x00E793 }, - { "America/Guyana" , 0x00E864 }, - { "America/Halifax" , 0x00E925 }, - { "America/Havana" , 0x00EFD7 }, - { "America/Hermosillo" , 0x00F440 }, - { "America/Indiana/Indianapolis" , 0x00F589 }, - { "America/Indiana/Knox" , 0x00F7C1 }, - { "America/Indiana/Marengo" , 0x00FBDA }, - { "America/Indiana/Petersburg" , 0x00FE34 }, - { "America/Indiana/Tell_City" , 0x0100FE }, - { "America/Indiana/Vevay" , 0x010328 }, - { "America/Indiana/Vincennes" , 0x0104BF }, - { "America/Indiana/Winamac" , 0x010715 }, - { "America/Indianapolis" , 0x01099B }, - { "America/Inuvik" , 0x010BBA }, - { "America/Iqaluit" , 0x010E97 }, - { "America/Jamaica" , 0x0111A5 }, - { "America/Jujuy" , 0x011304 }, - { "America/Juneau" , 0x0115C2 }, - { "America/Kentucky/Louisville" , 0x0119A8 }, - { "America/Kentucky/Monticello" , 0x011EAC }, - { "America/Knox_IN" , 0x012298 }, - { "America/Kralendijk" , 0x01269C }, - { "America/La_Paz" , 0x012759 }, - { "America/Lima" , 0x01280F }, - { "America/Los_Angeles" , 0x012936 }, - { "America/Louisville" , 0x012E57 }, - { "America/Lower_Princes" , 0x01333D }, - { "America/Maceio" , 0x0133FA }, - { "America/Managua" , 0x01360C }, - { "America/Manaus" , 0x01373F }, - { "America/Marigot" , 0x0138F6 }, - { "America/Martinique" , 0x0139B3 }, - { "America/Matamoros" , 0x013A71 }, - { "America/Mazatlan" , 0x013C70 }, - { "America/Mendoza" , 0x013E20 }, - { "America/Menominee" , 0x0140F0 }, - { "America/Merida" , 0x0144B0 }, - { "America/Metlakatla" , 0x01460B }, - { "America/Mexico_City" , 0x014881 }, - { "America/Miquelon" , 0x014A35 }, - { "America/Moncton" , 0x014C67 }, - { "America/Monterrey" , 0x015260 }, - { "America/Montevideo" , 0x0153D6 }, - { "America/Montreal" , 0x0157AB }, - { "America/Montserrat" , 0x015E6C }, - { "America/Nassau" , 0x015F29 }, - { "America/New_York" , 0x0165EA }, - { "America/Nipigon" , 0x016CDA }, - { "America/Nome" , 0x01704A }, - { "America/Noronha" , 0x017432 }, - { "America/North_Dakota/Beulah" , 0x017632 }, - { "America/North_Dakota/Center" , 0x017A66 }, - { "America/North_Dakota/New_Salem" , 0x017E65 }, - { "America/Nuuk" , 0x01826A }, - { "America/Ojinaga" , 0x01845D }, - { "America/Panama" , 0x018675 }, - { "America/Pangnirtung" , 0x018716 }, - { "America/Paramaribo" , 0x018A3D }, - { "America/Phoenix" , 0x018B04 }, - { "America/Port-au-Prince" , 0x018C1D }, - { "America/Port_of_Spain" , 0x018E5E }, - { "America/Porto_Acre" , 0x018F1B }, - { "America/Porto_Velho" , 0x0190C9 }, - { "America/Puerto_Rico" , 0x019267 }, - { "America/Punta_Arenas" , 0x019324 }, - { "America/Rainy_River" , 0x0197FD }, - { "America/Rankin_Inlet" , 0x019B6E }, - { "America/Recife" , 0x019E44 }, - { "America/Regina" , 0x01A03E }, - { "America/Resolute" , 0x01A2DD }, - { "America/Rio_Branco" , 0x01A5B4 }, - { "America/Rosario" , 0x01A766 }, - { "America/Santa_Isabel" , 0x01AA36 }, - { "America/Santarem" , 0x01AE43 }, - { "America/Santiago" , 0x01AFF3 }, - { "America/Santo_Domingo" , 0x01B513 }, - { "America/Sao_Paulo" , 0x01B65C }, - { "America/Scoresbysund" , 0x01BA56 }, - { "America/Shiprock" , 0x01BC5E }, - { "America/Sitka" , 0x01C07C }, - { "America/St_Barthelemy" , 0x01C457 }, - { "America/St_Johns" , 0x01C514 }, - { "America/St_Kitts" , 0x01CC98 }, - { "America/St_Lucia" , 0x01CD55 }, - { "America/St_Thomas" , 0x01CE12 }, - { "America/St_Vincent" , 0x01CECF }, - { "America/Swift_Current" , 0x01CF8C }, - { "America/Tegucigalpa" , 0x01D11A }, - { "America/Thule" , 0x01D1E8 }, - { "America/Thunder_Bay" , 0x01D3C9 }, - { "America/Tijuana" , 0x01D760 }, - { "America/Toronto" , 0x01DB8E }, - { "America/Tortola" , 0x01E26C }, - { "America/Vancouver" , 0x01E329 }, - { "America/Virgin" , 0x01E880 }, - { "America/Whitehorse" , 0x01E93D }, - { "America/Winnipeg" , 0x01ED60 }, - { "America/Yakutat" , 0x01F297 }, - { "America/Yellowknife" , 0x01F665 }, - { "Antarctica/Casey" , 0x01F961 }, - { "Antarctica/Davis" , 0x01FA65 }, - { "Antarctica/DumontDUrville" , 0x01FB3B }, - { "Antarctica/Macquarie" , 0x01FBF1 }, - { "Antarctica/Mawson" , 0x01FFDD }, - { "Antarctica/McMurdo" , 0x020087 }, - { "Antarctica/Palmer" , 0x0204CC }, - { "Antarctica/Rothera" , 0x020855 }, - { "Antarctica/South_Pole" , 0x0208EC }, - { "Antarctica/Syowa" , 0x020D0B }, - { "Antarctica/Troll" , 0x020DA1 }, - { "Antarctica/Vostok" , 0x020E63 }, - { "Arctic/Longyearbyen" , 0x020EFA }, - { "Asia/Aden" , 0x0211AA }, - { "Asia/Almaty" , 0x02123B }, - { "Asia/Amman" , 0x0214BF }, - { "Asia/Anadyr" , 0x021865 }, - { "Asia/Aqtau" , 0x021B6B }, - { "Asia/Aqtobe" , 0x021DEA }, - { "Asia/Ashgabat" , 0x02206A }, - { "Asia/Ashkhabad" , 0x0221ED }, - { "Asia/Atyrau" , 0x022370 }, - { "Asia/Baghdad" , 0x0225F9 }, - { "Asia/Bahrain" , 0x02287B }, - { "Asia/Baku" , 0x02291F }, - { "Asia/Bangkok" , 0x022C13 }, - { "Asia/Barnaul" , 0x022CB7 }, - { "Asia/Beirut" , 0x022FC2 }, - { "Asia/Bishkek" , 0x0232AA }, - { "Asia/Brunei" , 0x023520 }, - { "Asia/Calcutta" , 0x0235C6 }, - { "Asia/Chita" , 0x0236AE }, - { "Asia/Choibalsan" , 0x0239BC }, - { "Asia/Chongqing" , 0x023C45 }, - { "Asia/Chungking" , 0x023DDA }, - { "Asia/Colombo" , 0x023F6F }, - { "Asia/Dacca" , 0x024072 }, - { "Asia/Damascus" , 0x024165 }, - { "Asia/Dhaka" , 0x024588 }, - { "Asia/Dili" , 0x02467B }, - { "Asia/Dubai" , 0x024731 }, - { "Asia/Dushanbe" , 0x0247C2 }, - { "Asia/Famagusta" , 0x02493C }, - { "Asia/Gaza" , 0x024D03 }, - { "Asia/Harbin" , 0x0251F1 }, - { "Asia/Hebron" , 0x025386 }, - { "Asia/Ho_Chi_Minh" , 0x025885 }, - { "Asia/Hong_Kong" , 0x02597D }, - { "Asia/Hovd" , 0x025C90 }, - { "Asia/Irkutsk" , 0x025F19 }, - { "Asia/Istanbul" , 0x026237 }, - { "Asia/Jakarta" , 0x0266F3 }, - { "Asia/Jayapura" , 0x026804 }, - { "Asia/Jerusalem" , 0x0268F1 }, - { "Asia/Kabul" , 0x026D2F }, - { "Asia/Kamchatka" , 0x026DDA }, - { "Asia/Karachi" , 0x0270CF }, - { "Asia/Kashgar" , 0x0271E5 }, - { "Asia/Kathmandu" , 0x027276 }, - { "Asia/Katmandu" , 0x027323 }, - { "Asia/Khandyga" , 0x0273D0 }, - { "Asia/Kolkata" , 0x027701 }, - { "Asia/Krasnoyarsk" , 0x0277E9 }, - { "Asia/Kuala_Lumpur" , 0x027AF3 }, - { "Asia/Kuching" , 0x027C13 }, - { "Asia/Kuwait" , 0x027D6D }, - { "Asia/Macao" , 0x027DFE }, - { "Asia/Macau" , 0x028121 }, - { "Asia/Magadan" , 0x028444 }, - { "Asia/Makassar" , 0x02874F }, - { "Asia/Manila" , 0x028862 }, - { "Asia/Muscat" , 0x02895C }, - { "Asia/Nicosia" , 0x0289ED }, - { "Asia/Novokuznetsk" , 0x028C61 }, - { "Asia/Novosibirsk" , 0x028F54 }, - { "Asia/Omsk" , 0x029265 }, - { "Asia/Oral" , 0x029563 }, - { "Asia/Phnom_Penh" , 0x0297EF }, - { "Asia/Pontianak" , 0x029893 }, - { "Asia/Pyongyang" , 0x0299AC }, - { "Asia/Qatar" , 0x029A6F }, - { "Asia/Qostanay" , 0x029B13 }, - { "Asia/Qyzylorda" , 0x029DA0 }, - { "Asia/Rangoon" , 0x02A039 }, - { "Asia/Riyadh" , 0x02A100 }, - { "Asia/Saigon" , 0x02A191 }, - { "Asia/Sakhalin" , 0x02A289 }, - { "Asia/Samarkand" , 0x02A5A0 }, - { "Asia/Seoul" , 0x02A72B }, - { "Asia/Shanghai" , 0x02A8D6 }, - { "Asia/Singapore" , 0x02AA77 }, - { "Asia/Srednekolymsk" , 0x02AB83 }, - { "Asia/Taipei" , 0x02AE97 }, - { "Asia/Tashkent" , 0x02B0A2 }, - { "Asia/Tbilisi" , 0x02B22D }, - { "Asia/Tehran" , 0x02B4AE }, - { "Asia/Tel_Aviv" , 0x02BC8E }, - { "Asia/Thimbu" , 0x02C0CC }, - { "Asia/Thimphu" , 0x02C172 }, - { "Asia/Tokyo" , 0x02C218 }, - { "Asia/Tomsk" , 0x02C2F9 }, - { "Asia/Ujung_Pandang" , 0x02C604 }, - { "Asia/Ulaanbaatar" , 0x02C6CE }, - { "Asia/Ulan_Bator" , 0x02C941 }, - { "Asia/Urumqi" , 0x02CB9F }, - { "Asia/Ust-Nera" , 0x02CC3D }, - { "Asia/Vientiane" , 0x02CF60 }, - { "Asia/Vladivostok" , 0x02D004 }, - { "Asia/Yakutsk" , 0x02D309 }, - { "Asia/Yangon" , 0x02D60D }, - { "Asia/Yekaterinburg" , 0x02D6D4 }, - { "Asia/Yerevan" , 0x02D9E6 }, - { "Atlantic/Azores" , 0x02DCB6 }, - { "Atlantic/Bermuda" , 0x02E275 }, - { "Atlantic/Canary" , 0x02E681 }, - { "Atlantic/Cape_Verde" , 0x02E879 }, - { "Atlantic/Faeroe" , 0x02E934 }, - { "Atlantic/Faroe" , 0x02EAF9 }, - { "Atlantic/Jan_Mayen" , 0x02ECBE }, - { "Atlantic/Madeira" , 0x02EF6E }, - { "Atlantic/Reykjavik" , 0x02F536 }, - { "Atlantic/South_Georgia" , 0x02F833 }, - { "Atlantic/St_Helena" , 0x02F8C3 }, - { "Atlantic/Stanley" , 0x02F951 }, - { "Australia/ACT" , 0x02FC72 }, - { "Australia/Adelaide" , 0x030006 }, - { "Australia/Brisbane" , 0x0303BA }, - { "Australia/Broken_Hill" , 0x0304FE }, - { "Australia/Canberra" , 0x0308D3 }, - { "Australia/Currie" , 0x030C67 }, - { "Australia/Darwin" , 0x03105E }, - { "Australia/Eucla" , 0x031166 }, - { "Australia/Hobart" , 0x0312C5 }, - { "Australia/LHI" , 0x0316C4 }, - { "Australia/Lindeman" , 0x031984 }, - { "Australia/Lord_Howe" , 0x031AF4 }, - { "Australia/Melbourne" , 0x031DC4 }, - { "Australia/North" , 0x032160 }, - { "Australia/NSW" , 0x032256 }, - { "Australia/Perth" , 0x0325EA }, - { "Australia/Queensland" , 0x032746 }, - { "Australia/South" , 0x032873 }, - { "Australia/Sydney" , 0x032C18 }, - { "Australia/Tasmania" , 0x032FC8 }, - { "Australia/Victoria" , 0x0333BF }, - { "Australia/West" , 0x033753 }, - { "Australia/Yancowinna" , 0x033891 }, - { "Brazil/Acre" , 0x033C4A }, - { "Brazil/DeNoronha" , 0x033DF8 }, - { "Brazil/East" , 0x033FE8 }, - { "Brazil/West" , 0x0343AC }, - { "Canada/Atlantic" , 0x034554 }, - { "Canada/Central" , 0x034BE8 }, - { "Canada/Eastern" , 0x035102 }, - { "Canada/Mountain" , 0x0357C3 }, - { "Canada/Newfoundland" , 0x035B99 }, - { "Canada/Pacific" , 0x0362FB }, - { "Canada/Saskatchewan" , 0x036839 }, - { "Canada/Yukon" , 0x036AC3 }, - { "CET" , 0x036ED4 }, - { "Chile/Continental" , 0x03714D }, - { "Chile/EasterIsland" , 0x03765B }, - { "CST6CDT" , 0x037AB5 }, - { "Cuba" , 0x037E78 }, - { "EET" , 0x0382E1 }, - { "Egypt" , 0x0384DE }, - { "Eire" , 0x0389E6 }, - { "EST" , 0x038FCA }, - { "EST5EDT" , 0x039045 }, - { "Etc/GMT" , 0x039408 }, - { "Etc/GMT+0" , 0x039483 }, - { "Etc/GMT+1" , 0x0394FE }, - { "Etc/GMT+10" , 0x03957B }, - { "Etc/GMT+11" , 0x0395F9 }, - { "Etc/GMT+12" , 0x039677 }, - { "Etc/GMT+2" , 0x0396F5 }, - { "Etc/GMT+3" , 0x039772 }, - { "Etc/GMT+4" , 0x0397EF }, - { "Etc/GMT+5" , 0x03986C }, - { "Etc/GMT+6" , 0x0398E9 }, - { "Etc/GMT+7" , 0x039966 }, - { "Etc/GMT+8" , 0x0399E3 }, - { "Etc/GMT+9" , 0x039A60 }, - { "Etc/GMT-0" , 0x039ADD }, - { "Etc/GMT-1" , 0x039B58 }, - { "Etc/GMT-10" , 0x039BD6 }, - { "Etc/GMT-11" , 0x039C55 }, - { "Etc/GMT-12" , 0x039CD4 }, - { "Etc/GMT-13" , 0x039D53 }, - { "Etc/GMT-14" , 0x039DD2 }, - { "Etc/GMT-2" , 0x039E51 }, - { "Etc/GMT-3" , 0x039ECF }, - { "Etc/GMT-4" , 0x039F4D }, - { "Etc/GMT-5" , 0x039FCB }, - { "Etc/GMT-6" , 0x03A049 }, - { "Etc/GMT-7" , 0x03A0C7 }, - { "Etc/GMT-8" , 0x03A145 }, - { "Etc/GMT-9" , 0x03A1C3 }, - { "Etc/GMT0" , 0x03A241 }, - { "Etc/Greenwich" , 0x03A2BC }, - { "Etc/UCT" , 0x03A337 }, - { "Etc/Universal" , 0x03A3B2 }, - { "Etc/UTC" , 0x03A42D }, - { "Etc/Zulu" , 0x03A4A8 }, - { "Europe/Amsterdam" , 0x03A523 }, - { "Europe/Andorra" , 0x03A95E }, - { "Europe/Astrakhan" , 0x03AAEF }, - { "Europe/Athens" , 0x03ADE3 }, - { "Europe/Belfast" , 0x03B099 }, - { "Europe/Belgrade" , 0x03B6E4 }, - { "Europe/Berlin" , 0x03B8CE }, - { "Europe/Bratislava" , 0x03BBAF }, - { "Europe/Brussels" , 0x03BE8E }, - { "Europe/Bucharest" , 0x03C2E9 }, - { "Europe/Budapest" , 0x03C58A }, - { "Europe/Busingen" , 0x03C894 }, - { "Europe/Chisinau" , 0x03CA99 }, - { "Europe/Copenhagen" , 0x03CD98 }, - { "Europe/Dublin" , 0x03D013 }, - { "Europe/Gibraltar" , 0x03D5F7 }, - { "Europe/Guernsey" , 0x03DAC7 }, - { "Europe/Helsinki" , 0x03E112 }, - { "Europe/Isle_of_Man" , 0x03E2FF }, - { "Europe/Istanbul" , 0x03E94A }, - { "Europe/Jersey" , 0x03EE06 }, - { "Europe/Kaliningrad" , 0x03F451 }, - { "Europe/Kiev" , 0x03F7F9 }, - { "Europe/Kirov" , 0x03FA47 }, - { "Europe/Lisbon" , 0x03FD2E }, - { "Europe/Ljubljana" , 0x0402FB }, - { "Europe/London" , 0x0404E5 }, - { "Europe/Luxembourg" , 0x040B30 }, - { "Europe/Madrid" , 0x040F7B }, - { "Europe/Malta" , 0x041318 }, - { "Europe/Mariehamn" , 0x0416C4 }, - { "Europe/Minsk" , 0x0418B1 }, - { "Europe/Monaco" , 0x041BE5 }, - { "Europe/Moscow" , 0x04204B }, - { "Europe/Nicosia" , 0x0423F7 }, - { "Europe/Oslo" , 0x042658 }, - { "Europe/Paris" , 0x042908 }, - { "Europe/Podgorica" , 0x042D65 }, - { "Europe/Prague" , 0x042F4F }, - { "Europe/Riga" , 0x04322E }, - { "Europe/Rome" , 0x0434F0 }, - { "Europe/Samara" , 0x0438AF }, - { "Europe/San_Marino" , 0x043BB0 }, - { "Europe/Sarajevo" , 0x043F6F }, - { "Europe/Saratov" , 0x044159 }, - { "Europe/Simferopol" , 0x04444B }, - { "Europe/Skopje" , 0x0447BE }, - { "Europe/Sofia" , 0x0449A8 }, - { "Europe/Stockholm" , 0x044C04 }, - { "Europe/Tallinn" , 0x044E01 }, - { "Europe/Tirane" , 0x0450B0 }, - { "Europe/Tiraspol" , 0x045318 }, - { "Europe/Ulyanovsk" , 0x045617 }, - { "Europe/Uzhgorod" , 0x04592D }, - { "Europe/Vaduz" , 0x045B62 }, - { "Europe/Vatican" , 0x045D5F }, - { "Europe/Vienna" , 0x04611E }, - { "Europe/Vilnius" , 0x0463BC }, - { "Europe/Volgograd" , 0x04666C }, - { "Europe/Warsaw" , 0x046969 }, - { "Europe/Zagreb" , 0x046D10 }, - { "Europe/Zaporozhye" , 0x046EFA }, - { "Europe/Zurich" , 0x04715A }, - { "Factory" , 0x047357 }, - { "GB" , 0x0473D4 }, - { "GB-Eire" , 0x047A1F }, - { "GMT" , 0x04806A }, - { "GMT+0" , 0x0480E5 }, - { "GMT-0" , 0x048160 }, - { "GMT0" , 0x0481DB }, - { "Greenwich" , 0x048256 }, - { "Hongkong" , 0x0482D1 }, - { "HST" , 0x0485E4 }, - { "Iceland" , 0x048660 }, - { "Indian/Antananarivo" , 0x04895D }, - { "Indian/Chagos" , 0x048A28 }, - { "Indian/Christmas" , 0x048ACC }, - { "Indian/Cocos" , 0x048B5D }, - { "Indian/Comoro" , 0x048BF5 }, - { "Indian/Kerguelen" , 0x048CC0 }, - { "Indian/Mahe" , 0x048D51 }, - { "Indian/Maldives" , 0x048DE2 }, - { "Indian/Mauritius" , 0x048E86 }, - { "Indian/Mayotte" , 0x048F45 }, - { "Indian/Reunion" , 0x049010 }, - { "Iran" , 0x0490A1 }, - { "Israel" , 0x049881 }, - { "Jamaica" , 0x049CBF }, - { "Japan" , 0x049E1E }, - { "Kwajalein" , 0x049EFF }, - { "Libya" , 0x049FE6 }, - { "MET" , 0x04A1A1 }, - { "Mexico/BajaNorte" , 0x04A41A }, - { "Mexico/BajaSur" , 0x04A827 }, - { "Mexico/General" , 0x04A9A2 }, - { "MST" , 0x04AB4A }, - { "MST7MDT" , 0x04ABC5 }, - { "Navajo" , 0x04AF88 }, - { "NZ" , 0x04B3A6 }, - { "NZ-CHAT" , 0x04B7C5 }, - { "Pacific/Apia" , 0x04BAF9 }, - { "Pacific/Auckland" , 0x04BC9C }, - { "Pacific/Bougainville" , 0x04C0D3 }, - { "Pacific/Chatham" , 0x04C1B4 }, - { "Pacific/Chuuk" , 0x04C4F7 }, - { "Pacific/Easter" , 0x04C5D5 }, - { "Pacific/Efate" , 0x04CA3C }, - { "Pacific/Enderbury" , 0x04CB9E }, - { "Pacific/Fakaofo" , 0x04CC56 }, - { "Pacific/Fiji" , 0x04CCFB }, - { "Pacific/Funafuti" , 0x04CEB3 }, - { "Pacific/Galapagos" , 0x04CF45 }, - { "Pacific/Gambier" , 0x04D011 }, - { "Pacific/Guadalcanal" , 0x04D0B0 }, - { "Pacific/Guam" , 0x04D142 }, - { "Pacific/Honolulu" , 0x04D2AC }, - { "Pacific/Johnston" , 0x04D39B }, - { "Pacific/Kanton" , 0x04D484 }, - { "Pacific/Kiritimati" , 0x04D54B }, - { "Pacific/Kosrae" , 0x04D611 }, - { "Pacific/Kwajalein" , 0x04D715 }, - { "Pacific/Majuro" , 0x04D805 }, - { "Pacific/Marquesas" , 0x04D908 }, - { "Pacific/Midway" , 0x04D9B0 }, - { "Pacific/Nauru" , 0x04DA5C }, - { "Pacific/Niue" , 0x04DB1F }, - { "Pacific/Norfolk" , 0x04DBC5 }, - { "Pacific/Noumea" , 0x04DCC8 }, - { "Pacific/Pago_Pago" , 0x04DD9A }, - { "Pacific/Palau" , 0x04DE38 }, - { "Pacific/Pitcairn" , 0x04DED8 }, - { "Pacific/Pohnpei" , 0x04DF7D }, - { "Pacific/Ponape" , 0x04E06D }, - { "Pacific/Port_Moresby" , 0x04E14F }, - { "Pacific/Rarotonga" , 0x04E212 }, - { "Pacific/Saipan" , 0x04E3B4 }, - { "Pacific/Samoa" , 0x04E51E }, - { "Pacific/Tahiti" , 0x04E5BC }, - { "Pacific/Tarawa" , 0x04E65C }, - { "Pacific/Tongatapu" , 0x04E6FD }, - { "Pacific/Truk" , 0x04E7F6 }, - { "Pacific/Wake" , 0x04E8C5 }, - { "Pacific/Wallis" , 0x04E962 }, - { "Pacific/Yap" , 0x04E9F4 }, - { "Poland" , 0x04EAC3 }, - { "Portugal" , 0x04EE6A }, - { "PRC" , 0x04F424 }, - { "PST8PDT" , 0x04F5B9 }, - { "ROC" , 0x04F97C }, - { "ROK" , 0x04FB87 }, - { "Singapore" , 0x04FD32 }, - { "Turkey" , 0x04FE3E }, - { "UCT" , 0x0502FA }, - { "Universal" , 0x050375 }, - { "US/Alaska" , 0x0503F0 }, - { "US/Aleutian" , 0x0507CD }, - { "US/Arizona" , 0x050BA2 }, - { "US/Central" , 0x050C9E }, - { "US/East-Indiana" , 0x051384 }, - { "US/Eastern" , 0x0515A3 }, - { "US/Hawaii" , 0x051C7F }, - { "US/Indiana-Starke" , 0x051D68 }, - { "US/Michigan" , 0x05216C }, - { "US/Mountain" , 0x0524FB }, - { "US/Pacific" , 0x052919 }, - { "US/Samoa" , 0x052E33 }, - { "UTC" , 0x052ED1 }, - { "W-SU" , 0x052F4C }, - { "WET" , 0x0532E4 }, - { "Zulu" , 0x0534DE }, +const timelib_tzdb_index_entry timezonedb_idx_builtin[596] = { + { (char*) "Africa/Abidjan" , 0x000000 }, + { (char*) "Africa/Accra" , 0x00008E }, + { (char*) "Africa/Addis_Ababa" , 0x000356 }, + { (char*) "Africa/Algiers" , 0x0003F9 }, + { (char*) "Africa/Asmara" , 0x0005DB }, + { (char*) "Africa/Asmera" , 0x000691 }, + { (char*) "Africa/Bamako" , 0x000747 }, + { (char*) "Africa/Bangui" , 0x0007F1 }, + { (char*) "Africa/Banjul" , 0x000880 }, + { (char*) "Africa/Bissau" , 0x000934 }, + { (char*) "Africa/Blantyre" , 0x0009D5 }, + { (char*) "Africa/Brazzaville" , 0x000A86 }, + { (char*) "Africa/Bujumbura" , 0x000B15 }, + { (char*) "Africa/Cairo" , 0x000BA4 }, + { (char*) "Africa/Casablanca" , 0x0010AC }, + { (char*) "Africa/Ceuta" , 0x001837 }, + { (char*) "Africa/Conakry" , 0x001A83 }, + { (char*) "Africa/Dakar" , 0x001B2D }, + { (char*) "Africa/Dar_es_Salaam" , 0x001BCE }, + { (char*) "Africa/Djibouti" , 0x001C7B }, + { (char*) "Africa/Douala" , 0x001D0A }, + { (char*) "Africa/El_Aaiun" , 0x001D99 }, + { (char*) "Africa/Freetown" , 0x0024CB }, + { (char*) "Africa/Gaborone" , 0x002638 }, + { (char*) "Africa/Harare" , 0x0026F8 }, + { (char*) "Africa/Johannesburg" , 0x002787 }, + { (char*) "Africa/Juba" , 0x002851 }, + { (char*) "Africa/Kampala" , 0x002A27 }, + { (char*) "Africa/Khartoum" , 0x002AE9 }, + { (char*) "Africa/Kigali" , 0x002CBF }, + { (char*) "Africa/Kinshasa" , 0x002D4E }, + { (char*) "Africa/Lagos" , 0x002DF6 }, + { (char*) "Africa/Libreville" , 0x002EB6 }, + { (char*) "Africa/Lome" , 0x002F45 }, + { (char*) "Africa/Luanda" , 0x002FD3 }, + { (char*) "Africa/Lubumbashi" , 0x003071 }, + { (char*) "Africa/Lusaka" , 0x00312C }, + { (char*) "Africa/Malabo" , 0x0031BB }, + { (char*) "Africa/Maputo" , 0x00325D }, + { (char*) "Africa/Maseru" , 0x0032EC }, + { (char*) "Africa/Mbabane" , 0x003395 }, + { (char*) "Africa/Mogadishu" , 0x003426 }, + { (char*) "Africa/Monrovia" , 0x0034D3 }, + { (char*) "Africa/Nairobi" , 0x003583 }, + { (char*) "Africa/Ndjamena" , 0x00364E }, + { (char*) "Africa/Niamey" , 0x0036FA }, + { (char*) "Africa/Nouakchott" , 0x0037AF }, + { (char*) "Africa/Ouagadougou" , 0x003859 }, + { (char*) "Africa/Porto-Novo" , 0x0038E7 }, + { (char*) "Africa/Sao_Tome" , 0x003989 }, + { (char*) "Africa/Timbuktu" , 0x003A42 }, + { (char*) "Africa/Tripoli" , 0x003AEC }, + { (char*) "Africa/Tunis" , 0x003CA7 }, + { (char*) "Africa/Windhoek" , 0x003E74 }, + { (char*) "America/Adak" , 0x0040FE }, + { (char*) "America/Anchorage" , 0x0044E3 }, + { (char*) "America/Anguilla" , 0x0048D3 }, + { (char*) "America/Antigua" , 0x004961 }, + { (char*) "America/Araguaina" , 0x004A02 }, + { (char*) "America/Argentina/Buenos_Aires" , 0x004C67 }, + { (char*) "America/Argentina/Catamarca" , 0x004F4C }, + { (char*) "America/Argentina/ComodRivadavia" , 0x005237 }, + { (char*) "America/Argentina/Cordoba" , 0x005507 }, + { (char*) "America/Argentina/Jujuy" , 0x00580D }, + { (char*) "America/Argentina/La_Rioja" , 0x005AD5 }, + { (char*) "America/Argentina/Mendoza" , 0x005DBB }, + { (char*) "America/Argentina/Rio_Gallegos" , 0x006097 }, + { (char*) "America/Argentina/Salta" , 0x006376 }, + { (char*) "America/Argentina/San_Juan" , 0x00664A }, + { (char*) "America/Argentina/San_Luis" , 0x006930 }, + { (char*) "America/Argentina/Tucuman" , 0x006C16 }, + { (char*) "America/Argentina/Ushuaia" , 0x006F04 }, + { (char*) "America/Aruba" , 0x0071E9 }, + { (char*) "America/Asuncion" , 0x00728C }, + { (char*) "America/Atikokan" , 0x00760C }, + { (char*) "America/Atka" , 0x007719 }, + { (char*) "America/Bahia" , 0x007AEE }, + { (char*) "America/Bahia_Banderas" , 0x007DA9 }, + { (char*) "America/Barbados" , 0x007FE7 }, + { (char*) "America/Belem" , 0x008109 }, + { (char*) "America/Belize" , 0x0082B1 }, + { (char*) "America/Blanc-Sablon" , 0x0086D2 }, + { (char*) "America/Boa_Vista" , 0x0087C7 }, + { (char*) "America/Bogota" , 0x008988 }, + { (char*) "America/Boise" , 0x008A47 }, + { (char*) "America/Buenos_Aires" , 0x008E5A }, + { (char*) "America/Cambridge_Bay" , 0x00912A }, + { (char*) "America/Campo_Grande" , 0x00944A }, + { (char*) "America/Cancun" , 0x009820 }, + { (char*) "America/Caracas" , 0x009A61 }, + { (char*) "America/Catamarca" , 0x009B2B }, + { (char*) "America/Cayenne" , 0x009DFB }, + { (char*) "America/Cayman" , 0x009E9E }, + { (char*) "America/Chicago" , 0x009F3F }, + { (char*) "America/Chihuahua" , 0x00A639 }, + { (char*) "America/Coral_Harbour" , 0x00A7BF }, + { (char*) "America/Cordoba" , 0x00A8AB }, + { (char*) "America/Costa_Rica" , 0x00AB7B }, + { (char*) "America/Creston" , 0x00AC6F }, + { (char*) "America/Cuiaba" , 0x00AD2B }, + { (char*) "America/Curacao" , 0x00B0E8 }, + { (char*) "America/Danmarkshavn" , 0x00B18B }, + { (char*) "America/Dawson" , 0x00B370 }, + { (char*) "America/Dawson_Creek" , 0x00B793 }, + { (char*) "America/Denver" , 0x00BA6A }, + { (char*) "America/Detroit" , 0x00BE9D }, + { (char*) "America/Dominica" , 0x00C245 }, + { (char*) "America/Edmonton" , 0x00C2D3 }, + { (char*) "America/Eirunepe" , 0x00C6C6 }, + { (char*) "America/El_Salvador" , 0x00C895 }, + { (char*) "America/Ensenada" , 0x00C951 }, + { (char*) "America/Fort_Nelson" , 0x00CD5E }, + { (char*) "America/Fort_Wayne" , 0x00D326 }, + { (char*) "America/Fortaleza" , 0x00D545 }, + { (char*) "America/Glace_Bay" , 0x00D75B }, + { (char*) "America/Godthab" , 0x00DAF2 }, + { (char*) "America/Goose_Bay" , 0x00DCCF }, + { (char*) "America/Grand_Turk" , 0x00E327 }, + { (char*) "America/Grenada" , 0x00E688 }, + { (char*) "America/Guadeloupe" , 0x00E716 }, + { (char*) "America/Guatemala" , 0x00E7A4 }, + { (char*) "America/Guayaquil" , 0x00E884 }, + { (char*) "America/Guyana" , 0x00E955 }, + { (char*) "America/Halifax" , 0x00EA16 }, + { (char*) "America/Havana" , 0x00F0C8 }, + { (char*) "America/Hermosillo" , 0x00F531 }, + { (char*) "America/Indiana/Indianapolis" , 0x00F67A }, + { (char*) "America/Indiana/Knox" , 0x00F8B2 }, + { (char*) "America/Indiana/Marengo" , 0x00FCCB }, + { (char*) "America/Indiana/Petersburg" , 0x00FF25 }, + { (char*) "America/Indiana/Tell_City" , 0x0101EF }, + { (char*) "America/Indiana/Vevay" , 0x010419 }, + { (char*) "America/Indiana/Vincennes" , 0x0105B0 }, + { (char*) "America/Indiana/Winamac" , 0x010806 }, + { (char*) "America/Indianapolis" , 0x010A8C }, + { (char*) "America/Inuvik" , 0x010CAB }, + { (char*) "America/Iqaluit" , 0x010F88 }, + { (char*) "America/Jamaica" , 0x011296 }, + { (char*) "America/Jujuy" , 0x0113F5 }, + { (char*) "America/Juneau" , 0x0116B3 }, + { (char*) "America/Kentucky/Louisville" , 0x011A99 }, + { (char*) "America/Kentucky/Monticello" , 0x011F9D }, + { (char*) "America/Knox_IN" , 0x012389 }, + { (char*) "America/Kralendijk" , 0x01278D }, + { (char*) "America/La_Paz" , 0x012830 }, + { (char*) "America/Lima" , 0x0128E6 }, + { (char*) "America/Los_Angeles" , 0x012A0D }, + { (char*) "America/Louisville" , 0x012F2E }, + { (char*) "America/Lower_Princes" , 0x013414 }, + { (char*) "America/Maceio" , 0x0134B7 }, + { (char*) "America/Managua" , 0x0136C9 }, + { (char*) "America/Manaus" , 0x0137FC }, + { (char*) "America/Marigot" , 0x0139B3 }, + { (char*) "America/Martinique" , 0x013A41 }, + { (char*) "America/Matamoros" , 0x013AFF }, + { (char*) "America/Mazatlan" , 0x013CFE }, + { (char*) "America/Mendoza" , 0x013EAE }, + { (char*) "America/Menominee" , 0x01417E }, + { (char*) "America/Merida" , 0x01453E }, + { (char*) "America/Metlakatla" , 0x014699 }, + { (char*) "America/Mexico_City" , 0x01490F }, + { (char*) "America/Miquelon" , 0x014AC3 }, + { (char*) "America/Moncton" , 0x014CF5 }, + { (char*) "America/Monterrey" , 0x0152EE }, + { (char*) "America/Montevideo" , 0x015464 }, + { (char*) "America/Montreal" , 0x015839 }, + { (char*) "America/Montserrat" , 0x015EFA }, + { (char*) "America/Nassau" , 0x015F88 }, + { (char*) "America/New_York" , 0x016382 }, + { (char*) "America/Nipigon" , 0x016A72 }, + { (char*) "America/Nome" , 0x016DE2 }, + { (char*) "America/Noronha" , 0x0171CA }, + { (char*) "America/North_Dakota/Beulah" , 0x0173CA }, + { (char*) "America/North_Dakota/Center" , 0x0177FE }, + { (char*) "America/North_Dakota/New_Salem" , 0x017BFD }, + { (char*) "America/Nuuk" , 0x018002 }, + { (char*) "America/Ojinaga" , 0x0181F5 }, + { (char*) "America/Panama" , 0x01840D }, + { (char*) "America/Pangnirtung" , 0x0184AE }, + { (char*) "America/Paramaribo" , 0x0187D5 }, + { (char*) "America/Phoenix" , 0x01889C }, + { (char*) "America/Port-au-Prince" , 0x0189B5 }, + { (char*) "America/Port_of_Spain" , 0x018BF6 }, + { (char*) "America/Porto_Acre" , 0x018C84 }, + { (char*) "America/Porto_Velho" , 0x018E32 }, + { (char*) "America/Puerto_Rico" , 0x018FD0 }, + { (char*) "America/Punta_Arenas" , 0x01908D }, + { (char*) "America/Rainy_River" , 0x01956F }, + { (char*) "America/Rankin_Inlet" , 0x0198E0 }, + { (char*) "America/Recife" , 0x019BB6 }, + { (char*) "America/Regina" , 0x019DB0 }, + { (char*) "America/Resolute" , 0x01A04F }, + { (char*) "America/Rio_Branco" , 0x01A326 }, + { (char*) "America/Rosario" , 0x01A4D8 }, + { (char*) "America/Santa_Isabel" , 0x01A7A8 }, + { (char*) "America/Santarem" , 0x01ABB5 }, + { (char*) "America/Santiago" , 0x01AD65 }, + { (char*) "America/Santo_Domingo" , 0x01B2CD }, + { (char*) "America/Sao_Paulo" , 0x01B416 }, + { (char*) "America/Scoresbysund" , 0x01B810 }, + { (char*) "America/Shiprock" , 0x01BA18 }, + { (char*) "America/Sitka" , 0x01BE36 }, + { (char*) "America/St_Barthelemy" , 0x01C211 }, + { (char*) "America/St_Johns" , 0x01C29F }, + { (char*) "America/St_Kitts" , 0x01CA23 }, + { (char*) "America/St_Lucia" , 0x01CAB1 }, + { (char*) "America/St_Thomas" , 0x01CB52 }, + { (char*) "America/St_Vincent" , 0x01CBE0 }, + { (char*) "America/Swift_Current" , 0x01CC81 }, + { (char*) "America/Tegucigalpa" , 0x01CE0F }, + { (char*) "America/Thule" , 0x01CEDD }, + { (char*) "America/Thunder_Bay" , 0x01D0BE }, + { (char*) "America/Tijuana" , 0x01D455 }, + { (char*) "America/Toronto" , 0x01D883 }, + { (char*) "America/Tortola" , 0x01DF61 }, + { (char*) "America/Vancouver" , 0x01DFEF }, + { (char*) "America/Virgin" , 0x01E546 }, + { (char*) "America/Whitehorse" , 0x01E5D4 }, + { (char*) "America/Winnipeg" , 0x01E9F7 }, + { (char*) "America/Yakutat" , 0x01EF2E }, + { (char*) "America/Yellowknife" , 0x01F2FC }, + { (char*) "Antarctica/Casey" , 0x01F5F8 }, + { (char*) "Antarctica/Davis" , 0x01F6FC }, + { (char*) "Antarctica/DumontDUrville" , 0x01F7D2 }, + { (char*) "Antarctica/Macquarie" , 0x01F886 }, + { (char*) "Antarctica/Mawson" , 0x01FC72 }, + { (char*) "Antarctica/McMurdo" , 0x01FD1C }, + { (char*) "Antarctica/Palmer" , 0x02004E }, + { (char*) "Antarctica/Rothera" , 0x0203D7 }, + { (char*) "Antarctica/South_Pole" , 0x02046E }, + { (char*) "Antarctica/Syowa" , 0x02077A }, + { (char*) "Antarctica/Troll" , 0x020810 }, + { (char*) "Antarctica/Vostok" , 0x0208D2 }, + { (char*) "Arctic/Longyearbyen" , 0x020969 }, + { (char*) "Asia/Aden" , 0x020C19 }, + { (char*) "Asia/Almaty" , 0x020CAA }, + { (char*) "Asia/Amman" , 0x020F2E }, + { (char*) "Asia/Anadyr" , 0x0212D4 }, + { (char*) "Asia/Aqtau" , 0x0215DA }, + { (char*) "Asia/Aqtobe" , 0x021859 }, + { (char*) "Asia/Ashgabat" , 0x021AD9 }, + { (char*) "Asia/Ashkhabad" , 0x021C5C }, + { (char*) "Asia/Atyrau" , 0x021DDF }, + { (char*) "Asia/Baghdad" , 0x022068 }, + { (char*) "Asia/Bahrain" , 0x0222EA }, + { (char*) "Asia/Baku" , 0x0223A3 }, + { (char*) "Asia/Bangkok" , 0x022697 }, + { (char*) "Asia/Barnaul" , 0x02273B }, + { (char*) "Asia/Beirut" , 0x022A46 }, + { (char*) "Asia/Bishkek" , 0x022D2E }, + { (char*) "Asia/Brunei" , 0x022FA4 }, + { (char*) "Asia/Calcutta" , 0x02304A }, + { (char*) "Asia/Chita" , 0x023132 }, + { (char*) "Asia/Choibalsan" , 0x023440 }, + { (char*) "Asia/Chongqing" , 0x0236C9 }, + { (char*) "Asia/Chungking" , 0x02385E }, + { (char*) "Asia/Colombo" , 0x0239F3 }, + { (char*) "Asia/Dacca" , 0x023AF6 }, + { (char*) "Asia/Damascus" , 0x023BE9 }, + { (char*) "Asia/Dhaka" , 0x02400C }, + { (char*) "Asia/Dili" , 0x0240FF }, + { (char*) "Asia/Dubai" , 0x0241B5 }, + { (char*) "Asia/Dushanbe" , 0x024246 }, + { (char*) "Asia/Famagusta" , 0x0243C0 }, + { (char*) "Asia/Gaza" , 0x024787 }, + { (char*) "Asia/Harbin" , 0x024C75 }, + { (char*) "Asia/Hebron" , 0x024E0A }, + { (char*) "Asia/Ho_Chi_Minh" , 0x025309 }, + { (char*) "Asia/Hong_Kong" , 0x025401 }, + { (char*) "Asia/Hovd" , 0x025714 }, + { (char*) "Asia/Irkutsk" , 0x02599D }, + { (char*) "Asia/Istanbul" , 0x025CBB }, + { (char*) "Asia/Jakarta" , 0x026177 }, + { (char*) "Asia/Jayapura" , 0x026288 }, + { (char*) "Asia/Jerusalem" , 0x026375 }, + { (char*) "Asia/Kabul" , 0x0267B3 }, + { (char*) "Asia/Kamchatka" , 0x02685E }, + { (char*) "Asia/Karachi" , 0x026B53 }, + { (char*) "Asia/Kashgar" , 0x026C69 }, + { (char*) "Asia/Kathmandu" , 0x026CFA }, + { (char*) "Asia/Katmandu" , 0x026DA7 }, + { (char*) "Asia/Khandyga" , 0x026E54 }, + { (char*) "Asia/Kolkata" , 0x027185 }, + { (char*) "Asia/Krasnoyarsk" , 0x02726D }, + { (char*) "Asia/Kuala_Lumpur" , 0x027577 }, + { (char*) "Asia/Kuching" , 0x027697 }, + { (char*) "Asia/Kuwait" , 0x0277F1 }, + { (char*) "Asia/Macao" , 0x027882 }, + { (char*) "Asia/Macau" , 0x027BA5 }, + { (char*) "Asia/Magadan" , 0x027EC8 }, + { (char*) "Asia/Makassar" , 0x0281D3 }, + { (char*) "Asia/Manila" , 0x0282E6 }, + { (char*) "Asia/Muscat" , 0x0283E0 }, + { (char*) "Asia/Nicosia" , 0x028471 }, + { (char*) "Asia/Novokuznetsk" , 0x0286E5 }, + { (char*) "Asia/Novosibirsk" , 0x0289D8 }, + { (char*) "Asia/Omsk" , 0x028CE9 }, + { (char*) "Asia/Oral" , 0x028FE7 }, + { (char*) "Asia/Phnom_Penh" , 0x029273 }, + { (char*) "Asia/Pontianak" , 0x029347 }, + { (char*) "Asia/Pyongyang" , 0x029460 }, + { (char*) "Asia/Qatar" , 0x029523 }, + { (char*) "Asia/Qostanay" , 0x0295C7 }, + { (char*) "Asia/Qyzylorda" , 0x029854 }, + { (char*) "Asia/Rangoon" , 0x029AED }, + { (char*) "Asia/Riyadh" , 0x029BB4 }, + { (char*) "Asia/Saigon" , 0x029C45 }, + { (char*) "Asia/Sakhalin" , 0x029D3D }, + { (char*) "Asia/Samarkand" , 0x02A054 }, + { (char*) "Asia/Seoul" , 0x02A1DF }, + { (char*) "Asia/Shanghai" , 0x02A38A }, + { (char*) "Asia/Singapore" , 0x02A52B }, + { (char*) "Asia/Srednekolymsk" , 0x02A637 }, + { (char*) "Asia/Taipei" , 0x02A94B }, + { (char*) "Asia/Tashkent" , 0x02AB56 }, + { (char*) "Asia/Tbilisi" , 0x02ACE1 }, + { (char*) "Asia/Tehran" , 0x02AF62 }, + { (char*) "Asia/Tel_Aviv" , 0x02B29A }, + { (char*) "Asia/Thimbu" , 0x02B6D8 }, + { (char*) "Asia/Thimphu" , 0x02B77E }, + { (char*) "Asia/Tokyo" , 0x02B824 }, + { (char*) "Asia/Tomsk" , 0x02B905 }, + { (char*) "Asia/Ujung_Pandang" , 0x02BC10 }, + { (char*) "Asia/Ulaanbaatar" , 0x02BCDA }, + { (char*) "Asia/Ulan_Bator" , 0x02BF4D }, + { (char*) "Asia/Urumqi" , 0x02C1AB }, + { (char*) "Asia/Ust-Nera" , 0x02C249 }, + { (char*) "Asia/Vientiane" , 0x02C56C }, + { (char*) "Asia/Vladivostok" , 0x02C652 }, + { (char*) "Asia/Yakutsk" , 0x02C957 }, + { (char*) "Asia/Yangon" , 0x02CC5B }, + { (char*) "Asia/Yekaterinburg" , 0x02CD22 }, + { (char*) "Asia/Yerevan" , 0x02D034 }, + { (char*) "Atlantic/Azores" , 0x02D304 }, + { (char*) "Atlantic/Bermuda" , 0x02D8C3 }, + { (char*) "Atlantic/Canary" , 0x02DCCF }, + { (char*) "Atlantic/Cape_Verde" , 0x02DEC7 }, + { (char*) "Atlantic/Faeroe" , 0x02DF82 }, + { (char*) "Atlantic/Faroe" , 0x02E147 }, + { (char*) "Atlantic/Jan_Mayen" , 0x02E30C }, + { (char*) "Atlantic/Madeira" , 0x02E5BC }, + { (char*) "Atlantic/Reykjavik" , 0x02EB84 }, + { (char*) "Atlantic/South_Georgia" , 0x02EE81 }, + { (char*) "Atlantic/St_Helena" , 0x02EF11 }, + { (char*) "Atlantic/Stanley" , 0x02EFB2 }, + { (char*) "Australia/ACT" , 0x02F2D3 }, + { (char*) "Australia/Adelaide" , 0x02F667 }, + { (char*) "Australia/Brisbane" , 0x02FA1B }, + { (char*) "Australia/Broken_Hill" , 0x02FB5F }, + { (char*) "Australia/Canberra" , 0x02FF34 }, + { (char*) "Australia/Currie" , 0x0302C8 }, + { (char*) "Australia/Darwin" , 0x0306BF }, + { (char*) "Australia/Eucla" , 0x0307C7 }, + { (char*) "Australia/Hobart" , 0x030926 }, + { (char*) "Australia/LHI" , 0x030D25 }, + { (char*) "Australia/Lindeman" , 0x030FE5 }, + { (char*) "Australia/Lord_Howe" , 0x031155 }, + { (char*) "Australia/Melbourne" , 0x031425 }, + { (char*) "Australia/North" , 0x0317C1 }, + { (char*) "Australia/NSW" , 0x0318B7 }, + { (char*) "Australia/Perth" , 0x031C4B }, + { (char*) "Australia/Queensland" , 0x031DA7 }, + { (char*) "Australia/South" , 0x031ED4 }, + { (char*) "Australia/Sydney" , 0x032279 }, + { (char*) "Australia/Tasmania" , 0x032629 }, + { (char*) "Australia/Victoria" , 0x032A20 }, + { (char*) "Australia/West" , 0x032DB4 }, + { (char*) "Australia/Yancowinna" , 0x032EF2 }, + { (char*) "Brazil/Acre" , 0x0332AB }, + { (char*) "Brazil/DeNoronha" , 0x033459 }, + { (char*) "Brazil/East" , 0x033649 }, + { (char*) "Brazil/West" , 0x033A0D }, + { (char*) "Canada/Atlantic" , 0x033BB5 }, + { (char*) "Canada/Central" , 0x034249 }, + { (char*) "Canada/Eastern" , 0x034763 }, + { (char*) "Canada/Mountain" , 0x034E24 }, + { (char*) "Canada/Newfoundland" , 0x0351FA }, + { (char*) "Canada/Pacific" , 0x03595C }, + { (char*) "Canada/Saskatchewan" , 0x035E9A }, + { (char*) "Canada/Yukon" , 0x036124 }, + { (char*) "CET" , 0x036535 }, + { (char*) "Chile/Continental" , 0x0367AE }, + { (char*) "Chile/EasterIsland" , 0x036D04 }, + { (char*) "CST6CDT" , 0x0371A6 }, + { (char*) "Cuba" , 0x037569 }, + { (char*) "EET" , 0x0379D2 }, + { (char*) "Egypt" , 0x037BCF }, + { (char*) "Eire" , 0x0380D7 }, + { (char*) "EST" , 0x0386BB }, + { (char*) "EST5EDT" , 0x038736 }, + { (char*) "Etc/GMT" , 0x038AF9 }, + { (char*) "Etc/GMT+0" , 0x038B74 }, + { (char*) "Etc/GMT+1" , 0x038BEF }, + { (char*) "Etc/GMT+10" , 0x038C6C }, + { (char*) "Etc/GMT+11" , 0x038CEA }, + { (char*) "Etc/GMT+12" , 0x038D68 }, + { (char*) "Etc/GMT+2" , 0x038DE6 }, + { (char*) "Etc/GMT+3" , 0x038E63 }, + { (char*) "Etc/GMT+4" , 0x038EE0 }, + { (char*) "Etc/GMT+5" , 0x038F5D }, + { (char*) "Etc/GMT+6" , 0x038FDA }, + { (char*) "Etc/GMT+7" , 0x039057 }, + { (char*) "Etc/GMT+8" , 0x0390D4 }, + { (char*) "Etc/GMT+9" , 0x039151 }, + { (char*) "Etc/GMT-0" , 0x0391CE }, + { (char*) "Etc/GMT-1" , 0x039249 }, + { (char*) "Etc/GMT-10" , 0x0392C7 }, + { (char*) "Etc/GMT-11" , 0x039346 }, + { (char*) "Etc/GMT-12" , 0x0393C5 }, + { (char*) "Etc/GMT-13" , 0x039444 }, + { (char*) "Etc/GMT-14" , 0x0394C3 }, + { (char*) "Etc/GMT-2" , 0x039542 }, + { (char*) "Etc/GMT-3" , 0x0395C0 }, + { (char*) "Etc/GMT-4" , 0x03963E }, + { (char*) "Etc/GMT-5" , 0x0396BC }, + { (char*) "Etc/GMT-6" , 0x03973A }, + { (char*) "Etc/GMT-7" , 0x0397B8 }, + { (char*) "Etc/GMT-8" , 0x039836 }, + { (char*) "Etc/GMT-9" , 0x0398B4 }, + { (char*) "Etc/GMT0" , 0x039932 }, + { (char*) "Etc/Greenwich" , 0x0399AD }, + { (char*) "Etc/UCT" , 0x039A28 }, + { (char*) "Etc/Universal" , 0x039AA3 }, + { (char*) "Etc/UTC" , 0x039B1E }, + { (char*) "Etc/Zulu" , 0x039B99 }, + { (char*) "Europe/Amsterdam" , 0x039C14 }, + { (char*) "Europe/Andorra" , 0x03A04F }, + { (char*) "Europe/Astrakhan" , 0x03A1E0 }, + { (char*) "Europe/Athens" , 0x03A4D4 }, + { (char*) "Europe/Belfast" , 0x03A78A }, + { (char*) "Europe/Belgrade" , 0x03ADD5 }, + { (char*) "Europe/Berlin" , 0x03AFBF }, + { (char*) "Europe/Bratislava" , 0x03B2A0 }, + { (char*) "Europe/Brussels" , 0x03B57F }, + { (char*) "Europe/Bucharest" , 0x03B9DA }, + { (char*) "Europe/Budapest" , 0x03BC7B }, + { (char*) "Europe/Busingen" , 0x03BF85 }, + { (char*) "Europe/Chisinau" , 0x03C18A }, + { (char*) "Europe/Copenhagen" , 0x03C489 }, + { (char*) "Europe/Dublin" , 0x03C704 }, + { (char*) "Europe/Gibraltar" , 0x03CCE8 }, + { (char*) "Europe/Guernsey" , 0x03D1B8 }, + { (char*) "Europe/Helsinki" , 0x03D80F }, + { (char*) "Europe/Isle_of_Man" , 0x03D9FC }, + { (char*) "Europe/Istanbul" , 0x03E047 }, + { (char*) "Europe/Jersey" , 0x03E503 }, + { (char*) "Europe/Kaliningrad" , 0x03EB5A }, + { (char*) "Europe/Kiev" , 0x03EF02 }, + { (char*) "Europe/Kirov" , 0x03F13C }, + { (char*) "Europe/Kyiv" , 0x03F423 }, + { (char*) "Europe/Lisbon" , 0x03F671 }, + { (char*) "Europe/Ljubljana" , 0x03FC3E }, + { (char*) "Europe/London" , 0x03FE28 }, + { (char*) "Europe/Luxembourg" , 0x040473 }, + { (char*) "Europe/Madrid" , 0x0408BE }, + { (char*) "Europe/Malta" , 0x040C5B }, + { (char*) "Europe/Mariehamn" , 0x041007 }, + { (char*) "Europe/Minsk" , 0x0411F4 }, + { (char*) "Europe/Monaco" , 0x041528 }, + { (char*) "Europe/Moscow" , 0x04198E }, + { (char*) "Europe/Nicosia" , 0x041D3A }, + { (char*) "Europe/Oslo" , 0x041F9B }, + { (char*) "Europe/Paris" , 0x04224B }, + { (char*) "Europe/Podgorica" , 0x0426A8 }, + { (char*) "Europe/Prague" , 0x042892 }, + { (char*) "Europe/Riga" , 0x042B71 }, + { (char*) "Europe/Rome" , 0x042E33 }, + { (char*) "Europe/Samara" , 0x0431F2 }, + { (char*) "Europe/San_Marino" , 0x0434F3 }, + { (char*) "Europe/Sarajevo" , 0x0438B2 }, + { (char*) "Europe/Saratov" , 0x043A9C }, + { (char*) "Europe/Simferopol" , 0x043D8E }, + { (char*) "Europe/Skopje" , 0x044101 }, + { (char*) "Europe/Sofia" , 0x0442EB }, + { (char*) "Europe/Stockholm" , 0x044547 }, + { (char*) "Europe/Tallinn" , 0x044744 }, + { (char*) "Europe/Tirane" , 0x0449F3 }, + { (char*) "Europe/Tiraspol" , 0x044C5B }, + { (char*) "Europe/Ulyanovsk" , 0x044F5A }, + { (char*) "Europe/Uzhgorod" , 0x045270 }, + { (char*) "Europe/Vaduz" , 0x0454A5 }, + { (char*) "Europe/Vatican" , 0x04568F }, + { (char*) "Europe/Vienna" , 0x045A4E }, + { (char*) "Europe/Vilnius" , 0x045CEC }, + { (char*) "Europe/Volgograd" , 0x045F9C }, + { (char*) "Europe/Warsaw" , 0x046299 }, + { (char*) "Europe/Zagreb" , 0x046640 }, + { (char*) "Europe/Zaporozhye" , 0x04682A }, + { (char*) "Europe/Zurich" , 0x046A8A }, + { (char*) "Factory" , 0x046C87 }, + { (char*) "GB" , 0x046D04 }, + { (char*) "GB-Eire" , 0x04734F }, + { (char*) "GMT" , 0x04799A }, + { (char*) "GMT+0" , 0x047A15 }, + { (char*) "GMT-0" , 0x047A90 }, + { (char*) "GMT0" , 0x047B0B }, + { (char*) "Greenwich" , 0x047B86 }, + { (char*) "Hongkong" , 0x047C01 }, + { (char*) "HST" , 0x047F14 }, + { (char*) "Iceland" , 0x047F90 }, + { (char*) "Indian/Antananarivo" , 0x04828D }, + { (char*) "Indian/Chagos" , 0x048339 }, + { (char*) "Indian/Christmas" , 0x0483DD }, + { (char*) "Indian/Cocos" , 0x04846E }, + { (char*) "Indian/Comoro" , 0x048506 }, + { (char*) "Indian/Kerguelen" , 0x048595 }, + { (char*) "Indian/Mahe" , 0x048626 }, + { (char*) "Indian/Maldives" , 0x0486B7 }, + { (char*) "Indian/Mauritius" , 0x04875B }, + { (char*) "Indian/Mayotte" , 0x04881A }, + { (char*) "Indian/Reunion" , 0x0488A9 }, + { (char*) "Iran" , 0x04893A }, + { (char*) "Israel" , 0x048C72 }, + { (char*) "Jamaica" , 0x0490B0 }, + { (char*) "Japan" , 0x04920F }, + { (char*) "Kwajalein" , 0x0492F0 }, + { (char*) "Libya" , 0x0493D7 }, + { (char*) "MET" , 0x049592 }, + { (char*) "Mexico/BajaNorte" , 0x04980B }, + { (char*) "Mexico/BajaSur" , 0x049C18 }, + { (char*) "Mexico/General" , 0x049D93 }, + { (char*) "MST" , 0x049F3B }, + { (char*) "MST7MDT" , 0x049FB6 }, + { (char*) "Navajo" , 0x04A379 }, + { (char*) "NZ" , 0x04A797 }, + { (char*) "NZ-CHAT" , 0x04ABB6 }, + { (char*) "Pacific/Apia" , 0x04AEEA }, + { (char*) "Pacific/Auckland" , 0x04B08D }, + { (char*) "Pacific/Bougainville" , 0x04B4C4 }, + { (char*) "Pacific/Chatham" , 0x04B5A5 }, + { (char*) "Pacific/Chuuk" , 0x04B8E8 }, + { (char*) "Pacific/Easter" , 0x04B9C6 }, + { (char*) "Pacific/Efate" , 0x04BE75 }, + { (char*) "Pacific/Enderbury" , 0x04BFD7 }, + { (char*) "Pacific/Fakaofo" , 0x04C08F }, + { (char*) "Pacific/Fiji" , 0x04C134 }, + { (char*) "Pacific/Funafuti" , 0x04C2EC }, + { (char*) "Pacific/Galapagos" , 0x04C37E }, + { (char*) "Pacific/Gambier" , 0x04C44A }, + { (char*) "Pacific/Guadalcanal" , 0x04C4E9 }, + { (char*) "Pacific/Guam" , 0x04C57B }, + { (char*) "Pacific/Honolulu" , 0x04C6E5 }, + { (char*) "Pacific/Johnston" , 0x04C7D4 }, + { (char*) "Pacific/Kanton" , 0x04C8BD }, + { (char*) "Pacific/Kiritimati" , 0x04C984 }, + { (char*) "Pacific/Kosrae" , 0x04CA4A }, + { (char*) "Pacific/Kwajalein" , 0x04CB4E }, + { (char*) "Pacific/Majuro" , 0x04CC3E }, + { (char*) "Pacific/Marquesas" , 0x04CD41 }, + { (char*) "Pacific/Midway" , 0x04CDE9 }, + { (char*) "Pacific/Nauru" , 0x04CEA4 }, + { (char*) "Pacific/Niue" , 0x04CF67 }, + { (char*) "Pacific/Norfolk" , 0x04D00D }, + { (char*) "Pacific/Noumea" , 0x04D110 }, + { (char*) "Pacific/Pago_Pago" , 0x04D1E2 }, + { (char*) "Pacific/Palau" , 0x04D280 }, + { (char*) "Pacific/Pitcairn" , 0x04D320 }, + { (char*) "Pacific/Pohnpei" , 0x04D3C5 }, + { (char*) "Pacific/Ponape" , 0x04D4B5 }, + { (char*) "Pacific/Port_Moresby" , 0x04D597 }, + { (char*) "Pacific/Rarotonga" , 0x04D65A }, + { (char*) "Pacific/Saipan" , 0x04D7FC }, + { (char*) "Pacific/Samoa" , 0x04D8C3 }, + { (char*) "Pacific/Tahiti" , 0x04D961 }, + { (char*) "Pacific/Tarawa" , 0x04DA01 }, + { (char*) "Pacific/Tongatapu" , 0x04DAA2 }, + { (char*) "Pacific/Truk" , 0x04DB9B }, + { (char*) "Pacific/Wake" , 0x04DC6A }, + { (char*) "Pacific/Wallis" , 0x04DD07 }, + { (char*) "Pacific/Yap" , 0x04DD99 }, + { (char*) "Poland" , 0x04DE68 }, + { (char*) "Portugal" , 0x04E20F }, + { (char*) "PRC" , 0x04E7C9 }, + { (char*) "PST8PDT" , 0x04E95E }, + { (char*) "ROC" , 0x04ED21 }, + { (char*) "ROK" , 0x04EF2C }, + { (char*) "Singapore" , 0x04F0D7 }, + { (char*) "Turkey" , 0x04F1E3 }, + { (char*) "UCT" , 0x04F69F }, + { (char*) "Universal" , 0x04F71A }, + { (char*) "US/Alaska" , 0x04F795 }, + { (char*) "US/Aleutian" , 0x04FB72 }, + { (char*) "US/Arizona" , 0x04FF47 }, + { (char*) "US/Central" , 0x050043 }, + { (char*) "US/East-Indiana" , 0x050729 }, + { (char*) "US/Eastern" , 0x050948 }, + { (char*) "US/Hawaii" , 0x051024 }, + { (char*) "US/Indiana-Starke" , 0x05110D }, + { (char*) "US/Michigan" , 0x051511 }, + { (char*) "US/Mountain" , 0x0518A0 }, + { (char*) "US/Pacific" , 0x051CBE }, + { (char*) "US/Samoa" , 0x0521D8 }, + { (char*) "UTC" , 0x052276 }, + { (char*) "W-SU" , 0x0522F1 }, + { (char*) "WET" , 0x052689 }, + { (char*) "Zulu" , 0x052883 }, }; -const unsigned char timelib_timezone_db_data_builtin[341337] = { +const unsigned char timelib_timezone_db_data_builtin[338174] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -622,10 +623,46 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x91, 0xCC, 0x38, 0x01, 0x12, 0x53, 0xDD, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0xFF, 0xFF, 0xFF, 0x9A, 0x1D, 0x94, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0xC0, 0xB4, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0xE4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x34, 0x97, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA3, 0xD5, 0x69, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x15, 0xCB, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xA5, 0xB6, 0x9D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0xF6, 0xFE, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA7, 0x97, 0xD0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xD8, 0x32, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xA9, 0x79, 0x04, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xBA, 0xB7, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAB, 0x5B, 0x89, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0x9B, 0xEA, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xAD, 0x3C, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x7D, 0x1E, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAF, 0x1D, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x51, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB0, 0xFF, 0x23, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x40, 0xD6, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB2, 0xE1, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x0A, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xB4, 0xC2, 0xDC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x3D, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB6, 0xA4, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x71, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xB8, 0x85, 0x43, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC6, 0xF6, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xBA, 0x67, 0xC8, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xA8, 0x29, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xBC, 0x48, 0xFB, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x89, 0x5D, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xBE, 0x2A, 0x2F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x6A, 0x90, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xC0, 0x0B, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x4D, 0x15, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xE7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x2E, 0x49, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC3, 0xCF, 0x1B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x0F, 0x7C, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xC5, 0xB0, 0x4E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xF0, 0xB0, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC7, 0x91, 0x82, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x31, 0x0C, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xC9, 0x74, 0x07, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x12, 0x40, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x55, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x87, 0x3C, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0xE1, 0xD3, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xA1, 0xDB, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDC, 0x42, 0xAB, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x83, 0x0E, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDE, 0x23, 0xDE, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x65, 0x93, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x06, 0x63, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x46, 0xC7, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE1, 0xE7, 0x97, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x27, 0xFA, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE3, 0xC8, 0xCA, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x09, 0x2E, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE5, 0xA9, 0xFE, 0x18, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0xFF, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x04, 0xB0, 0x01, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x07, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x08, +0x01, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x32, 0x30, 0x00, 0x47, 0x4D, 0x54, 0x00, +0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x91, 0xCC, 0x38, +0x01, 0x12, 0x53, 0xDD, 0x00, 0x00, 0x00, 0x00, /* Africa/Addis_Ababa */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -633,14 +670,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x97, 0x1C, 0xE5, 0x01, 0x4D, 0xB5, 0xB0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, +0xFF, 0xFF, 0xFF, 0x43, 0xE8, 0x19, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xAF, 0xF2, 0x98, 0x01, +0x02, 0x00, 0x00, 0x24, 0x48, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, 0x00, 0x04, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, +0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x97, 0x1C, 0xE5, 0x01, 0x4D, 0xB5, 0xB0, 0x00, +0x00, 0x00, 0x00, /* Africa/Algiers */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x44, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -681,14 +716,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0xA0, 0xB9, 0xD5, 0x01, 0x4D, 0xFD, 0x4D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xFF, +0xFF, 0xFF, 0xFF, 0x43, 0xE8, 0x19, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xB7, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x02, 0x03, 0x00, 0x00, 0x24, 0x74, 0x00, 0x00, +0x00, 0x00, 0x24, 0x74, 0x00, 0x04, 0x00, 0x00, 0x24, 0x68, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, 0x00, 0x45, +0x41, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0xA0, 0xB9, 0xD5, 0x01, 0x4D, +0xFD, 0x4D, 0x00, 0x00, 0x00, 0x00, /* Africa/Asmera */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -696,14 +730,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xFF, +0xFF, 0xFF, 0xFF, 0x43, 0xE8, 0x19, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xB7, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x02, 0x03, 0x00, 0x00, 0x24, 0x74, 0x00, 0x00, +0x00, 0x00, 0x24, 0x74, 0x00, 0x04, 0x00, 0x00, 0x24, 0x68, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, 0x00, 0x45, +0x41, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Africa/Bamako */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -711,10 +744,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x9C, 0xA1, 0xA8, 0x01, 0x06, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x96, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9C, +0xA1, 0xA8, 0x01, 0x06, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Bangui */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -722,14 +757,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0xFD, 0xFA, 0x01, 0x2F, 0x03, 0x9D, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x7D, 0x14, 0x01, 0x00, 0x00, 0x11, 0x6C, 0x00, 0x00, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, +0x2D, 0x31, 0x0A, 0x00, 0x8F, 0xFD, 0xFA, 0x01, 0x2F, 0x03, 0x9D, 0x00, 0x00, 0x00, 0x00, /* Africa/Banjul */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -737,10 +768,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x9D, 0xE0, 0xAA, 0x00, 0xF9, 0x40, 0x98, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x9E, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xDE, 0x67, 0x9C, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x7E, 0x10, 0x10, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x00, +0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, 0x4D, +0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9D, 0xE0, 0xAA, 0x00, 0xF9, 0x40, 0x98, +0x00, 0x00, 0x00, 0x00, /* Africa/Bissau */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -761,10 +795,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, -0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, -0x2D, 0x32, 0x0A, 0x00, 0x71, 0x3E, 0xE2, 0x01, 0x48, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0x12, 0x2C, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x97, 0x73, 0xEA, 0xFF, +0xFF, 0xFF, 0xFF, 0xAC, 0x49, 0xF0, 0x74, 0x01, 0x02, 0x03, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x00, +0x00, 0x00, 0x21, 0x16, 0x00, 0x04, 0x00, 0x00, 0x21, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x5A, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, +0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x71, 0x3E, 0xE2, 0x01, 0x48, 0x10, 0x60, 0x00, 0x00, 0x00, +0x00, /* Africa/Brazzaville */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -772,14 +809,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x82, 0xD1, 0x95, 0x01, 0x29, 0xFA, 0x8D, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x80, 0x2C, 0x01, 0x00, 0x00, 0x0E, 0x54, 0x00, 0x00, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, +0x2D, 0x31, 0x0A, 0x00, 0x82, 0xD1, 0x95, 0x01, 0x29, 0xFA, 0x8D, 0x00, 0x00, 0x00, 0x00, /* Africa/Bujumbura */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -788,7 +821,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xBF, 0xF8, 0x01, 0x00, 0x00, 0x1B, 0x88, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x84, 0x2A, 0xA2, 0x01, 0x3F, 0x77, 0xDA, 0x00, 0x00, 0x00, 0x00, @@ -1043,10 +1076,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x97, 0xD9, 0xB2, 0x00, 0xFD, 0xBA, 0x6D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x9B, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0x30, 0x16, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF3, 0x24, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x97, +0xD9, 0xB2, 0x00, 0xFD, 0xBA, 0x6D, 0x00, 0x00, 0x00, 0x00, /* Africa/Dakar */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1054,10 +1089,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x9F, 0xB5, 0x6A, 0x00, 0xF8, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x9E, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x3B, 0x10, 0x90, 0x01, +0x02, 0xFF, 0xFF, 0xEF, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, +0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9F, 0xB5, 0x6A, 0x00, 0xF8, 0x0E, 0x9A, 0x00, 0x00, 0x00, +0x00, /* Africa/Dar_es_Salaam */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1065,14 +1102,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x7E, 0xF4, 0x00, 0x01, 0x4E, 0x99, 0x8D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0xB6, 0xA3, 0xD3, 0xAC, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x9D, 0x7F, 0xD0, 0xFF, +0xFF, 0xFF, 0xFF, 0xEF, 0x12, 0x66, 0xD4, 0x01, 0x02, 0x01, 0x00, 0x00, 0x24, 0xD4, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, +0x0A, 0x00, 0x7E, 0xF4, 0x00, 0x01, 0x4E, 0x99, 0x8D, 0x00, 0x00, 0x00, 0x00, /* Africa/Djibouti */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x44, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1080,14 +1115,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x9B, 0x07, 0x80, 0x01, 0x54, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xD2, 0x0C, 0x01, 0x00, 0x00, 0x28, 0x74, 0x00, 0x00, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, +0x2D, 0x33, 0x0A, 0x00, 0x9B, 0x07, 0x80, 0x01, 0x54, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x00, /* Africa/Douala */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1095,14 +1126,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x82, 0x48, 0x01, 0x21, 0x75, 0x90, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x85, 0x68, 0x01, 0x00, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, +0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x82, 0x48, 0x01, 0x21, 0x75, 0x90, 0x00, 0x00, 0x00, 0x00, /* Africa/El_Aaiun */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1228,10 +1255,24 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x96, 0x4C, 0x90, 0x00, 0xFE, 0x70, 0xB8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0xFF, +0xFF, 0xFF, 0xFF, 0x5A, 0x7A, 0xA8, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0xB7, 0xBF, 0x6C, 0xFF, +0xFF, 0xFF, 0xFF, 0xBA, 0x3E, 0xE0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xDE, 0x61, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xBB, 0xA8, 0x1B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xBF, 0x94, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xBD, 0x89, 0x4F, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xA0, 0xC8, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xBF, 0x6A, 0x82, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x83, 0x4D, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xC1, 0x4D, 0x07, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x64, 0x80, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xC3, 0x2E, 0x3B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x45, 0xB4, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xC5, 0x0F, 0x6E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x77, 0x53, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xC6, 0xF0, 0xA2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xF5, 0xE3, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x34, 0x3C, 0x10, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x04, 0xFF, 0xFF, 0xF3, 0x94, 0x00, 0x00, +0xFF, 0xFF, 0xF3, 0x94, 0x00, 0x04, 0xFF, 0xFF, 0xF6, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, +0x00, 0x0E, 0x00, 0x00, 0x04, 0xB0, 0x01, 0x12, 0x4C, 0x4D, 0x54, 0x00, 0x46, 0x4D, 0x54, 0x00, +0x2D, 0x30, 0x30, 0x34, 0x30, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x31, 0x00, 0x0A, 0x58, +0x58, 0x58, 0x2D, 0x30, 0x3A, 0x34, 0x30, 0x3C, 0x2B, 0x30, 0x31, 0x3E, 0x2D, 0x30, 0x3A, 0x32, +0x30, 0x2C, 0x30, 0x2F, 0x30, 0x2C, 0x4A, 0x33, 0x36, 0x35, 0x2F, 0x32, 0x33, 0x3A, 0x34, 0x30, +0x0A, 0x00, 0x96, 0x4C, 0x90, 0x00, 0xFE, 0x70, 0xB8, 0x00, 0x00, 0x00, 0x00, /* Africa/Gaborone */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1239,10 +1280,14 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, -0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, -0x2D, 0x32, 0x0A, 0x00, 0x63, 0xB7, 0x57, 0x01, 0x3A, 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, +0xFF, 0xFF, 0xFF, 0x60, 0x1F, 0x70, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xCF, 0x68, 0xFF, +0xFF, 0xFF, 0xFF, 0xCE, 0x8E, 0x6E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, +0x02, 0x03, 0x02, 0x00, 0x00, 0x18, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, +0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x53, +0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x41, +0x54, 0x2D, 0x32, 0x0A, 0x00, 0x63, 0xB7, 0x57, 0x01, 0x3A, 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, + /* Africa/Harare */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x5A, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1251,7 +1296,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC7, 0x64, 0x01, 0x00, 0x00, 0x1D, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x6E, 0x1E, 0x1A, 0x01, 0x42, 0x09, 0x68, 0x00, 0x00, 0x00, 0x00, @@ -1308,14 +1353,14 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x89, 0xCF, 0xF2, 0x01, 0x44, 0x1F, 0x42, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, +0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDF, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC2, 0x9A, 0xD0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD6, 0x9D, 0x86, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x8C, 0x47, 0x54, 0x01, +0x02, 0x03, 0x01, 0x00, 0x00, 0x1E, 0x64, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, +0x00, 0x23, 0x28, 0x00, 0x08, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x45, +0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, +0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x89, 0xCF, 0xF2, 0x01, 0x44, 0x1F, 0x42, 0x00, 0x00, +0x00, 0x00, /* Africa/Khartoum */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1356,7 +1401,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0xBE, 0xF1, 0x0E, 0x50, 0x01, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x86, 0x5A, 0x88, 0x01, 0x40, 0x89, 0x4A, 0x00, 0x00, 0x00, 0x00, @@ -1366,15 +1411,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x82, 0xC4, 0x90, 0x01, 0x2A, 0x01, 0x10, 0x00, 0x00, 0x00, 0x19, -0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, -0x67, 0x6F, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x78, 0x4D, 0x2C, 0xA8, 0x01, 0x00, 0x00, 0x0E, 0x58, 0x00, 0x00, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, +0x2D, 0x31, 0x0A, 0x00, 0x82, 0xC4, 0x90, 0x01, 0x2A, 0x01, 0x10, 0x00, 0x00, 0x00, 0x19, 0x44, +0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, 0x67, +0x6F, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, /* Africa/Lagos */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1397,14 +1439,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x89, 0xE9, 0xFD, 0x01, 0x21, 0x13, 0xE8, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x85, 0xA4, 0x01, 0x00, 0x00, 0x08, 0xDC, 0x00, 0x00, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, +0x2D, 0x31, 0x0A, 0x00, 0x89, 0xE9, 0xFD, 0x01, 0x21, 0x13, 0xE8, 0x00, 0x00, 0x00, 0x00, /* Africa/Lome */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1413,7 +1451,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x6F, 0x2B, 0xC6, 0x5C, 0x01, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x92, 0xB0, 0x15, 0x01, 0x14, 0x83, 0xC2, 0x00, 0x00, 0x00, 0x00, @@ -1423,14 +1461,11 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x7B, 0xE6, 0xC0, 0x01, 0x26, 0xD9, 0xC5, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x6D, 0x49, 0x36, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x80, 0x70, 0x01, +0x02, 0x00, 0x00, 0x0C, 0x68, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x34, 0x00, 0x00, 0x00, 0x00, 0x0E, +0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, +0x31, 0x0A, 0x00, 0x7B, 0xE6, 0xC0, 0x01, 0x26, 0xD9, 0xC5, 0x00, 0x00, 0x00, 0x00, /* Africa/Lubumbashi */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1438,12 +1473,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, -0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, -0x2D, 0x32, 0x0A, 0x00, 0x77, 0x86, 0xF5, 0x01, 0x3C, 0x91, 0xAA, 0x00, 0x00, 0x00, 0x19, 0x44, -0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, 0x67, -0x6F, 0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x78, 0x4D, 0x21, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0x5B, 0xF0, 0x01, +0x02, 0x00, 0x00, 0x19, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, +0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, +0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x77, 0x86, 0xF5, 0x01, 0x3C, 0x91, 0xAA, 0x00, 0x00, +0x00, 0x19, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, +0x6F, 0x6E, 0x67, 0x6F, 0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x29, /* Africa/Lusaka */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x5A, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1452,7 +1488,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC9, 0xFC, 0x01, 0x00, 0x00, 0x1A, 0x84, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x71, 0xCE, 0x1D, 0x01, 0x3D, 0xD0, 0xAD, 0x00, 0x00, 0x00, 0x00, @@ -1462,14 +1498,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x0D, 0x18, 0x01, 0x20, 0x0F, 0x7D, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x86, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x9F, 0xBE, 0x80, 0x01, +0x02, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, +0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, +0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x0D, 0x18, 0x01, 0x20, 0x0F, 0x7D, 0x00, 0x00, +0x00, 0x00, /* Africa/Maputo */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1488,14 +1522,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xFF, -0xFF, 0xFF, 0xFF, 0x6D, 0x7B, 0x41, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xCF, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0xAE, 0x8C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x9E, 0x6F, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xCE, 0x8E, 0x6E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, -0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x53, 0x41, 0x53, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x5C, -0x5D, 0xD5, 0x01, 0x3C, 0x9E, 0xB0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0xFF, +0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xCA, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x8E, 0x6E, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x02, 0x01, 0x00, 0x00, 0x19, 0xC8, 0x00, 0x00, +0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, +0x53, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x53, 0x41, 0x53, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x5C, 0x5D, +0xD5, 0x01, 0x3C, 0x9E, 0xB0, 0x00, 0x00, 0x00, 0x00, /* Africa/Mbabane */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1503,14 +1535,11 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xFF, -0xFF, 0xFF, 0xFF, 0x6D, 0x7B, 0x41, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xCF, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0xAE, 0x8C, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x9E, 0x6F, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xCE, 0x8E, 0x6E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, -0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x53, 0x41, 0x53, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x61, -0x32, 0xD0, 0x01, 0x42, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0xFF, +0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC7, 0x58, 0x01, 0x00, 0x00, 0x1D, 0x28, 0x00, 0x00, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x53, 0x41, +0x53, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x61, 0x32, 0xD0, 0x01, 0x42, 0x1C, 0xF0, 0x00, 0x00, 0x00, +0x00, /* Africa/Mogadishu */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1518,14 +1547,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x8C, 0x7B, 0x8A, 0x01, 0x57, 0xE1, 0xDA, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0x70, 0xBC, 0x64, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xA3, 0xCE, 0x50, 0xFF, +0xFF, 0xFF, 0xFF, 0xE7, 0x8C, 0x4A, 0xD8, 0x01, 0x02, 0x01, 0x00, 0x00, 0x2A, 0x88, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x23, 0x28, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, +0x0A, 0x00, 0x8C, 0x7B, 0x8A, 0x01, 0x57, 0xE1, 0xDA, 0x00, 0x00, 0x00, 0x00, /* Africa/Monrovia */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1575,14 +1602,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x9D, 0xF4, 0x32, 0x01, 0x15, 0xE3, 0x52, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x8C, 0x84, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xC6, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0x30, 0x08, 0x80, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, +0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, +0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x9D, 0xF4, 0x32, 0x01, 0x15, 0xE3, +0x52, 0x00, 0x00, 0x00, 0x00, /* Africa/Nouakchott */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1590,10 +1616,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0xA4, 0xF2, 0x90, 0x00, 0xFA, 0x52, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x9D, 0x74, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xEE, 0xE5, 0xC8, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF1, 0x0C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0xA4, +0xF2, 0x90, 0x00, 0xFA, 0x52, 0x08, 0x00, 0x00, 0x00, 0x00, /* Africa/Ouagadougou */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1602,7 +1630,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x8F, 0xEC, 0x01, 0xFF, 0xFF, 0xFE, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9C, 0x32, 0xFA, 0x01, 0x10, 0x58, 0x0D, 0x00, 0x00, 0x00, 0x00, @@ -1612,14 +1640,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, -0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, -0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, -0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, -0x54, 0x2D, 0x31, 0x0A, 0x00, 0x93, 0x38, 0xCD, 0x01, 0x16, 0xA6, 0xA2, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x8C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0x01, +0x02, 0x00, 0x00, 0x02, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0E, +0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, +0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x93, 0x38, 0xCD, 0x01, 0x16, 0xA6, 0xA2, 0x00, 0x00, +0x00, 0x00, /* Africa/Sao_Tome */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1641,10 +1667,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x96, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Africa/Tripoli */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1887,13 +1915,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA5, 0x19, 0xA0, 0x00, 0xB2, 0x6D, 0x15, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x35, 0x20, 0x01, 0xFF, 0xFF, 0xC4, 0xE0, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA5, 0x19, 0xA0, 0x00, 0xB2, 0x6D, 0x15, 0x00, 0x00, 0x00, 0x00, /* America/Antigua */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1901,13 +1926,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA3, 0x58, 0x68, 0x00, 0xB4, 0x5B, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x42, 0xDC, 0x50, 0x01, +0x02, 0xFF, 0xFF, 0xC6, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, +0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, +0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA3, 0x58, 0x68, 0x00, 0xB4, 0x5B, 0xE0, 0x00, 0x00, 0x00, +0x00, /* America/Araguaina */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -2589,13 +2613,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x9C, 0x67, 0x10, 0x00, 0xA7, 0xE5, 0xC5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2F, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, 0xEC, 0x48, 0x01, +0x02, 0xFF, 0xFF, 0xBE, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, 0xFF, 0xFF, 0xC7, +0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, 0x41, 0x53, 0x54, +0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9C, 0x67, 0x10, 0x00, 0xA7, 0xE5, 0xC5, 0x00, +0x00, 0x00, 0x00, /* America/Asuncion */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x50, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -2662,14 +2685,18 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, 0x01, -0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, 0xB9, -0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, -0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xD3, 0xBA, 0x95, 0x00, 0x86, 0xDA, 0xC9, 0x00, 0x00, 0x00, -0x21, 0x45, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, 0x6F, -0x6B, 0x61, 0x6E, 0x29, 0x3B, 0x20, 0x4E, 0x55, 0x20, 0x28, 0x43, 0x6F, 0x72, 0x61, 0x6C, 0x20, -0x48, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, +0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x84, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0xFF, 0xFF, +0xAA, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, +0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, +0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, +0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, +0x00, 0xD3, 0xBA, 0x95, 0x00, 0x86, 0xDA, 0xC9, 0x00, 0x00, 0x00, 0x21, 0x45, 0x53, 0x54, 0x20, +0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, 0x6F, 0x6B, 0x61, 0x6E, 0x29, 0x3B, +0x20, 0x4E, 0x55, 0x20, 0x28, 0x43, 0x6F, 0x72, 0x61, 0x6C, 0x20, 0x48, 0x29, /* America/Atka */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -2944,15 +2971,17 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xD7, 0xC8, 0xE2, 0x00, 0xBB, 0x81, 0x4D, 0x00, 0x00, 0x00, 0x1C, 0x41, 0x53, 0x54, -0x20, 0x2D, 0x20, 0x51, 0x43, 0x20, 0x28, 0x4C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x4E, 0x6F, 0x72, -0x74, 0x68, 0x20, 0x53, 0x68, 0x6F, 0x72, 0x65, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0xFF, 0xFF, 0xFF, 0x5E, 0x3D, 0x39, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0x85, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xDD, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xE2, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x02, +0x01, 0x02, 0x03, 0x04, 0x02, 0xFF, 0xFF, 0xCA, 0x74, 0x00, 0x00, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, +0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, +0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x41, +0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xD7, 0xC8, +0xE2, 0x00, 0xBB, 0x81, 0x4D, 0x00, 0x00, 0x00, 0x1C, 0x41, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x51, +0x43, 0x20, 0x28, 0x4C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x20, 0x53, +0x68, 0x6F, 0x72, 0x65, 0x29, /* America/Boa_Vista */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -3354,9 +3383,9 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, 0x01, -0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, 0xB9, -0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x27, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x0F, 0xB4, 0xFE, 0x01, +0x02, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x02, 0x00, 0x04, 0xFF, 0xFF, 0xB9, +0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xA6, 0xC7, 0x50, 0x00, 0x96, 0x7A, 0x22, 0x00, 0x00, 0x00, 0x00, @@ -3507,12 +3536,16 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, -0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, 0x01, -0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, 0xB9, -0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, -0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0xFF, +0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x84, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0xA1, 0x80, 0xFF, +0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0xFF, 0xFF, +0xAA, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, +0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, 0xB0, +0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, 0x57, +0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* America/Cordoba */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -3586,18 +3619,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x04, 0x0C, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x3A, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x1C, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xE9, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x0C, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xCF, 0x17, 0xDF, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x8F, 0xE5, 0xAC, 0xFF, -0xFF, 0xFF, 0xFF, 0xD0, 0x81, 0x1A, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x75, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x58, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, -0x01, 0x02, 0xFF, 0xFF, 0x96, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, -0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, -0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, -0x00, 0xD4, 0x3F, 0xF0, 0x00, 0x60, 0xDE, 0x2D, 0x00, 0x00, 0x00, 0x12, 0x4D, 0x53, 0x54, 0x20, -0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x6E, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x5E, 0x3D, 0x70, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x4B, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0x9E, 0xF9, 0x3B, 0x00, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0x92, 0xC4, 0x00, 0x00, +0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xD4, +0x3F, 0xF0, 0x00, 0x60, 0xDE, 0x2D, 0x00, 0x00, 0x00, 0x12, 0x4D, 0x53, 0x54, 0x20, 0x2D, 0x20, +0x42, 0x43, 0x20, 0x28, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x6E, 0x29, /* America/Cuiaba */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -3667,13 +3695,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x9B, 0xEB, 0x5D, 0x00, 0xA9, 0x5F, 0x60, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2E, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, 0xEC, 0x48, 0x01, +0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, 0xFF, 0xFF, 0xC7, +0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, 0x41, 0x53, 0x54, +0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xEB, 0x5D, 0x00, 0xA9, 0x5F, 0x60, 0x00, +0x00, 0x00, 0x00, /* America/Danmarkshavn */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -3820,7 +3847,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0xFF, 0x9D, 0x90, 0x01, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, -0x00, 0x4D, 0x53, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xE4, 0x86, 0x9A, 0x00, +0x00, 0x4D, 0x53, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xDE, 0x6C, 0x1A, 0x00, 0x5B, 0x32, 0x5A, 0x00, 0x00, 0x00, 0x20, 0x4D, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x44, 0x61, 0x77, 0x73, 0x6F, 0x6E, 0x20, 0x43, 0x72, 0x2C, 0x20, 0x46, 0x74, 0x20, 0x53, 0x74, 0x20, 0x4A, 0x6F, 0x68, 0x6E, 0x29, @@ -3962,13 +3989,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA0, 0xAC, 0xD0, 0x00, 0xB4, 0xF8, 0x20, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x34, 0x4C, 0x01, 0xFF, 0xFF, 0xC6, 0x70, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA0, 0xAC, 0xD0, 0x00, 0xB4, 0xF8, 0x20, 0x00, 0x00, 0x00, 0x00, /* America/Edmonton */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4574,13 +4598,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x9B, 0xB7, 0x48, 0x00, 0xB4, 0x6F, 0x68, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x34, 0x64, 0x01, 0xFF, 0xFF, 0xC6, 0x1C, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0x9B, 0xB7, 0x48, 0x00, 0xB4, 0x6F, 0x68, 0x00, 0x00, 0x00, 0x00, /* America/Guadeloupe */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -4588,13 +4609,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA2, 0x19, 0x65, 0x00, 0xB4, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xD5, 0xE1, 0xB0, 0x01, 0xFF, 0xFF, 0xC6, 0x50, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA2, 0x19, 0x65, 0x00, 0xB4, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, /* America/Guatemala */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5682,13 +5700,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x9B, 0xDE, 0xAB, 0x00, 0xAA, 0x79, 0xED, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2E, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, 0xEC, 0x48, 0x01, +0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, 0xFF, 0xFF, 0xC7, +0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, 0x41, 0x53, 0x54, +0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xDE, 0xAB, 0x00, 0xAA, 0x79, 0xED, 0x00, +0x00, 0x00, 0x00, /* America/La_Paz */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5897,13 +5914,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA4, 0xDF, 0x92, 0x00, 0xB2, 0x74, 0xAD, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2E, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, 0xEC, 0x48, 0x01, +0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, 0xFF, 0xFF, 0xC7, +0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, 0x41, 0x53, 0x54, +0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA4, 0xDF, 0x92, 0x00, 0xB2, 0x74, 0xAD, 0x00, +0x00, 0x00, 0x00, /* America/Maceio */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -5999,13 +6015,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA4, 0xE5, 0x8A, 0x00, 0xB2, 0x66, 0x92, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xAC, 0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA4, 0xE5, 0x8A, 0x00, 0xB2, 0x66, 0x92, 0x00, 0x00, 0x00, 0x00, /* America/Martinique */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6635,13 +6648,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA2, 0xD6, 0x32, 0x00, 0xB3, 0xB9, 0x1D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x35, 0x10, 0x01, 0xFF, 0xFF, 0xC5, 0xAC, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA2, 0xD6, 0x32, 0x00, 0xB3, 0xB9, 0x1D, 0x00, 0x00, 0x00, 0x00, /* America/Nassau */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -6649,236 +6659,191 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x78, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0x93, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x87, 0x2E, 0xC8, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xB1, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x94, 0x06, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA3, 0x55, 0xA9, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x86, 0x5D, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA5, 0x28, 0x78, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x66, 0x3F, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA7, 0x0C, 0x4E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x46, 0x21, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA8, 0xEC, 0x30, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x1C, 0xC9, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x4D, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xFC, 0xAB, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xAC, 0xB5, 0x2F, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xDC, 0x8D, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xAE, 0x95, 0x11, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBC, 0x6F, 0x70, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x42, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF4, 0xEF, 0x50, 0xFF, +0xFF, 0xFF, 0xFF, 0xD0, 0xFA, 0x47, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x23, 0x34, 0x50, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x78, 0x9A, 0xC0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, +0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, +0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, +0x00, 0x00, 0x00, 0x08, 0x20, 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, +0x00, 0x00, 0x00, 0x0A, 0x00, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, +0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, +0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, +0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, +0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, +0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, +0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, +0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, +0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, +0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, +0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, +0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, +0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x03, 0x02, 0x04, 0x02, 0x04, +0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, +0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, +0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, +0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, +0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, +0x02, 0x04, 0x02, 0x04, 0xFF, 0xFF, 0xB7, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, +0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, +0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x50, +0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, +0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xAF, +0x9A, 0x6D, 0x00, 0x9C, 0xA1, 0xA8, 0x00, 0x00, 0x00, 0x00, + +/* America/New_York */ +0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, 0xFF, +0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, 0xFF, +0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, 0xFF, +0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x25, 0x13, 0xF0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xBB, 0xCF, 0xEE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, 0xFF, +0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, +0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, +0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, +0x00, 0x00, 0x00, 0x07, 0x8D, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, +0x00, 0x00, 0x00, 0x09, 0xAD, 0x94, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, +0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, +0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, +0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, +0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, +0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, +0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, +0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, +0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, +0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, +0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, +0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, +0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, +0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, +0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, +0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, +0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, +0x00, 0xC7, 0x74, 0x38, 0x00, 0xA1, 0xBB, 0xC1, 0x00, 0x00, 0x00, 0x14, 0x45, 0x61, 0x73, 0x74, +0x65, 0x72, 0x6E, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, + + +/* America/Nipigon */ +0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, +0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x81, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0x93, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x49, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xAA, 0xD0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xA3, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0x8C, 0xD0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0x85, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x6E, 0xD0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDA, 0x33, 0x76, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xDC, 0x13, 0x74, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x0A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x26, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, 0x00, -0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, 0x00, -0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xC1, 0x70, 0x00, -0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xA3, 0x70, 0x00, -0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, -0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, -0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, 0x00, -0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, 0x00, -0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, 0x00, -0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, 0x00, -0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, 0x00, -0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, 0x00, -0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, 0x00, -0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, 0x00, -0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, -0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, -0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, -0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xB5, 0x94, 0x00, -0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, -0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, -0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x0A, 0x45, 0x53, -0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, -0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xAF, 0x9A, 0x6D, 0x00, 0x9C, 0xA1, 0xA8, 0x00, 0x00, 0x00, -0x00, - -/* America/New_York */ -0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, -0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, -0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, -0x00, 0x00, 0x00, 0x07, 0x8D, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, -0x00, 0x00, 0x00, 0x09, 0xAD, 0x94, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, -0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, -0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, -0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, -0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, -0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, -0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, -0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, -0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, -0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, -0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, -0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, -0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, -0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, -0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, -0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, -0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, -0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, -0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, -0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, -0x00, 0xC7, 0x74, 0x38, 0x00, 0xA1, 0xBB, 0xC1, 0x00, 0x00, 0x00, 0x14, 0x45, 0x61, 0x73, 0x74, -0x65, 0x72, 0x6E, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, - - -/* America/Nipigon */ -0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x81, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0x93, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x49, 0x50, 0xFF, -0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xC1, 0x70, 0x00, +0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, @@ -7445,13 +7410,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x99, 0x94, 0x68, 0x00, 0xB4, 0xCA, 0x8D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xAC, 0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0x99, 0x94, 0x68, 0x00, 0xB4, 0xCA, 0x8D, 0x00, 0x00, 0x00, 0x00, /* America/Porto_Acre */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -7530,7 +7492,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, @@ -7540,69 +7502,70 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x9B, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, 0x5C, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x20, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x1C, 0x6E, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0xE7, 0xD0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x76, 0x92, 0x40, 0xFF, -0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x01, 0x75, 0x50, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x49, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x03, 0x55, 0x32, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, 0x2B, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x05, 0x3E, 0x4F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0D, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x07, 0x0B, 0xBC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDF, 0xEF, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x08, 0xFE, 0x13, 0x40, 0x00, 0x00, 0x00, 0x00, 0x09, 0xBF, 0xD1, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x0A, 0xDD, 0xF5, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xA8, 0xEE, 0x30, 0x00, -0x00, 0x00, 0x00, 0x0C, 0xBD, 0xD7, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x88, 0xD0, 0x30, 0x00, -0x00, 0x00, 0x00, 0x0E, 0x9D, 0xB9, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x68, 0xB2, 0x30, 0x00, -0x00, 0x00, 0x00, 0x10, 0x86, 0xD5, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x48, 0x94, 0x30, 0x00, -0x00, 0x00, 0x00, 0x12, 0x66, 0xB7, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x28, 0x76, 0x30, 0x00, -0x00, 0x00, 0x00, 0x14, 0x46, 0x99, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x11, 0x92, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x16, 0x26, 0x7B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x16, 0xF1, 0x74, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x18, 0x06, 0x5D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xD1, 0x56, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x19, 0xE6, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xB1, 0x38, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x1B, 0xCF, 0x5C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x91, 0x1A, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x1D, 0xAF, 0x3E, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x70, 0xFC, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x1F, 0x8F, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7F, 0x03, 0x30, 0x00, -0x00, 0x00, 0x00, 0x21, 0x6F, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x22, 0x39, 0xFB, 0x30, 0x00, -0x00, 0x00, 0x00, 0x23, 0x4E, 0xE4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x24, 0x19, 0xDD, 0x30, 0x00, -0x00, 0x00, 0x00, 0x25, 0x38, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x25, 0xF9, 0xBF, 0x30, 0x00, -0x00, 0x00, 0x00, 0x26, 0xF2, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xD9, 0xA1, 0x30, 0x00, -0x00, 0x00, 0x00, 0x28, 0xF7, 0xC4, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xC2, 0xBD, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x2A, 0xD7, 0xA6, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xA2, 0x9F, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x2C, 0xB7, 0x88, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x82, 0x81, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x97, 0x6A, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x62, 0x63, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x30, 0x80, 0x87, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x42, 0x45, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x32, 0x60, 0x69, 0x40, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xD7, 0x30, 0x00, -0x00, 0x00, 0x00, 0x34, 0x40, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0B, 0x44, 0x30, 0x00, -0x00, 0x00, 0x00, 0x36, 0x0D, 0xB8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x37, 0x06, 0xD5, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x38, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x38, 0xCB, 0x08, 0x30, 0x00, -0x00, 0x00, 0x00, 0x39, 0xE9, 0x2B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xAA, 0xEA, 0x30, 0x00, -0x00, 0x00, 0x00, 0x3B, 0xC9, 0x0D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x8A, 0xCC, 0x30, 0x00, -0x00, 0x00, 0x00, 0x3D, 0xA8, 0xEF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x6A, 0xAE, 0x30, 0x00, -0x00, 0x00, 0x00, 0x3F, 0x88, 0xD1, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x53, 0xCA, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x41, 0x68, 0xB3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x42, 0x33, 0xAC, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x43, 0x48, 0x95, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x44, 0x13, 0x8E, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x45, 0x31, 0xB2, 0x40, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0x70, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x47, 0x11, 0x94, 0x40, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEF, 0x02, 0x30, 0x00, -0x00, 0x00, 0x00, 0x48, 0xF1, 0x76, 0x40, 0x00, 0x00, 0x00, 0x00, 0x49, 0xBC, 0x6F, 0x30, 0x00, -0x00, 0x00, 0x00, 0x4A, 0xD1, 0x58, 0x40, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xB8, 0x00, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x4C, 0xB1, 0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xC6, 0x07, 0x30, 0x00, -0x00, 0x00, 0x00, 0x4E, 0x50, 0x82, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, 0xAE, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x50, 0x42, 0xD9, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x90, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x52, 0x2B, 0xF6, 0x40, 0x00, 0x00, 0x00, 0x00, 0x53, 0x5C, 0x72, 0xB0, 0x00, -0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x57, 0x37, 0xE6, 0x30, 0x00, -0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x43, 0x86, 0xB0, 0x01, -0x02, 0x01, 0x03, 0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, -0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, -0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, -0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x33, 0x0A, 0x00, 0x38, 0x3A, 0x88, 0x00, 0xA6, 0x72, -0xAD, 0x00, 0x00, 0x00, 0x14, 0x52, 0x65, 0x67, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x4D, -0x61, 0x67, 0x61, 0x6C, 0x6C, 0x61, 0x6E, 0x65, 0x73, +0xFF, 0xFF, 0xFF, 0xD4, 0x17, 0xE3, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x76, 0x92, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, +0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x75, 0x50, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x02, 0x40, 0x49, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x55, 0x32, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x04, 0x20, 0x2B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x3E, 0x4F, 0x40, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0x0D, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0B, 0xBC, 0x40, 0x00, +0x00, 0x00, 0x00, 0x07, 0xDF, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xFE, 0x13, 0x40, 0x00, +0x00, 0x00, 0x00, 0x09, 0xBF, 0xD1, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xDD, 0xF5, 0x40, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xA8, 0xEE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xBD, 0xD7, 0x40, 0x00, +0x00, 0x00, 0x00, 0x0D, 0x88, 0xD0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x9D, 0xB9, 0x40, 0x00, +0x00, 0x00, 0x00, 0x0F, 0x68, 0xB2, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x86, 0xD5, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x11, 0x48, 0x94, 0x30, 0x00, 0x00, 0x00, 0x00, 0x12, 0x66, 0xB7, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x13, 0x28, 0x76, 0x30, 0x00, 0x00, 0x00, 0x00, 0x14, 0x46, 0x99, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x15, 0x11, 0x92, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x26, 0x7B, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x16, 0xF1, 0x74, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x5D, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x18, 0xD1, 0x56, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xE6, 0x3F, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x1A, 0xB1, 0x38, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xCF, 0x5C, 0x40, 0x00, +0x00, 0x00, 0x00, 0x1C, 0x91, 0x1A, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xAF, 0x3E, 0x40, 0x00, +0x00, 0x00, 0x00, 0x1E, 0x70, 0xFC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x8F, 0x20, 0x40, 0x00, +0x00, 0x00, 0x00, 0x20, 0x7F, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x21, 0x6F, 0x02, 0x40, 0x00, +0x00, 0x00, 0x00, 0x22, 0x39, 0xFB, 0x30, 0x00, 0x00, 0x00, 0x00, 0x23, 0x4E, 0xE4, 0x40, 0x00, +0x00, 0x00, 0x00, 0x24, 0x19, 0xDD, 0x30, 0x00, 0x00, 0x00, 0x00, 0x25, 0x38, 0x00, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x25, 0xF9, 0xBF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x26, 0xF2, 0xF8, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x27, 0xD9, 0xA1, 0x30, 0x00, 0x00, 0x00, 0x00, 0x28, 0xF7, 0xC4, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x29, 0xC2, 0xBD, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xD7, 0xA6, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xA2, 0x9F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xB7, 0x88, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x82, 0x81, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x97, 0x6A, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x62, 0x63, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x87, 0x40, 0x00, +0x00, 0x00, 0x00, 0x31, 0x42, 0x45, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x60, 0x69, 0x40, 0x00, +0x00, 0x00, 0x00, 0x33, 0x3D, 0xD7, 0x30, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x4B, 0x40, 0x00, +0x00, 0x00, 0x00, 0x35, 0x0B, 0x44, 0x30, 0x00, 0x00, 0x00, 0x00, 0x36, 0x0D, 0xB8, 0x40, 0x00, +0x00, 0x00, 0x00, 0x37, 0x06, 0xD5, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0F, 0x40, 0x00, +0x00, 0x00, 0x00, 0x38, 0xCB, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE9, 0x2B, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x3A, 0xAA, 0xEA, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xC9, 0x0D, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x3C, 0x8A, 0xCC, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xA8, 0xEF, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x3E, 0x6A, 0xAE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x88, 0xD1, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x40, 0x53, 0xCA, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x68, 0xB3, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x42, 0x33, 0xAC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x95, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x44, 0x13, 0x8E, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x31, 0xB2, 0x40, 0x00, +0x00, 0x00, 0x00, 0x45, 0xF3, 0x70, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x11, 0x94, 0x40, 0x00, +0x00, 0x00, 0x00, 0x47, 0xEF, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF1, 0x76, 0x40, 0x00, +0x00, 0x00, 0x00, 0x49, 0xBC, 0x6F, 0x30, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xD1, 0x58, 0x40, 0x00, +0x00, 0x00, 0x00, 0x4B, 0xB8, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xB1, 0x3A, 0x40, 0x00, +0x00, 0x00, 0x00, 0x4D, 0xC6, 0x07, 0x30, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x50, 0x82, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x9C, 0xAE, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x42, 0xD9, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x51, 0x7C, 0x90, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x2B, 0xF6, 0x40, 0x00, +0x00, 0x00, 0x00, 0x53, 0x5C, 0x72, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, +0x00, 0x00, 0x00, 0x57, 0x37, 0xE6, 0x30, 0x00, 0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x58, 0x43, 0x86, 0xB0, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x04, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03, +0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, +0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, +0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, +0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, +0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, +0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x06, 0xFF, 0xFF, 0xBD, 0x84, +0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, +0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, +0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x33, 0x3E, +0x33, 0x0A, 0x00, 0x38, 0x3A, 0x88, 0x00, 0xA6, 0x72, 0xAD, 0x00, 0x00, 0x00, 0x14, 0x52, 0x65, +0x67, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x4D, 0x61, 0x67, 0x61, 0x6C, 0x6C, 0x61, 0x6E, +0x65, 0x73, /* America/Rainy_River */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8017,7 +7980,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, @@ -8027,7 +7990,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x9B, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, 0x5C, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x20, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x1C, 0x6E, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0xE7, 0xD0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x1B, 0xC9, 0xB0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x17, 0xD5, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x76, 0x92, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, @@ -8078,23 +8041,27 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x57, 0x37, 0xE6, 0x30, 0x00, 0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x17, 0xC8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x59, 0x8F, 0xCE, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0xAA, 0x30, 0x00, -0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x01, +0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, -0x03, 0x05, 0x03, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, +0x03, 0x05, 0x04, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, -0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, -0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, -0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x34, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, -0x34, 0x0A, 0x00, 0x56, 0x49, 0xD8, 0x00, 0xA6, 0xD4, 0x55, 0x00, 0x00, 0x00, 0x12, 0x43, 0x68, -0x69, 0x6C, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, - +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, +0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, +0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, +0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, +0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, +0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x34, 0x2C, +0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x34, 0x0A, 0x00, 0x56, 0x49, 0xD8, 0x00, 0xA6, +0xD4, 0x55, 0x00, 0x00, 0x00, 0x12, 0x43, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, +0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, /* America/Santo_Domingo */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x44, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8358,13 +8325,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA4, 0x9D, 0xED, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xAC, 0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA4, 0x9D, 0xED, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0x00, 0x00, 0x00, /* America/St_Johns */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8495,13 +8459,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA3, 0xBA, 0x10, 0x00, 0xB2, 0xF5, 0xCD, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x34, 0xCC, 0x01, 0xFF, 0xFF, 0xC5, 0x34, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA3, 0xBA, 0x10, 0x00, 0xB2, 0xF5, 0xCD, 0x00, 0x00, 0x00, 0x00, /* America/St_Lucia */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8509,13 +8470,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x9E, 0xB7, 0x82, 0x00, 0xB5, 0x94, 0x60, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x14, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0xC7, 0xB0, 0x01, +0x02, 0xFF, 0xFF, 0xC6, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0xD0, 0x00, 0x04, 0xFF, 0xFF, 0xC7, +0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, +0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9E, 0xB7, 0x82, 0x00, 0xB5, 0x94, 0x60, 0x00, 0x00, 0x00, +0x00, /* America/St_Thomas */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8523,13 +8483,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA5, 0x54, 0x38, 0x00, 0xAF, 0x93, 0xEA, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x37, 0x60, 0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA5, 0x54, 0x38, 0x00, 0xAF, 0x93, 0xEA, 0x00, 0x00, 0x00, 0x00, /* America/St_Vincent */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8537,13 +8494,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x9D, 0x64, 0xF8, 0x00, 0xB5, 0x39, 0x3A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x14, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0xC7, 0xE8, 0x01, +0x02, 0xFF, 0xFF, 0xC6, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x98, 0x00, 0x04, 0xFF, 0xFF, 0xC7, +0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, +0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9D, 0x64, 0xF8, 0x00, 0xB5, 0x39, 0x3A, 0x00, 0x00, 0x00, +0x00, /* America/Swift_Current */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8867,13 +8823,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0xA5, 0x7B, 0x48, 0x00, 0xB0, 0x0F, 0x9D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x37, 0x14, 0x01, 0xFF, 0xFF, 0xC3, 0x6C, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0xA5, 0x7B, 0x48, 0x00, 0xB0, 0x0F, 0x9D, 0x00, 0x00, 0x00, 0x00, /* America/Vancouver */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -8969,13 +8922,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, -0x03, 0x02, 0x01, 0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, -0xFF, 0xD5, 0xD0, 0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, -0x53, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, -0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x37, 0x60, 0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, +0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* America/Whitehorse */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9286,13 +9236,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, -0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x5A, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x72, 0xED, 0xA4, 0x90, 0x01, -0x02, 0x00, 0x00, 0x89, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x89, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x8C, -0xA0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4D, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x30, 0x00, -0x0A, 0x3C, 0x2B, 0x31, 0x30, 0x3E, 0x2D, 0x31, 0x30, 0x0A, 0x00, 0x23, 0x9A, 0x95, 0x01, 0xE8, -0x4E, 0x82, 0x00, 0x00, 0x00, 0x10, 0x44, 0x75, 0x6D, 0x6F, 0x6E, 0x74, 0x2D, 0x64, 0x27, 0x55, -0x72, 0x76, 0x69, 0x6C, 0x6C, 0x65, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0xD4, 0xBC, 0x76, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x34, 0x60, 0x60, 0xFF, +0xFF, 0xFF, 0xFF, 0xE7, 0x3C, 0x02, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x31, 0x30, 0x00, 0x0A, 0x3C, +0x2B, 0x31, 0x30, 0x3E, 0x2D, 0x31, 0x30, 0x0A, 0x00, 0x23, 0x9A, 0x95, 0x01, 0xE8, 0x4E, 0x82, +0x00, 0x00, 0x00, 0x10, 0x44, 0x75, 0x6D, 0x6F, 0x6E, 0x74, 0x2D, 0x64, 0x27, 0x55, 0x72, 0x76, +0x69, 0x6C, 0x6C, 0x65, /* Antarctica/Macquarie */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9378,22 +9328,8 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0xFF, -0xFF, 0xFF, 0xFF, 0x41, 0xB7, 0x4C, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0xB4, 0xB2, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xB1, 0x51, 0x87, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x78, 0xE5, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB3, 0x43, 0xE5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x58, 0xC7, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB5, 0x23, 0xC7, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x38, 0xA9, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB7, 0x03, 0xA9, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x18, 0x8B, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB8, 0xEC, 0xC5, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xF8, 0x6D, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xBA, 0xCC, 0xA7, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0x4F, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xBC, 0xE3, 0xE8, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAE, 0xF6, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xBE, 0xC3, 0xCA, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8E, 0xD8, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC0, 0xA3, 0xAC, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6E, 0xBA, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC2, 0x83, 0x8E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4E, 0x9C, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC4, 0x63, 0x70, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2E, 0x7E, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC6, 0x4C, 0x8D, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0E, 0x60, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC8, 0x2C, 0x6F, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF7, 0x7D, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0xDA, 0x9A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0xE5, 0xA9, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAC, 0xA5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xEF, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x9E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD8, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7E, 0xDE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB8, 0xA3, 0xE0, 0x00, @@ -9427,21 +9363,18 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x42, 0x3C, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3E, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1C, 0x12, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0x1E, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFB, 0xF4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFE, 0x5A, 0x60, 0x02, -0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00, -0x00, 0xA3, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xC8, 0x01, 0x04, 0x00, 0x00, 0xA1, 0xB8, 0x00, -0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x0E, 0x00, 0x00, 0xA8, -0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, -0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x0A, 0x4E, 0x5A, 0x53, 0x54, 0x2D, 0x31, 0x32, 0x4E, 0x5A, -0x44, 0x54, 0x2C, 0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, -0x2F, 0x33, 0x0A, 0x00, 0x12, 0x90, 0x9A, 0x02, 0x10, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x26, 0x4E, -0x65, 0x77, 0x20, 0x5A, 0x65, 0x61, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, -0x2D, 0x20, 0x4D, 0x63, 0x4D, 0x75, 0x72, 0x64, 0x6F, 0x2C, 0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, -0x20, 0x50, 0x6F, 0x6C, 0x65, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, +0x00, 0xA8, 0xC0, 0x00, 0x09, 0x2D, 0x30, 0x30, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x4E, 0x5A, +0x53, 0x54, 0x00, 0x0A, 0x4E, 0x5A, 0x53, 0x54, 0x2D, 0x31, 0x32, 0x4E, 0x5A, 0x44, 0x54, 0x2C, +0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x2F, 0x33, 0x0A, +0x00, 0x12, 0x90, 0x9A, 0x02, 0x10, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x26, 0x4E, 0x65, 0x77, 0x20, +0x5A, 0x65, 0x61, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4D, +0x63, 0x4D, 0x75, 0x72, 0x64, 0x6F, 0x2C, 0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x50, 0x6F, +0x6C, 0x65, /* Antarctica/Palmer */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9520,22 +9453,8 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x13, 0xFF, -0xFF, 0xFF, 0xFF, 0x41, 0xB7, 0x4C, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0xB4, 0xB2, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xB1, 0x51, 0x87, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x78, 0xE5, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB3, 0x43, 0xE5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x58, 0xC7, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB5, 0x23, 0xC7, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x38, 0xA9, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB7, 0x03, 0xA9, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x18, 0x8B, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xB8, 0xEC, 0xC5, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xF8, 0x6D, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xBA, 0xCC, 0xA7, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0x4F, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xBC, 0xE3, 0xE8, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAE, 0xF6, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xBE, 0xC3, 0xCA, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8E, 0xD8, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC0, 0xA3, 0xAC, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6E, 0xBA, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC2, 0x83, 0x8E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4E, 0x9C, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC4, 0x63, 0x70, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2E, 0x7E, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC6, 0x4C, 0x8D, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0E, 0x60, 0xE8, 0xFF, -0xFF, 0xFF, 0xFF, 0xC8, 0x2C, 0x6F, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF7, 0x7D, 0x68, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0xDA, 0x9A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0xFF, +0xFF, 0xFF, 0xFF, 0xE5, 0xA9, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAC, 0xA5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xEF, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x9E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD8, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7E, 0xDE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB8, 0xA3, 0xE0, 0x00, @@ -9569,18 +9488,15 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x42, 0x3C, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3E, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1C, 0x12, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0x1E, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFB, 0xF4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFE, 0x5A, 0x60, 0x02, -0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00, -0x00, 0xA3, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xC8, 0x01, 0x04, 0x00, 0x00, 0xA1, 0xB8, 0x00, -0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x0E, 0x00, 0x00, 0xA8, -0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, -0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x0A, 0x4E, 0x5A, 0x53, 0x54, 0x2D, 0x31, 0x32, 0x4E, 0x5A, -0x44, 0x54, 0x2C, 0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, -0x2F, 0x33, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, +0x00, 0xA8, 0xC0, 0x00, 0x09, 0x2D, 0x30, 0x30, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x4E, 0x5A, +0x53, 0x54, 0x00, 0x0A, 0x4E, 0x5A, 0x53, 0x54, 0x2D, 0x31, 0x32, 0x4E, 0x5A, 0x44, 0x54, 0x2C, +0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x2F, 0x33, 0x0A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Antarctica/Syowa */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -9589,8 +9505,8 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x1B, 0x36, 0xB4, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, -0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, +0xFF, 0xFF, 0xFF, 0xE7, 0xB1, 0x58, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0x20, 0x08, 0xBC, 0x01, 0x4F, 0x11, 0x58, 0x00, 0x00, 0x00, 0x05, 0x53, 0x79, 0x6F, 0x77, 0x61, @@ -9674,7 +9590,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x1B, 0x36, 0xB4, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0xDA, 0x61, 0x38, 0x56, 0x01, 0x00, 0x00, 0x2A, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0x9C, 0xC8, 0xB8, 0x01, 0x57, 0xA0, 0xC0, 0x00, 0x00, 0x00, 0x00, @@ -10065,12 +9981,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0x9D, 0x30, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8A, 0x92, 0xC0, 0x01, -0x02, 0x00, 0x00, 0x30, 0x50, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, -0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xB1, 0x96, 0x3D, 0x01, 0x5F, 0xD7, 0x9D, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, +0xFF, 0xFF, 0xFF, 0xCA, 0x7B, 0x6C, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x17, 0x59, 0x48, 0x00, +0x00, 0x00, 0x00, 0x04, 0x8A, 0x92, 0xC0, 0x01, 0x02, 0x03, 0x00, 0x00, 0x2F, 0x6C, 0x00, 0x00, +0x00, 0x00, 0x31, 0x38, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x34, 0x00, +0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xB1, 0x96, +0x3D, 0x01, 0x5F, 0xD7, 0x9D, 0x00, 0x00, 0x00, 0x00, /* Asia/Baku */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -10894,12 +10811,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, -0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, +0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, 0xE4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, -0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, +0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x99, 0xBB, 0x78, @@ -11532,7 +11449,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x1B, 0x36, 0xB4, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0xDA, 0x61, 0x35, 0x84, 0x01, 0x00, 0x00, 0x2C, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xB6, 0x16, 0x95, 0x01, 0x5B, 0xDF, 0xFD, 0x00, 0x00, 0x00, 0x00, @@ -11739,7 +11656,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0x99, 0xA8, 0x01, 0x00, 0x00, 0x33, 0xD8, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0x96, 0x90, 0x01, 0x00, 0x00, 0x36, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x34, 0x3E, 0x2D, 0x34, 0x0A, 0x00, 0xAD, 0x57, 0x00, 0x01, 0x6C, 0x0C, 0x9D, 0x00, 0x00, 0x00, 0x00, @@ -11987,10 +11904,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, -0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x85, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x6A, 0x67, 0xC4, 0x01, -0x02, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x04, 0x00, 0x00, 0x62, -0x70, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x0A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x45, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, +0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0x01, 0x02, 0x03, 0x04, 0x02, 0x00, 0x00, 0x62, 0x5C, +0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, +0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, +0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x9A, 0xF3, 0xF8, 0x01, 0xB2, 0xBF, 0x92, 0x00, 0x00, 0x00, 0x00, @@ -12163,12 +12083,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, -0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, +0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, 0xE4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, -0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, +0x00, 0x00, 0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x00, 0x00, 0x00, @@ -12493,128 +12413,53 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0xFF, -0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xDB, 0x12, 0xC8, 0x00, -0x00, 0x00, 0x00, 0x0E, 0xBB, 0xA2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x74, 0x2D, 0x40, 0x00, -0x00, 0x00, 0x00, 0x10, 0x8E, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0xED, 0x3A, 0x40, 0x00, -0x00, 0x00, 0x00, 0x11, 0x55, 0x67, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xBE, 0x22, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x9F, 0x56, 0x38, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x80, 0x89, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, 0x00, 0x00, 0x00, 0x30, 0x61, 0xBD, 0x38, 0x00, -0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x32, 0x42, 0xF0, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x34, 0x25, 0x75, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, 0x36, 0x06, 0xA9, 0x38, 0x00, -0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x37, 0xE7, 0xDC, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC9, 0x10, 0x38, 0x00, -0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xAB, 0x95, 0x38, 0x00, -0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x8C, 0xC8, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6D, 0xFC, 0x38, 0x00, -0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x41, 0x4F, 0x2F, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x43, 0x31, 0xB4, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x48, 0xD5, 0x4F, 0x38, 0x00, -0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xB7, 0xD4, 0x38, 0x00, -0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x99, 0x07, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x7A, 0x3B, 0x38, 0x00, -0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x5B, 0x6E, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x52, 0x3D, 0xF3, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x54, 0x1F, 0x27, 0x38, 0x00, -0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x5A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, 0x57, 0xE1, 0x8E, 0x38, 0x00, -0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x59, 0xC4, 0x13, 0x38, 0x00, -0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xA5, 0x46, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x86, 0x7A, 0x38, 0x00, -0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x67, 0xAD, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x61, 0x4A, 0x32, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2B, 0x66, 0x38, 0x00, -0x00, 0x00, 0x00, 0x64, 0x1A, 0x13, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0C, 0x99, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x65, 0xFB, 0x47, 0x48, 0x00, 0x00, 0x00, 0x00, 0x66, 0xED, 0xCD, 0x38, 0x00, -0x00, 0x00, 0x00, 0x67, 0xDD, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x68, 0xD0, 0x52, 0x38, 0x00, -0x00, 0x00, 0x00, 0x69, 0xBE, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB1, 0x85, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x6B, 0xA0, 0x33, 0x48, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x92, 0xB9, 0x38, 0x00, -0x00, 0x00, 0x00, 0x6D, 0x81, 0x66, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x73, 0xEC, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x6F, 0x62, 0x9A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x70, 0x55, 0x20, 0x38, 0x00, -0x00, 0x00, 0x00, 0x71, 0x45, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x72, 0x37, 0xA5, 0x38, 0x00, -0x00, 0x00, 0x00, 0x73, 0x26, 0x52, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x74, 0x18, 0xD8, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x75, 0x07, 0x86, 0x48, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFA, 0x0C, 0x38, 0x00, -0x00, 0x00, 0x00, 0x76, 0xE8, 0xB9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x77, 0xDB, 0x3F, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x78, 0xCB, 0x3E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x79, 0xBD, 0xC4, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x7A, 0xAC, 0x72, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x9E, 0xF8, 0x38, 0x00, -0x00, 0x00, 0x00, 0x7C, 0x8D, 0xA5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x80, 0x2B, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x7E, 0x6E, 0xD9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x61, 0x5F, 0x38, 0x00, -0x00, 0x00, 0x00, 0x80, 0x51, 0x5E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x81, 0x43, 0xE4, 0x38, 0x00, -0x00, 0x00, 0x00, 0x82, 0x32, 0x91, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x25, 0x17, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x84, 0x13, 0xC5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x85, 0x06, 0x4B, 0x38, 0x00, -0x00, 0x00, 0x00, 0x85, 0xF4, 0xF8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x86, 0xE7, 0x7E, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x87, 0xD7, 0x7D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x88, 0xCA, 0x03, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x89, 0xB8, 0xB1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAB, 0x37, 0x38, 0x00, -0x00, 0x00, 0x00, 0x8B, 0x99, 0xE4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, 0x6A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x7B, 0x18, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x6D, 0x9E, 0x38, 0x00, -0x00, 0x00, 0x00, 0x8F, 0x5D, 0x9D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x90, 0x50, 0x23, 0x38, 0x00, -0x00, 0x00, 0x00, 0x91, 0x3E, 0xD0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x92, 0x31, 0x56, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x93, 0x20, 0x04, 0x48, 0x00, 0x00, 0x00, 0x00, 0x94, 0x12, 0x8A, 0x38, 0x00, -0x00, 0x00, 0x00, 0x95, 0x01, 0x37, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x95, 0xF3, 0xBD, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x96, 0xE3, 0xBC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x97, 0xD6, 0x42, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x98, 0xC4, 0xF0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x99, 0xB7, 0x76, 0x38, 0x00, -0x00, 0x00, 0x00, 0x9A, 0xA6, 0x23, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x98, 0xA9, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x9C, 0x87, 0x57, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x79, 0xDD, 0x38, 0x00, -0x00, 0x00, 0x00, 0x9E, 0x69, 0xDC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x5C, 0x62, 0x38, 0x00, -0x00, 0x00, 0x00, 0xA0, 0x4B, 0x0F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x3D, 0x95, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xA2, 0x2C, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x1E, 0xC9, 0x38, 0x00, -0x00, 0x00, 0x00, 0xA4, 0x0D, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFC, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xA5, 0xEF, 0xFB, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xE2, 0x81, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xA7, 0xD1, 0x2F, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC3, 0xB5, 0x38, 0x00, -0x00, 0x00, 0x00, 0xA9, 0xB2, 0x62, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA4, 0xE8, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xAB, 0x93, 0x96, 0x48, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x86, 0x1C, 0x38, 0x00, -0x00, 0x00, 0x00, 0xAD, 0x74, 0xC9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x67, 0x4F, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xAF, 0x57, 0x4E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x49, 0xD4, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xB1, 0x38, 0x82, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x2B, 0x08, 0x38, 0x00, -0x00, 0x00, 0x00, 0xB3, 0x19, 0xB5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x0C, 0x3B, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xB4, 0xFA, 0xE9, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xED, 0x6F, 0x38, 0x00, -0x00, 0x00, 0x00, 0xB6, 0xDD, 0x6E, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xCF, 0xF4, 0x38, 0x00, -0x00, 0x00, 0x00, 0xB8, 0xBE, 0xA1, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xB1, 0x27, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xBA, 0x9F, 0xD5, 0x48, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x92, 0x5B, 0x38, 0x00, -0x00, 0x00, 0x00, 0xBC, 0x81, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x73, 0x8E, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xBE, 0x63, 0x8D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x56, 0x13, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xC0, 0x44, 0xC1, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x37, 0x47, 0x38, 0x00, -0x00, 0x00, 0x00, 0xC2, 0x25, 0xF4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x18, 0x7A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xC4, 0x07, 0x28, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xF9, 0xAE, 0x38, 0x00, -0x00, 0x00, 0x00, 0xC5, 0xE9, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xDC, 0x33, 0x38, 0x00, -0x00, 0x00, 0x00, 0xC7, 0xCA, 0xE0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xBD, 0x66, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xC9, 0xAC, 0x14, 0x48, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x9E, 0x9A, 0x38, 0x00, -0x00, 0x00, 0x00, 0xCB, 0x8D, 0x47, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x7F, 0xCD, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xCD, 0x6F, 0xCC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x62, 0x52, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xCF, 0x51, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x43, 0x86, 0x38, 0x00, -0x00, 0x00, 0x00, 0xD1, 0x32, 0x33, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x24, 0xB9, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xD3, 0x13, 0x67, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x05, 0xED, 0x38, 0x00, -0x00, 0x00, 0x00, 0xD4, 0xF5, 0xEC, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xE8, 0x72, 0x38, 0x00, -0x00, 0x00, 0x00, 0xD6, 0xD7, 0x1F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xC9, 0xA5, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xD8, 0xB8, 0x53, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xAA, 0xD9, 0x38, 0x00, -0x00, 0x00, 0x00, 0xDA, 0x99, 0x86, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x8C, 0x0C, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xDC, 0x7C, 0x0B, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x6E, 0x91, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xDE, 0x5D, 0x3F, 0x48, 0x01, 0x02, 0x04, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, -0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x00, 0x12, 0x00, 0x00, -0x3F, 0x48, 0x01, 0x16, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x33, -0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x34, 0x33, 0x30, 0x00, -0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x3C, 0x2B, 0x30, -0x34, 0x33, 0x30, 0x3E, 0x2C, 0x4A, 0x37, 0x39, 0x2F, 0x32, 0x34, 0x2C, 0x4A, 0x32, 0x36, 0x33, -0x2F, 0x32, 0x34, 0x0A, 0x00, 0xBF, 0xC0, 0x8A, 0x01, 0x61, 0x23, 0xA5, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0xFF, +0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, +0x00, 0x00, 0x00, 0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, +0x00, 0x00, 0x00, 0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x10, 0xED, 0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, +0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xBE, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, +0x00, 0x00, 0x00, 0x2C, 0x9F, 0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x80, 0x89, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, +0x00, 0x00, 0x00, 0x30, 0x61, 0xBD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x32, 0x42, 0xF0, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x34, 0x25, 0x75, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, +0x00, 0x00, 0x00, 0x36, 0x06, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x37, 0xE7, 0xDC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, +0x00, 0x00, 0x00, 0x39, 0xC9, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, +0x00, 0x00, 0x00, 0x3B, 0xAB, 0x95, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x3D, 0x8C, 0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x6D, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x41, 0x4F, 0x2F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x43, 0x31, 0xB4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, +0x00, 0x00, 0x00, 0x48, 0xD5, 0x4F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, +0x00, 0x00, 0x00, 0x4A, 0xB7, 0xD4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x4C, 0x99, 0x07, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, +0x00, 0x00, 0x00, 0x4E, 0x7A, 0x3B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x50, 0x5B, 0x6E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x52, 0x3D, 0xF3, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, +0x00, 0x00, 0x00, 0x54, 0x1F, 0x27, 0x38, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x56, 0x00, 0x5A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, +0x00, 0x00, 0x00, 0x57, 0xE1, 0x8E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, +0x00, 0x00, 0x00, 0x59, 0xC4, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x5B, 0xA5, 0x46, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, +0x00, 0x00, 0x00, 0x5D, 0x86, 0x7A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x67, 0xAD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x61, 0x4A, 0x32, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, +0x00, 0x00, 0x00, 0x63, 0x2B, 0x66, 0x38, 0x01, 0x03, 0x02, 0x05, 0x04, 0x05, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, +0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, +0x00, 0x00, 0x31, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x46, 0x50, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, +0x00, 0x18, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x33, 0x30, 0x00, +0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x0A, 0x3C, +0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x0A, 0x00, 0xBF, 0xC0, 0x8A, +0x01, 0x61, 0x23, 0xA5, 0x00, 0x00, 0x00, 0x00, /* Asia/Tel_Aviv */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -12948,12 +12793,16 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, -0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x85, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x6A, 0x67, 0xC4, 0x01, -0x02, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x04, 0x00, 0x00, 0x62, -0x70, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x0A, -0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, 0x36, 0xA0, -0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0xFF, +0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x47, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, +0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xE4, 0x51, 0x61, 0x00, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x00, 0x00, +0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, +0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, +0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, +0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, +0x36, 0xA0, 0x00, 0x00, 0x00, 0x00, /* Asia/Vladivostok */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -13652,10 +13501,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, -0x30, 0x0A, 0x00, 0x71, 0x0A, 0xCD, 0x01, 0x09, 0xF5, 0xF0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xE0, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x42, 0x9B, 0x58, 0x01, +0x02, 0xFF, 0xFF, 0xFA, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0xA8, 0x00, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4A, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, +0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x71, 0x0A, 0xCD, 0x01, 0x09, 0xF5, 0xF0, 0x00, 0x00, 0x00, +0x00, /* Atlantic/Stanley */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x46, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15679,7 +15530,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, @@ -15689,7 +15540,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x9B, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, 0x5C, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x20, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x1C, 0x6E, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0xE7, 0xD0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x1B, 0xC9, 0xB0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x17, 0xD5, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x76, 0x92, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, @@ -15740,21 +15591,26 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x57, 0x37, 0xE6, 0x30, 0x00, 0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x17, 0xC8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x59, 0x8F, 0xCE, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0xAA, 0x30, 0x00, -0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x01, +0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, -0x03, 0x05, 0x03, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, +0x03, 0x05, 0x04, 0x02, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, -0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, -0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, -0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, -0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, -0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, -0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x34, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, -0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, 0x03, 0x05, +0x03, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, +0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, +0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, +0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x34, 0x3E, 0x34, +0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x2C, 0x4D, 0x39, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x34, 0x2C, +0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Chile/EasterIsland */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -15762,7 +15618,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x42, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x40, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, @@ -15813,20 +15669,25 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x57, 0x37, 0xE6, 0x30, 0x00, 0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x17, 0xC8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x59, 0x8F, 0xCE, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0xAA, 0x30, 0x00, -0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x01, +0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0x99, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x78, 0x00, -0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, -0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x4D, 0x54, -0x00, 0x2D, 0x30, 0x36, 0x00, 0x2D, 0x30, 0x37, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x0A, 0x3C, 0x2D, -0x30, 0x36, 0x3E, 0x36, 0x3C, 0x2D, 0x30, 0x35, 0x3E, 0x2C, 0x4D, 0x39, 0x2E, 0x31, 0x2E, 0x36, -0x2F, 0x32, 0x32, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x32, 0x0A, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0x99, +0x78, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x78, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, +0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, +0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x36, 0x00, 0x2D, 0x30, 0x37, +0x00, 0x2D, 0x30, 0x35, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x36, 0x3E, 0x36, 0x3C, 0x2D, 0x30, 0x35, +0x3E, 0x2C, 0x4D, 0x39, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x32, 0x2C, 0x4D, 0x34, 0x2E, 0x31, +0x2E, 0x36, 0x2F, 0x32, 0x32, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, /* CST6CDT */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -16088,7 +15949,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xB3, 0x91, 0xFF, +0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xB3, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x0B, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, @@ -16169,7 +16030,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x05, 0x04, 0x05, 0x04, 0x05, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, @@ -17330,7 +17191,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xB3, 0x91, 0xFF, +0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xB3, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x0B, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, @@ -17411,7 +17272,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x05, 0x04, 0x05, 0x04, 0x05, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00, 0xFF, 0xFF, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, @@ -17506,8 +17367,8 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, -0xFF, 0xFF, 0xFF, 0x1A, 0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0xFF, +0xFF, 0xFF, 0xFF, 0x95, 0xA6, 0x91, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, @@ -17532,76 +17393,77 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, -0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, -0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, -0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, -0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, -0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, -0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, -0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, -0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, -0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, -0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, -0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, -0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, -0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, -0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, -0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, -0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, -0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, -0xD4, 0xCA, 0x80, 0x01, 0x0E, 0xC9, 0xD4, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0xC8, 0x82, 0x9F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x61, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, +0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, +0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, +0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, +0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, +0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, +0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, +0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, +0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, +0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, +0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, +0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, +0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, +0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x06, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFD, +0x9F, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, +0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, +0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, +0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, +0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, 0xD4, 0xCA, 0x80, 0x01, +0x0E, 0xC9, 0xD4, 0x00, 0x00, 0x00, 0x00, /* Europe/Helsinki */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17643,7 +17505,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, -0xFF, 0xFF, 0xFF, 0x1A, 0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0x5C, 0xCF, 0xD8, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, @@ -17732,7 +17594,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFB, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, @@ -17823,8 +17685,8 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, -0xFF, 0xFF, 0xFF, 0x1A, 0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0xFF, +0xFF, 0xFF, 0xFF, 0x79, 0x68, 0x3D, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, @@ -17849,76 +17711,77 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, -0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, -0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, -0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, -0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, -0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, -0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, -0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, -0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, -0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, -0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, -0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, -0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, -0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, -0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, -0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, -0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, -0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, -0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, -0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x42, 0x44, 0x53, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, -0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, -0xD4, 0x60, 0x99, 0x01, 0x0F, 0x71, 0x95, 0x00, 0x00, 0x00, 0x00, +0xFF, 0xFF, 0xFF, 0xC8, 0x82, 0x9F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x61, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, +0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, +0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, +0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, +0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, +0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, +0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, +0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, +0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, +0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, +0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, +0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, +0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, +0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x06, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xFE, +0x06, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, +0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, +0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, +0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, +0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, 0xD4, 0x60, 0x99, 0x01, +0x0F, 0x71, 0x95, 0x00, 0x00, 0x00, 0x00, /* Europe/Kaliningrad */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -17982,7 +17845,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x72, 0x61, 0x64, /* Europe/Kiev */ -0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18016,9 +17879,8 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, -0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, -0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, -0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, +0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Europe/Kirov */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18069,6 +17931,45 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0xE0, 0x01, 0x5E, 0x6B, 0x08, 0x00, 0x00, 0x00, 0x0E, 0x4D, 0x53, 0x4B, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x4B, 0x69, 0x72, 0x6F, 0x76, +/* Europe/Kyiv */ +0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x22, 0xFF, +0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, +0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, +0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xCD, 0xA8, 0x70, 0x00, +0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, +0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, +0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, +0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x01, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x03, 0x06, +0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, 0x03, 0x06, +0x03, 0x06, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x00, 0x00, +0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, +0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, +0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, +0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, +0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, 0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, +0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, + /* Europe/Lisbon */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -18171,10 +18072,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF5, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, @@ -18191,7 +18092,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x00, 0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, +0x02, 0x01, 0x02, 0x00, 0x00, 0x0D, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xCF, @@ -19182,10 +19083,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF2, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, @@ -19202,7 +19103,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x00, 0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, +0x02, 0x01, 0x02, 0x00, 0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xCC, @@ -19282,8 +19183,8 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, 0xD0, 0x00, -0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, 0x50, 0x00, -0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xA0, 0x70, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x91, 0x70, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, @@ -19323,10 +19224,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xEF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, @@ -19343,7 +19244,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x00, 0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, +0x02, 0x01, 0x02, 0x00, 0x00, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xC9, @@ -19655,33 +19556,32 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0xFF, -0xFF, 0xFF, 0xFF, 0x24, 0xF0, 0xEA, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0xD4, 0x06, 0x86, 0xFF, -0xFF, 0xFF, 0xFF, 0xCA, 0x17, 0x6A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xE2, 0x71, 0x00, 0xFF, -0xFF, 0xFF, 0xFF, 0xCB, 0xF7, 0x4C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xC2, 0x53, 0x00, 0x00, -0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC, 0x90, 0x00, -0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, 0x00, -0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, -0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, -0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, 0x00, -0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, 0x00, -0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, 0x00, -0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, 0x00, -0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, 0x00, -0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, 0x00, -0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, 0x00, -0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, -0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x08, 0x00, -0x00, 0x00, 0x00, 0x00, 0x06, 0xFA, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, -0x00, 0x43, 0x45, 0x54, 0x00, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, -0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, -0x0A, 0x00, 0xD1, 0x46, 0x38, 0x01, 0x21, 0x2D, 0xF2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, +0xFF, 0xFF, 0xFF, 0x71, 0xD4, 0x04, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x17, 0x6A, 0x00, 0xFF, +0xFF, 0xFF, 0xFF, 0xCA, 0xE2, 0x71, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF7, 0x4C, 0x00, 0xFF, +0xFF, 0xFF, 0xFF, 0xCC, 0xC2, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, +0x00, 0x00, 0x00, 0x16, 0x13, 0xDC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, +0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, +0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, +0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, +0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, +0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, +0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x00, 0x00, 0x08, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, +0x00, 0x0E, 0x10, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, +0x54, 0x00, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, +0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xD1, +0x46, 0x38, 0x01, 0x21, 0x2D, 0xF2, 0x00, 0x00, 0x00, 0x00, /* Europe/Vatican */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -19953,10 +19853,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, -0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, +0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF4, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, -0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, @@ -19973,7 +19873,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x00, 0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, +0x02, 0x01, 0x02, 0x00, 0x00, 0x0E, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xCF, @@ -20438,14 +20338,12 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x6C, 0x76, 0xED, 0x01, 0x5B, 0x29, 0xB2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xCD, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x33, 0xC0, 0xC0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE2, 0xAB, 0xB9, 0x40, 0x01, 0x02, 0x01, 0x00, 0x00, 0x2C, 0x8C, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x45, 0x41, 0x54, 0x00, 0x45, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, +0x00, 0x6C, 0x76, 0xED, 0x01, 0x5B, 0x29, 0xB2, 0x00, 0x00, 0x00, 0x00, /* Indian/Chagos */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -20490,14 +20388,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x77, 0x80, 0x72, 0x01, 0x54, 0xAD, 0x8A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xD1, 0xF0, 0x01, 0x00, 0x00, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, +0x2D, 0x33, 0x0A, 0x00, 0x77, 0x80, 0x72, 0x01, 0x54, 0xAD, 0x8A, 0x00, 0x00, 0x00, 0x00, /* Indian/Kerguelen */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -20556,14 +20450,10 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0xFF, -0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0xEE, 0xDA, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xAD, 0x58, 0xFF, -0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, -0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, -0x26, 0xAC, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, -0x75, 0xD2, 0xC2, 0x01, 0x57, 0xAD, 0xC5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, +0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xD0, 0x18, 0x01, 0x00, 0x00, 0x2A, 0x68, 0x00, 0x00, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, +0x2D, 0x33, 0x0A, 0x00, 0x75, 0xD2, 0xC2, 0x01, 0x57, 0xAD, 0xC5, 0x00, 0x00, 0x00, 0x00, /* Indian/Reunion */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -20583,128 +20473,53 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0xFF, -0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xDB, 0x12, 0xC8, 0x00, -0x00, 0x00, 0x00, 0x0E, 0xBB, 0xA2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x74, 0x2D, 0x40, 0x00, -0x00, 0x00, 0x00, 0x10, 0x8E, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0xED, 0x3A, 0x40, 0x00, -0x00, 0x00, 0x00, 0x11, 0x55, 0x67, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xBE, 0x22, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x9F, 0x56, 0x38, 0x00, -0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x80, 0x89, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, 0x00, 0x00, 0x00, 0x30, 0x61, 0xBD, 0x38, 0x00, -0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x32, 0x42, 0xF0, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x34, 0x25, 0x75, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, 0x36, 0x06, 0xA9, 0x38, 0x00, -0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x37, 0xE7, 0xDC, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC9, 0x10, 0x38, 0x00, -0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xAB, 0x95, 0x38, 0x00, -0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x8C, 0xC8, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6D, 0xFC, 0x38, 0x00, -0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x41, 0x4F, 0x2F, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x43, 0x31, 0xB4, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x48, 0xD5, 0x4F, 0x38, 0x00, -0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xB7, 0xD4, 0x38, 0x00, -0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x99, 0x07, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x7A, 0x3B, 0x38, 0x00, -0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x5B, 0x6E, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x52, 0x3D, 0xF3, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x54, 0x1F, 0x27, 0x38, 0x00, -0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x5A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, 0x57, 0xE1, 0x8E, 0x38, 0x00, -0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x59, 0xC4, 0x13, 0x38, 0x00, -0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xA5, 0x46, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x86, 0x7A, 0x38, 0x00, -0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x67, 0xAD, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x61, 0x4A, 0x32, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2B, 0x66, 0x38, 0x00, -0x00, 0x00, 0x00, 0x64, 0x1A, 0x13, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0C, 0x99, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x65, 0xFB, 0x47, 0x48, 0x00, 0x00, 0x00, 0x00, 0x66, 0xED, 0xCD, 0x38, 0x00, -0x00, 0x00, 0x00, 0x67, 0xDD, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x68, 0xD0, 0x52, 0x38, 0x00, -0x00, 0x00, 0x00, 0x69, 0xBE, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB1, 0x85, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x6B, 0xA0, 0x33, 0x48, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x92, 0xB9, 0x38, 0x00, -0x00, 0x00, 0x00, 0x6D, 0x81, 0x66, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x73, 0xEC, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x6F, 0x62, 0x9A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x70, 0x55, 0x20, 0x38, 0x00, -0x00, 0x00, 0x00, 0x71, 0x45, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x72, 0x37, 0xA5, 0x38, 0x00, -0x00, 0x00, 0x00, 0x73, 0x26, 0x52, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x74, 0x18, 0xD8, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x75, 0x07, 0x86, 0x48, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFA, 0x0C, 0x38, 0x00, -0x00, 0x00, 0x00, 0x76, 0xE8, 0xB9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x77, 0xDB, 0x3F, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x78, 0xCB, 0x3E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x79, 0xBD, 0xC4, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x7A, 0xAC, 0x72, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x9E, 0xF8, 0x38, 0x00, -0x00, 0x00, 0x00, 0x7C, 0x8D, 0xA5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x80, 0x2B, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x7E, 0x6E, 0xD9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x61, 0x5F, 0x38, 0x00, -0x00, 0x00, 0x00, 0x80, 0x51, 0x5E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x81, 0x43, 0xE4, 0x38, 0x00, -0x00, 0x00, 0x00, 0x82, 0x32, 0x91, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x25, 0x17, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x84, 0x13, 0xC5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x85, 0x06, 0x4B, 0x38, 0x00, -0x00, 0x00, 0x00, 0x85, 0xF4, 0xF8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x86, 0xE7, 0x7E, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x87, 0xD7, 0x7D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x88, 0xCA, 0x03, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x89, 0xB8, 0xB1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAB, 0x37, 0x38, 0x00, -0x00, 0x00, 0x00, 0x8B, 0x99, 0xE4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, 0x6A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x8D, 0x7B, 0x18, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x6D, 0x9E, 0x38, 0x00, -0x00, 0x00, 0x00, 0x8F, 0x5D, 0x9D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x90, 0x50, 0x23, 0x38, 0x00, -0x00, 0x00, 0x00, 0x91, 0x3E, 0xD0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x92, 0x31, 0x56, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x93, 0x20, 0x04, 0x48, 0x00, 0x00, 0x00, 0x00, 0x94, 0x12, 0x8A, 0x38, 0x00, -0x00, 0x00, 0x00, 0x95, 0x01, 0x37, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x95, 0xF3, 0xBD, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x96, 0xE3, 0xBC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x97, 0xD6, 0x42, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x98, 0xC4, 0xF0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x99, 0xB7, 0x76, 0x38, 0x00, -0x00, 0x00, 0x00, 0x9A, 0xA6, 0x23, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x98, 0xA9, 0xB8, 0x00, -0x00, 0x00, 0x00, 0x9C, 0x87, 0x57, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x79, 0xDD, 0x38, 0x00, -0x00, 0x00, 0x00, 0x9E, 0x69, 0xDC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x5C, 0x62, 0x38, 0x00, -0x00, 0x00, 0x00, 0xA0, 0x4B, 0x0F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x3D, 0x95, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xA2, 0x2C, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x1E, 0xC9, 0x38, 0x00, -0x00, 0x00, 0x00, 0xA4, 0x0D, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFC, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xA5, 0xEF, 0xFB, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xE2, 0x81, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xA7, 0xD1, 0x2F, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC3, 0xB5, 0x38, 0x00, -0x00, 0x00, 0x00, 0xA9, 0xB2, 0x62, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA4, 0xE8, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xAB, 0x93, 0x96, 0x48, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x86, 0x1C, 0x38, 0x00, -0x00, 0x00, 0x00, 0xAD, 0x74, 0xC9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x67, 0x4F, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xAF, 0x57, 0x4E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x49, 0xD4, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xB1, 0x38, 0x82, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x2B, 0x08, 0x38, 0x00, -0x00, 0x00, 0x00, 0xB3, 0x19, 0xB5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x0C, 0x3B, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xB4, 0xFA, 0xE9, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xED, 0x6F, 0x38, 0x00, -0x00, 0x00, 0x00, 0xB6, 0xDD, 0x6E, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xCF, 0xF4, 0x38, 0x00, -0x00, 0x00, 0x00, 0xB8, 0xBE, 0xA1, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xB1, 0x27, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xBA, 0x9F, 0xD5, 0x48, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x92, 0x5B, 0x38, 0x00, -0x00, 0x00, 0x00, 0xBC, 0x81, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x73, 0x8E, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xBE, 0x63, 0x8D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x56, 0x13, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xC0, 0x44, 0xC1, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x37, 0x47, 0x38, 0x00, -0x00, 0x00, 0x00, 0xC2, 0x25, 0xF4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x18, 0x7A, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xC4, 0x07, 0x28, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xF9, 0xAE, 0x38, 0x00, -0x00, 0x00, 0x00, 0xC5, 0xE9, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xDC, 0x33, 0x38, 0x00, -0x00, 0x00, 0x00, 0xC7, 0xCA, 0xE0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xBD, 0x66, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xC9, 0xAC, 0x14, 0x48, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x9E, 0x9A, 0x38, 0x00, -0x00, 0x00, 0x00, 0xCB, 0x8D, 0x47, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x7F, 0xCD, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xCD, 0x6F, 0xCC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x62, 0x52, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xCF, 0x51, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x43, 0x86, 0x38, 0x00, -0x00, 0x00, 0x00, 0xD1, 0x32, 0x33, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x24, 0xB9, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xD3, 0x13, 0x67, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x05, 0xED, 0x38, 0x00, -0x00, 0x00, 0x00, 0xD4, 0xF5, 0xEC, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xE8, 0x72, 0x38, 0x00, -0x00, 0x00, 0x00, 0xD6, 0xD7, 0x1F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xC9, 0xA5, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xD8, 0xB8, 0x53, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xAA, 0xD9, 0x38, 0x00, -0x00, 0x00, 0x00, 0xDA, 0x99, 0x86, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x8C, 0x0C, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xDC, 0x7C, 0x0B, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x6E, 0x91, 0xB8, 0x00, -0x00, 0x00, 0x00, 0xDE, 0x5D, 0x3F, 0x48, 0x01, 0x02, 0x04, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, -0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, -0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x00, 0x12, 0x00, 0x00, -0x3F, 0x48, 0x01, 0x16, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x33, -0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x34, 0x33, 0x30, 0x00, -0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x3C, 0x2B, 0x30, -0x34, 0x33, 0x30, 0x3E, 0x2C, 0x4A, 0x37, 0x39, 0x2F, 0x32, 0x34, 0x2C, 0x4A, 0x32, 0x36, 0x33, -0x2F, 0x32, 0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0xFF, +0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, +0x00, 0x00, 0x00, 0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, +0x00, 0x00, 0x00, 0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x10, 0xED, 0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, +0x00, 0x00, 0x00, 0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xBE, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, +0x00, 0x00, 0x00, 0x2C, 0x9F, 0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x80, 0x89, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, +0x00, 0x00, 0x00, 0x30, 0x61, 0xBD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x32, 0x42, 0xF0, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x34, 0x25, 0x75, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, +0x00, 0x00, 0x00, 0x36, 0x06, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x37, 0xE7, 0xDC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, +0x00, 0x00, 0x00, 0x39, 0xC9, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, +0x00, 0x00, 0x00, 0x3B, 0xAB, 0x95, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x3D, 0x8C, 0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x6D, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x41, 0x4F, 0x2F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x43, 0x31, 0xB4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, +0x00, 0x00, 0x00, 0x48, 0xD5, 0x4F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, +0x00, 0x00, 0x00, 0x4A, 0xB7, 0xD4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x4C, 0x99, 0x07, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, +0x00, 0x00, 0x00, 0x4E, 0x7A, 0x3B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x50, 0x5B, 0x6E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x52, 0x3D, 0xF3, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, +0x00, 0x00, 0x00, 0x54, 0x1F, 0x27, 0x38, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x56, 0x00, 0x5A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, +0x00, 0x00, 0x00, 0x57, 0xE1, 0x8E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, +0x00, 0x00, 0x00, 0x59, 0xC4, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x5B, 0xA5, 0x46, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, +0x00, 0x00, 0x00, 0x5D, 0x86, 0x7A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x67, 0xAD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x61, 0x4A, 0x32, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, +0x00, 0x00, 0x00, 0x63, 0x2B, 0x66, 0x38, 0x01, 0x03, 0x02, 0x05, 0x04, 0x05, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, +0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, +0x00, 0x00, 0x31, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x46, 0x50, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, +0x00, 0x18, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x33, 0x30, 0x00, +0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x0A, 0x3C, +0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Israel */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -21484,7 +21299,7 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x42, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x40, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, @@ -21535,21 +21350,25 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x57, 0x37, 0xE6, 0x30, 0x00, 0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x59, 0x17, 0xC8, 0x30, 0x00, 0x00, 0x00, 0x00, 0x59, 0x8F, 0xCE, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xF7, 0xAA, 0x30, 0x00, -0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x01, +0x00, 0x00, 0x00, 0x5B, 0x6F, 0xB0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA9, 0x67, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, 0x00, +0x00, 0x00, 0x00, 0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0x99, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x78, 0x00, -0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, -0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x4D, 0x54, -0x00, 0x2D, 0x30, 0x36, 0x00, 0x2D, 0x30, 0x37, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x0A, 0x3C, 0x2D, -0x30, 0x36, 0x3E, 0x36, 0x3C, 0x2D, 0x30, 0x35, 0x3E, 0x2C, 0x4D, 0x39, 0x2E, 0x31, 0x2E, 0x36, -0x2F, 0x32, 0x32, 0x2C, 0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x32, 0x0A, 0x00, 0x5F, -0xE6, 0xC8, 0x00, 0x6B, 0xAD, 0x1A, 0x00, 0x00, 0x00, 0x0D, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, -0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, +0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0xFF, 0xFF, 0x99, +0x78, 0x00, 0x00, 0xFF, 0xFF, 0x99, 0x78, 0x00, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x08, 0xFF, +0xFF, 0x9D, 0x90, 0x00, 0x0C, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, +0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x36, 0x00, 0x2D, 0x30, 0x37, +0x00, 0x2D, 0x30, 0x35, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x36, 0x3E, 0x36, 0x3C, 0x2D, 0x30, 0x35, +0x3E, 0x2C, 0x4D, 0x39, 0x2E, 0x31, 0x2E, 0x36, 0x2F, 0x32, 0x32, 0x2C, 0x4D, 0x34, 0x2E, 0x31, +0x2E, 0x36, 0x2F, 0x32, 0x32, 0x0A, 0x00, 0x5F, 0xE6, 0xC8, 0x00, 0x6B, 0xAD, 0x1A, 0x00, 0x00, +0x00, 0x0D, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, /* Pacific/Efate */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -21848,12 +21667,13 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xFF, -0xFF, 0xFF, 0xFF, 0x6E, 0x3D, 0xC8, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x05, 0xFB, 0x08, 0x01, -0x02, 0x00, 0x00, 0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x65, -0x50, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x53, 0x54, 0x00, 0x0A, 0x53, 0x53, 0x54, 0x31, -0x31, 0x0A, 0x00, 0xB4, 0x62, 0x62, 0x00, 0x04, 0x04, 0xA5, 0x00, 0x00, 0x00, 0x0E, 0x4D, 0x69, -0x64, 0x77, 0x61, 0x79, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, +0xFF, 0xFF, 0xFF, 0x7E, 0x37, 0x5B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x75, 0x8A, 0xB0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE6, 0xED, 0x75, 0x20, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0x59, 0xB8, 0x00, 0x00, +0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, +0x2D, 0x31, 0x31, 0x00, 0x2D, 0x31, 0x30, 0x00, 0x0A, 0x3C, 0x2D, 0x31, 0x31, 0x3E, 0x31, 0x31, +0x0A, 0x00, 0xB4, 0x62, 0x62, 0x00, 0x04, 0x04, 0xA5, 0x00, 0x00, 0x00, 0x0E, 0x4D, 0x69, 0x64, +0x77, 0x61, 0x79, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Nauru */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4E, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -22041,24 +21861,14 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xFF, -0xFF, 0xFF, 0xFF, 0x14, 0xE1, 0xC5, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x36, 0x2D, 0x4C, 0xFF, -0xFF, 0xFF, 0xFF, 0xCB, 0x37, 0x95, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x2E, 0x89, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEC, 0x37, 0xBE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x36, 0xF8, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFB, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0x27, 0x8C, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x58, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x97, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x46, 0x75, 0x70, 0x00, -0x00, 0x00, 0x00, 0x02, 0x77, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x57, 0x70, 0x00, -0x00, 0x00, 0x00, 0x07, 0x70, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCC, 0xD1, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x0C, 0x08, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7C, 0x87, 0x2C, 0x00, -0x00, 0x00, 0x00, 0x0D, 0xBF, 0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x65, 0xA3, 0x70, 0x00, -0x00, 0x00, 0x00, 0x3A, 0x43, 0x5E, 0x60, 0x01, 0x02, 0x03, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, -0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x05, 0xFF, 0xFF, 0x36, 0x34, -0x00, 0x00, 0x00, 0x00, 0x87, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, -0x7E, 0x90, 0x00, 0x08, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x0C, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x10, -0x4C, 0x4D, 0x54, 0x00, 0x47, 0x53, 0x54, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x47, 0x44, 0x54, 0x00, -0x43, 0x68, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x68, 0x53, 0x54, 0x2D, 0x31, 0x30, 0x0A, 0x00, 0xA0, -0x85, 0xC0, 0x01, 0xF1, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, 0xFF, +0xFF, 0xFF, 0xFF, 0x14, 0xE1, 0xC4, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x36, 0x2C, 0x5C, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0x37, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x43, 0x5E, 0x60, 0x01, +0x02, 0x03, 0x04, 0xFF, 0xFF, 0x37, 0x24, 0x00, 0x00, 0x00, 0x00, 0x88, 0xA4, 0x00, 0x00, 0x00, +0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x08, 0x00, 0x00, 0x8C, 0xA0, 0x00, +0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x2B, 0x31, 0x30, 0x00, 0x43, 0x68, 0x53, +0x54, 0x00, 0x0A, 0x43, 0x68, 0x53, 0x54, 0x2D, 0x31, 0x30, 0x0A, 0x00, 0xA0, 0x85, 0xC0, 0x01, +0xF1, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, /* Pacific/Samoa */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -23426,606 +23236,607 @@ const unsigned char timelib_timezone_db_data_builtin[341337] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #else -const timelib_tzdb_index_entry timezonedb_idx_builtin[595] = { - { "Africa/Abidjan" , 0x000000 }, - { "Africa/Accra" , 0x0000A0 }, - { "Africa/Addis_Ababa" , 0x000140 }, - { "Africa/Algiers" , 0x000255 }, - { "Africa/Asmara" , 0x000540 }, - { "Africa/Asmera" , 0x000655 }, - { "Africa/Bamako" , 0x00076A }, - { "Africa/Bangui" , 0x00080A }, - { "Africa/Banjul" , 0x000901 }, - { "Africa/Bissau" , 0x0009A1 }, - { "Africa/Blantyre" , 0x000A6F }, - { "Africa/Brazzaville" , 0x000B10 }, - { "Africa/Bujumbura" , 0x000C07 }, - { "Africa/Cairo" , 0x000CA8 }, - { "Africa/Casablanca" , 0x001457 }, - { "Africa/Ceuta" , 0x001DE0 }, - { "Africa/Conakry" , 0x0025EE }, - { "Africa/Dakar" , 0x00268E }, - { "Africa/Dar_es_Salaam" , 0x00272E }, - { "Africa/Djibouti" , 0x002843 }, - { "Africa/Douala" , 0x002958 }, - { "Africa/El_Aaiun" , 0x002A4F }, - { "Africa/Freetown" , 0x003352 }, - { "Africa/Gaborone" , 0x0033F2 }, - { "Africa/Harare" , 0x003493 }, - { "Africa/Johannesburg" , 0x003534 }, - { "Africa/Juba" , 0x003636 }, - { "Africa/Kampala" , 0x0038E9 }, - { "Africa/Khartoum" , 0x0039FE }, - { "Africa/Kigali" , 0x003CB1 }, - { "Africa/Kinshasa" , 0x003D52 }, - { "Africa/Lagos" , 0x003E62 }, - { "Africa/Libreville" , 0x003F59 }, - { "Africa/Lome" , 0x004050 }, - { "Africa/Luanda" , 0x0040F0 }, - { "Africa/Lubumbashi" , 0x0041E7 }, - { "Africa/Lusaka" , 0x0042A1 }, - { "Africa/Malabo" , 0x004342 }, - { "Africa/Maputo" , 0x004439 }, - { "Africa/Maseru" , 0x0044DA }, - { "Africa/Mbabane" , 0x0045DC }, - { "Africa/Mogadishu" , 0x0046DE }, - { "Africa/Monrovia" , 0x0047F3 }, - { "Africa/Nairobi" , 0x0048CF }, - { "Africa/Ndjamena" , 0x0049E4 }, - { "Africa/Niamey" , 0x004AB7 }, - { "Africa/Nouakchott" , 0x004BAE }, - { "Africa/Ouagadougou" , 0x004C4E }, - { "Africa/Porto-Novo" , 0x004CEE }, - { "Africa/Sao_Tome" , 0x004DE5 }, - { "Africa/Timbuktu" , 0x004EEF }, - { "Africa/Tripoli" , 0x004F8F }, - { "Africa/Tunis" , 0x00520C }, - { "Africa/Windhoek" , 0x0054C9 }, - { "America/Adak" , 0x005890 }, - { "America/Anchorage" , 0x0061E0 }, - { "America/Anguilla" , 0x006B42 }, - { "America/Antigua" , 0x006C44 }, - { "America/Araguaina" , 0x006D46 }, - { "America/Argentina/Buenos_Aires" , 0x0070CF }, - { "America/Argentina/Catamarca" , 0x007524 }, - { "America/Argentina/ComodRivadavia" , 0x00797F }, - { "America/Argentina/Cordoba" , 0x007DBF }, - { "America/Argentina/Jujuy" , 0x008235 }, - { "America/Argentina/La_Rioja" , 0x008663 }, - { "America/Argentina/Mendoza" , 0x008ABE }, - { "America/Argentina/Rio_Gallegos" , 0x008F0A }, - { "America/Argentina/Salta" , 0x009359 }, - { "America/Argentina/San_Juan" , 0x009793 }, - { "America/Argentina/San_Luis" , 0x009BEE }, - { "America/Argentina/Tucuman" , 0x00A055 }, - { "America/Argentina/Ushuaia" , 0x00A4BD }, - { "America/Aruba" , 0x00A912 }, - { "America/Asuncion" , 0x00AA14 }, - { "America/Atikokan" , 0x00B21C }, - { "America/Atka" , 0x00B2FF }, - { "America/Bahia" , 0x00BC3F }, - { "America/Bahia_Banderas" , 0x00C050 }, - { "America/Barbados" , 0x00C686 }, - { "America/Belem" , 0x00C846 }, - { "America/Belize" , 0x00CAA4 }, - { "America/Blanc-Sablon" , 0x00D0FE }, - { "America/Boa_Vista" , 0x00D21C }, - { "America/Bogota" , 0x00D4A7 }, - { "America/Boise" , 0x00D5A9 }, - { "America/Buenos_Aires" , 0x00DF2F }, - { "America/Cambridge_Bay" , 0x00E36F }, - { "America/Campo_Grande" , 0x00EBB3 }, - { "America/Cancun" , 0x00F175 }, - { "America/Caracas" , 0x00F4B3 }, - { "America/Catamarca" , 0x00F5C7 }, - { "America/Cayenne" , 0x00FA07 }, - { "America/Cayman" , 0x00FAD9 }, - { "America/Chicago" , 0x00FB9B }, - { "America/Chihuahua" , 0x0109B3 }, - { "America/Coral_Harbour" , 0x010FB1 }, - { "America/Cordoba" , 0x011073 }, - { "America/Costa_Rica" , 0x0114B3 }, - { "America/Creston" , 0x0115FB }, - { "America/Cuiaba" , 0x011761 }, - { "America/Curacao" , 0x011D00 }, - { "America/Danmarkshavn" , 0x011E02 }, - { "America/Dawson" , 0x0120E2 }, - { "America/Dawson_Creek" , 0x01274E }, - { "America/Denver" , 0x012B94 }, - { "America/Detroit" , 0x013541 }, - { "America/Dominica" , 0x013E1C }, - { "America/Edmonton" , 0x013F1E }, - { "America/Eirunepe" , 0x014863 }, - { "America/El_Salvador" , 0x014B0E }, - { "America/Ensenada" , 0x014BFA }, - { "America/Fort_Nelson" , 0x01552C }, - { "America/Fort_Wayne" , 0x015E0C }, - { "America/Fortaleza" , 0x01649A }, - { "America/Glace_Bay" , 0x016798 }, - { "America/Godthab" , 0x01704F }, - { "America/Goose_Bay" , 0x0177B1 }, - { "America/Grand_Turk" , 0x018467 }, - { "America/Grenada" , 0x018B9D }, - { "America/Guadeloupe" , 0x018C9F }, - { "America/Guatemala" , 0x018DA1 }, - { "America/Guayaquil" , 0x018EC5 }, - { "America/Guyana" , 0x018FD9 }, - { "America/Halifax" , 0x0190EB }, - { "America/Havana" , 0x019E75 }, - { "America/Hermosillo" , 0x01A7F1 }, - { "America/Indiana/Indianapolis" , 0x01A9BC }, - { "America/Indiana/Knox" , 0x01B063 }, - { "America/Indiana/Marengo" , 0x01BA00 }, - { "America/Indiana/Petersburg" , 0x01C0DD }, - { "America/Indiana/Tell_City" , 0x01C86C }, - { "America/Indiana/Vevay" , 0x01CF20 }, - { "America/Indiana/Vincennes" , 0x01D4CC }, - { "America/Indiana/Winamac" , 0x01DB92 }, - { "America/Indianapolis" , 0x01E2A6 }, - { "America/Inuvik" , 0x01E934 }, - { "America/Iqaluit" , 0x01F0BA }, - { "America/Jamaica" , 0x01F8D4 }, - { "America/Jujuy" , 0x01FAC2 }, - { "America/Juneau" , 0x01FEE6 }, - { "America/Kentucky/Louisville" , 0x020837 }, - { "America/Kentucky/Monticello" , 0x021335 }, - { "America/Knox_IN" , 0x021C85 }, - { "America/Kralendijk" , 0x02260D }, - { "America/La_Paz" , 0x02270F }, - { "America/Lima" , 0x022803 }, - { "America/Los_Angeles" , 0x0229A5 }, - { "America/Louisville" , 0x0234CC }, - { "America/Lower_Princes" , 0x023FAC }, - { "America/Maceio" , 0x0240AE }, - { "America/Managua" , 0x0243B2 }, - { "America/Manaus" , 0x02456C }, - { "America/Marigot" , 0x0247E3 }, - { "America/Martinique" , 0x0248E5 }, - { "America/Matamoros" , 0x0249D9 }, - { "America/Mazatlan" , 0x024F91 }, - { "America/Mendoza" , 0x0255C8 }, - { "America/Menominee" , 0x025A08 }, - { "America/Merida" , 0x026315 }, - { "America/Metlakatla" , 0x0268CF }, - { "America/Mexico_City" , 0x026E81 }, - { "America/Miquelon" , 0x0274C9 }, - { "America/Moncton" , 0x027B57 }, - { "America/Monterrey" , 0x0287CD }, - { "America/Montevideo" , 0x028D8C }, - { "America/Montreal" , 0x02937E }, - { "America/Montserrat" , 0x02A130 }, - { "America/Nassau" , 0x02A232 }, - { "America/New_York" , 0x02AFE4 }, - { "America/Nipigon" , 0x02BDD4 }, - { "America/Nome" , 0x02C64B }, - { "America/Noronha" , 0x02CFA3 }, - { "America/North_Dakota/Beulah" , 0x02D28B }, - { "America/North_Dakota/Center" , 0x02DBF8 }, - { "America/North_Dakota/New_Salem" , 0x02E565 }, - { "America/Nuuk" , 0x02EED8 }, - { "America/Ojinaga" , 0x02F650 }, - { "America/Panama" , 0x02FC50 }, - { "America/Pangnirtung" , 0x02FD12 }, - { "America/Paramaribo" , 0x030566 }, - { "America/Phoenix" , 0x030678 }, - { "America/Port-au-Prince" , 0x0307E9 }, - { "America/Port_of_Spain" , 0x030D8F }, - { "America/Porto_Acre" , 0x030E91 }, - { "America/Porto_Velho" , 0x031111 }, - { "America/Puerto_Rico" , 0x031365 }, - { "America/Punta_Arenas" , 0x031467 }, - { "America/Rainy_River" , 0x031BF5 }, - { "America/Rankin_Inlet" , 0x03246D }, - { "America/Recife" , 0x032BF3 }, - { "America/Regina" , 0x032ED5 }, - { "America/Resolute" , 0x0332CA }, - { "America/Rio_Branco" , 0x033A51 }, - { "America/Rosario" , 0x033CD5 }, - { "America/Santa_Isabel" , 0x034115 }, - { "America/Santarem" , 0x034A47 }, - { "America/Santiago" , 0x034CB8 }, - { "America/Santo_Domingo" , 0x0356B7 }, - { "America/Sao_Paulo" , 0x03588D }, - { "America/Scoresbysund" , 0x035E73 }, - { "America/Shiprock" , 0x036618 }, - { "America/Sitka" , 0x036FB0 }, - { "America/St_Barthelemy" , 0x0378E8 }, - { "America/St_Johns" , 0x0379EA }, - { "America/St_Kitts" , 0x03885F }, - { "America/St_Lucia" , 0x038961 }, - { "America/St_Thomas" , 0x038A63 }, - { "America/St_Vincent" , 0x038B65 }, - { "America/Swift_Current" , 0x038C67 }, - { "America/Tegucigalpa" , 0x038EB5 }, - { "America/Thule" , 0x038FBD }, - { "America/Thunder_Bay" , 0x0395B5 }, - { "America/Tijuana" , 0x039E75 }, - { "America/Toronto" , 0x03A7C8 }, - { "America/Tortola" , 0x03B597 }, - { "America/Vancouver" , 0x03B699 }, - { "America/Virgin" , 0x03C20A }, - { "America/Whitehorse" , 0x03C30C }, - { "America/Winnipeg" , 0x03C978 }, - { "America/Yakutat" , 0x03D4D5 }, - { "America/Yellowknife" , 0x03DDF2 }, - { "Antarctica/Casey" , 0x03E5C3 }, - { "Antarctica/Davis" , 0x03E754 }, - { "Antarctica/DumontDUrville" , 0x03E88E }, - { "Antarctica/Macquarie" , 0x03E964 }, - { "Antarctica/Mawson" , 0x03F254 }, - { "Antarctica/McMurdo" , 0x03F32D }, - { "Antarctica/Palmer" , 0x03FCE4 }, - { "Antarctica/Rothera" , 0x040280 }, - { "Antarctica/South_Pole" , 0x040337 }, - { "Antarctica/Syowa" , 0x040CC8 }, - { "Antarctica/Troll" , 0x040D7E }, - { "Antarctica/Vostok" , 0x041219 }, - { "Arctic/Longyearbyen" , 0x0412D0 }, - { "Asia/Aden" , 0x041B90 }, - { "Asia/Almaty" , 0x041C41 }, - { "Asia/Amman" , 0x042049 }, - { "Asia/Anadyr" , 0x042792 }, - { "Asia/Aqtau" , 0x042C55 }, - { "Asia/Aqtobe" , 0x04304D }, - { "Asia/Ashgabat" , 0x043459 }, - { "Asia/Ashkhabad" , 0x0436D0 }, - { "Asia/Atyrau" , 0x043947 }, - { "Asia/Baghdad" , 0x043D47 }, - { "Asia/Bahrain" , 0x04412A }, - { "Asia/Baku" , 0x0441FD }, - { "Asia/Bangkok" , 0x0446D4 }, - { "Asia/Barnaul" , 0x0447A7 }, - { "Asia/Beirut" , 0x044C86 }, - { "Asia/Bishkek" , 0x0454FC }, - { "Asia/Brunei" , 0x0458DF }, - { "Asia/Calcutta" , 0x0459B6 }, - { "Asia/Chita" , 0x045ADF }, - { "Asia/Choibalsan" , 0x045FC4 }, - { "Asia/Chongqing" , 0x046397 }, - { "Asia/Chungking" , 0x0465D4 }, - { "Asia/Colombo" , 0x046811 }, - { "Asia/Dacca" , 0x046991 }, - { "Asia/Damascus" , 0x046AEE }, - { "Asia/Dhaka" , 0x0473F0 }, - { "Asia/Dili" , 0x04754D }, - { "Asia/Dubai" , 0x04763C }, - { "Asia/Dushanbe" , 0x0476ED }, - { "Asia/Famagusta" , 0x047948 }, - { "Asia/Gaza" , 0x04814F }, - { "Asia/Harbin" , 0x048ADB }, - { "Asia/Hebron" , 0x048D18 }, - { "Asia/Ho_Chi_Minh" , 0x0496BF }, - { "Asia/Hong_Kong" , 0x04982A }, - { "Asia/Hovd" , 0x049CE9 }, - { "Asia/Irkutsk" , 0x04A09B }, - { "Asia/Istanbul" , 0x04A59C }, - { "Asia/Jakarta" , 0x04AD43 }, - { "Asia/Jayapura" , 0x04AEBF }, - { "Asia/Jerusalem" , 0x04AFDE }, - { "Asia/Kabul" , 0x04B93E }, - { "Asia/Kamchatka" , 0x04BA1A }, - { "Asia/Karachi" , 0x04BEC6 }, - { "Asia/Kashgar" , 0x04C04D }, - { "Asia/Kathmandu" , 0x04C0FE }, - { "Asia/Katmandu" , 0x04C1DE }, - { "Asia/Khandyga" , 0x04C2BE }, - { "Asia/Kolkata" , 0x04C7DF }, - { "Asia/Krasnoyarsk" , 0x04C908 }, - { "Asia/Kuala_Lumpur" , 0x04CDE4 }, - { "Asia/Kuching" , 0x04CF83 }, - { "Asia/Kuwait" , 0x04D180 }, - { "Asia/Macao" , 0x04D231 }, - { "Asia/Macau" , 0x04D708 }, - { "Asia/Magadan" , 0x04DBDF }, - { "Asia/Makassar" , 0x04E0C1 }, - { "Asia/Manila" , 0x04E214 }, - { "Asia/Muscat" , 0x04E368 }, - { "Asia/Nicosia" , 0x04E419 }, - { "Asia/Novokuznetsk" , 0x04EC0A }, - { "Asia/Novosibirsk" , 0x04F0B4 }, - { "Asia/Omsk" , 0x04F599 }, - { "Asia/Oral" , 0x04FA69 }, - { "Asia/Phnom_Penh" , 0x04FE71 }, - { "Asia/Pontianak" , 0x04FF44 }, - { "Asia/Pyongyang" , 0x0500C7 }, - { "Asia/Qatar" , 0x0501C0 }, - { "Asia/Qostanay" , 0x050293 }, - { "Asia/Qyzylorda" , 0x0506AC }, - { "Asia/Rangoon" , 0x050AD6 }, - { "Asia/Riyadh" , 0x050BEE }, - { "Asia/Saigon" , 0x050C9F }, - { "Asia/Sakhalin" , 0x050E0A }, - { "Asia/Samarkand" , 0x0512E0 }, - { "Asia/Seoul" , 0x05153E }, - { "Asia/Shanghai" , 0x0517B3 }, - { "Asia/Singapore" , 0x0519FC }, - { "Asia/Srednekolymsk" , 0x051B87 }, - { "Asia/Taipei" , 0x05206D }, - { "Asia/Tashkent" , 0x052372 }, - { "Asia/Tbilisi" , 0x0525DE }, - { "Asia/Tehran" , 0x0529F5 }, - { "Asia/Tel_Aviv" , 0x053417 }, - { "Asia/Thimbu" , 0x053D77 }, - { "Asia/Thimphu" , 0x053E4E }, - { "Asia/Tokyo" , 0x053F25 }, - { "Asia/Tomsk" , 0x054066 }, - { "Asia/Ujung_Pandang" , 0x054545 }, - { "Asia/Ulaanbaatar" , 0x05464F }, - { "Asia/Ulan_Bator" , 0x0549EB }, - { "Asia/Urumqi" , 0x054D72 }, - { "Asia/Ust-Nera" , 0x054E30 }, - { "Asia/Vientiane" , 0x055334 }, - { "Asia/Vladivostok" , 0x055407 }, - { "Asia/Yakutsk" , 0x0558DE }, - { "Asia/Yangon" , 0x055DB4 }, - { "Asia/Yekaterinburg" , 0x055ECC }, - { "Asia/Yerevan" , 0x0563C1 }, - { "Atlantic/Azores" , 0x05684C }, - { "Atlantic/Bermuda" , 0x057616 }, - { "Atlantic/Canary" , 0x057F7E }, - { "Atlantic/Cape_Verde" , 0x058701 }, - { "Atlantic/Faeroe" , 0x05881B }, - { "Atlantic/Faroe" , 0x058F3E }, - { "Atlantic/Jan_Mayen" , 0x059661 }, - { "Atlantic/Madeira" , 0x059F21 }, - { "Atlantic/Reykjavik" , 0x05ACEB }, - { "Atlantic/South_Georgia" , 0x05B181 }, - { "Atlantic/St_Helena" , 0x05B231 }, - { "Atlantic/Stanley" , 0x05B2D1 }, - { "Australia/ACT" , 0x05B79B }, - { "Australia/Adelaide" , 0x05C035 }, - { "Australia/Brisbane" , 0x05C8F0 }, - { "Australia/Broken_Hill" , 0x05CAB6 }, - { "Australia/Canberra" , 0x05D393 }, - { "Australia/Currie" , 0x05DC2D }, - { "Australia/Darwin" , 0x05E56F }, - { "Australia/Eucla" , 0x05E6D2 }, - { "Australia/Hobart" , 0x05E8CD }, - { "Australia/LHI" , 0x05F217 }, - { "Australia/Lindeman" , 0x05F967 }, - { "Australia/Lord_Howe" , 0x05FB6D }, - { "Australia/Melbourne" , 0x0602CD }, - { "Australia/North" , 0x060B6F }, - { "Australia/NSW" , 0x060CC0 }, - { "Australia/Perth" , 0x06155A }, - { "Australia/Queensland" , 0x061742 }, - { "Australia/South" , 0x0618F1 }, - { "Australia/Sydney" , 0x06219D }, - { "Australia/Tasmania" , 0x062A53 }, - { "Australia/Victoria" , 0x063395 }, - { "Australia/West" , 0x063C2F }, - { "Australia/Yancowinna" , 0x063DF9 }, - { "Brazil/Acre" , 0x0646BA }, - { "Brazil/DeNoronha" , 0x06493A }, - { "Brazil/East" , 0x064C12 }, - { "Brazil/West" , 0x0651C2 }, - { "Canada/Atlantic" , 0x06542A }, - { "Canada/Central" , 0x066196 }, - { "Canada/Eastern" , 0x066CD6 }, - { "Canada/Mountain" , 0x067A88 }, - { "Canada/Newfoundland" , 0x0683B0 }, - { "Canada/Pacific" , 0x069203 }, - { "Canada/Saskatchewan" , 0x069D5B }, - { "Canada/Yukon" , 0x06A13B }, - { "CET" , 0x06A795 }, - { "Chile/Continental" , 0x06AFCF }, - { "Chile/EasterIsland" , 0x06B9BC }, - { "CST6CDT" , 0x06C281 }, - { "Cuba" , 0x06CB93 }, - { "EET" , 0x06D50F }, - { "Egypt" , 0x06DC8F }, - { "Eire" , 0x06E43E }, - { "EST" , 0x06F1EE }, - { "EST5EDT" , 0x06F26C }, - { "Etc/GMT" , 0x06FB7E }, - { "Etc/GMT+0" , 0x06FBFC }, - { "Etc/GMT+1" , 0x06FC7A }, - { "Etc/GMT+10" , 0x06FCFA }, - { "Etc/GMT+11" , 0x06FD7B }, - { "Etc/GMT+12" , 0x06FDFC }, - { "Etc/GMT+2" , 0x06FE7D }, - { "Etc/GMT+3" , 0x06FEFD }, - { "Etc/GMT+4" , 0x06FF7D }, - { "Etc/GMT+5" , 0x06FFFD }, - { "Etc/GMT+6" , 0x07007D }, - { "Etc/GMT+7" , 0x0700FD }, - { "Etc/GMT+8" , 0x07017D }, - { "Etc/GMT+9" , 0x0701FD }, - { "Etc/GMT-0" , 0x07027D }, - { "Etc/GMT-1" , 0x0702FB }, - { "Etc/GMT-10" , 0x07037C }, - { "Etc/GMT-11" , 0x0703FE }, - { "Etc/GMT-12" , 0x070480 }, - { "Etc/GMT-13" , 0x070502 }, - { "Etc/GMT-14" , 0x070584 }, - { "Etc/GMT-2" , 0x070606 }, - { "Etc/GMT-3" , 0x070687 }, - { "Etc/GMT-4" , 0x070708 }, - { "Etc/GMT-5" , 0x070789 }, - { "Etc/GMT-6" , 0x07080A }, - { "Etc/GMT-7" , 0x07088B }, - { "Etc/GMT-8" , 0x07090C }, - { "Etc/GMT-9" , 0x07098D }, - { "Etc/GMT0" , 0x070A0E }, - { "Etc/Greenwich" , 0x070A8C }, - { "Etc/UCT" , 0x070B0A }, - { "Etc/Universal" , 0x070B88 }, - { "Etc/UTC" , 0x070C06 }, - { "Etc/Zulu" , 0x070C84 }, - { "Europe/Amsterdam" , 0x070D02 }, - { "Europe/Andorra" , 0x07186C }, - { "Europe/Astrakhan" , 0x071F46 }, - { "Europe/Athens" , 0x0723F1 }, - { "Europe/Belfast" , 0x072CD3 }, - { "Europe/Belgrade" , 0x073B1F }, - { "Europe/Berlin" , 0x0742AB }, - { "Europe/Bratislava" , 0x074BC5 }, - { "Europe/Brussels" , 0x0754CE }, - { "Europe/Bucharest" , 0x07604F }, - { "Europe/Budapest" , 0x0768E3 }, - { "Europe/Busingen" , 0x07722F }, - { "Europe/Chisinau" , 0x0779B8 }, - { "Europe/Copenhagen" , 0x07831A }, - { "Europe/Dublin" , 0x078B7F }, - { "Europe/Gibraltar" , 0x07992F }, - { "Europe/Guernsey" , 0x07A527 }, - { "Europe/Helsinki" , 0x07B373 }, - { "Europe/Isle_of_Man" , 0x07BAEB }, - { "Europe/Istanbul" , 0x07C937 }, - { "Europe/Jersey" , 0x07D0DE }, - { "Europe/Kaliningrad" , 0x07DF2A }, - { "Europe/Kiev" , 0x07E51F }, - { "Europe/Kirov" , 0x07ED87 }, - { "Europe/Lisbon" , 0x07F222 }, - { "Europe/Ljubljana" , 0x07FFEA }, - { "Europe/London" , 0x080776 }, - { "Europe/Luxembourg" , 0x0815C2 }, - { "Europe/Madrid" , 0x082150 }, - { "Europe/Malta" , 0x082BA2 }, - { "Europe/Mariehamn" , 0x0835EA }, - { "Europe/Minsk" , 0x083D62 }, - { "Europe/Monaco" , 0x084297 }, - { "Europe/Moscow" , 0x084E23 }, - { "Europe/Nicosia" , 0x085442 }, - { "Europe/Oslo" , 0x085C20 }, - { "Europe/Paris" , 0x0864E0 }, - { "Europe/Podgorica" , 0x08707E }, - { "Europe/Prague" , 0x08780A }, - { "Europe/Riga" , 0x088113 }, - { "Europe/Rome" , 0x0889B5 }, - { "Europe/Samara" , 0x089412 }, - { "Europe/San_Marino" , 0x0898F6 }, - { "Europe/Sarajevo" , 0x08A353 }, - { "Europe/Saratov" , 0x08AADF }, - { "Europe/Simferopol" , 0x08AF9A }, - { "Europe/Skopje" , 0x08B569 }, - { "Europe/Sofia" , 0x08BCF5 }, - { "Europe/Stockholm" , 0x08C51E }, - { "Europe/Tallinn" , 0x08CC9F }, - { "Europe/Tirane" , 0x08D50F }, - { "Europe/Tiraspol" , 0x08DD3F }, - { "Europe/Ulyanovsk" , 0x08E6A1 }, - { "Europe/Uzhgorod" , 0x08EBB2 }, - { "Europe/Vaduz" , 0x08F3DE }, - { "Europe/Vatican" , 0x08FB5F }, - { "Europe/Vienna" , 0x0905BC }, - { "Europe/Vilnius" , 0x090E60 }, - { "Europe/Volgograd" , 0x0916DE }, - { "Europe/Warsaw" , 0x091B89 }, - { "Europe/Zagreb" , 0x0925F3 }, - { "Europe/Zaporozhye" , 0x092D7F }, - { "Europe/Zurich" , 0x093600 }, - { "Factory" , 0x093D81 }, - { "GB" , 0x093E01 }, - { "GB-Eire" , 0x094C4D }, - { "GMT" , 0x095A99 }, - { "GMT+0" , 0x095B17 }, - { "GMT-0" , 0x095B95 }, - { "GMT0" , 0x095C13 }, - { "Greenwich" , 0x095C91 }, - { "Hongkong" , 0x095D0F }, - { "HST" , 0x0961CE }, - { "Iceland" , 0x09624D }, - { "Indian/Antananarivo" , 0x0966E3 }, - { "Indian/Chagos" , 0x0967F8 }, - { "Indian/Christmas" , 0x0968CB }, - { "Indian/Cocos" , 0x09697C }, - { "Indian/Comoro" , 0x096A36 }, - { "Indian/Kerguelen" , 0x096B4B }, - { "Indian/Mahe" , 0x096BFC }, - { "Indian/Maldives" , 0x096CAD }, - { "Indian/Mauritius" , 0x096D80 }, - { "Indian/Mayotte" , 0x096E7D }, - { "Indian/Reunion" , 0x096F92 }, - { "Iran" , 0x097043 }, - { "Israel" , 0x097A65 }, - { "Jamaica" , 0x0983C5 }, - { "Japan" , 0x0985B3 }, - { "Kwajalein" , 0x0986F4 }, - { "Libya" , 0x09883C }, - { "MET" , 0x098AB9 }, - { "Mexico/BajaNorte" , 0x0992F3 }, - { "Mexico/BajaSur" , 0x099C25 }, - { "Mexico/General" , 0x09A227 }, - { "MST" , 0x09A863 }, - { "MST7MDT" , 0x09A8E1 }, - { "Navajo" , 0x09B1F3 }, - { "NZ" , 0x09BB8B }, - { "NZ-CHAT" , 0x09C51C }, - { "Pacific/Apia" , 0x09CD3C }, - { "Pacific/Auckland" , 0x09CFAC }, - { "Pacific/Bougainville" , 0x09D955 }, - { "Pacific/Chatham" , 0x09DA79 }, - { "Pacific/Chuuk" , 0x09E2A8 }, - { "Pacific/Easter" , 0x09E3D0 }, - { "Pacific/Efate" , 0x09ECA2 }, - { "Pacific/Enderbury" , 0x09EEC8 }, - { "Pacific/Fakaofo" , 0x09EFBE }, - { "Pacific/Fiji" , 0x09F092 }, - { "Pacific/Funafuti" , 0x09F4B7 }, - { "Pacific/Galapagos" , 0x09F569 }, - { "Pacific/Gambier" , 0x09F674 }, - { "Pacific/Guadalcanal" , 0x09F733 }, - { "Pacific/Guam" , 0x09F7E5 }, - { "Pacific/Honolulu" , 0x09F9DF }, - { "Pacific/Johnston" , 0x09FB3A }, - { "Pacific/Kanton" , 0x09FC8F }, - { "Pacific/Kiritimati" , 0x09FD94 }, - { "Pacific/Kosrae" , 0x09FE9A }, - { "Pacific/Kwajalein" , 0x0A000B }, - { "Pacific/Majuro" , 0x0A015C }, - { "Pacific/Marquesas" , 0x0A02BB }, - { "Pacific/Midway" , 0x0A0385 }, - { "Pacific/Nauru" , 0x0A044E }, - { "Pacific/Niue" , 0x0A0556 }, - { "Pacific/Norfolk" , 0x0A062D }, - { "Pacific/Noumea" , 0x0A09A9 }, - { "Pacific/Pago_Pago" , 0x0A0AE5 }, - { "Pacific/Palau" , 0x0A0BA0 }, - { "Pacific/Pitcairn" , 0x0A0C60 }, - { "Pacific/Pohnpei" , 0x0A0D36 }, - { "Pacific/Ponape" , 0x0A0E7F }, - { "Pacific/Port_Moresby" , 0x0A0FBA }, - { "Pacific/Rarotonga" , 0x0A109D }, - { "Pacific/Saipan" , 0x0A1304 }, - { "Pacific/Samoa" , 0x0A14FE }, - { "Pacific/Tahiti" , 0x0A15B9 }, - { "Pacific/Tarawa" , 0x0A1679 }, - { "Pacific/Tongatapu" , 0x0A173A }, - { "Pacific/Truk" , 0x0A18BA }, - { "Pacific/Wake" , 0x0A19D3 }, - { "Pacific/Wallis" , 0x0A1A90 }, - { "Pacific/Yap" , 0x0A1B42 }, - { "Poland" , 0x0A1C5B }, - { "Portugal" , 0x0A26C5 }, - { "PRC" , 0x0A347A }, - { "PST8PDT" , 0x0A36B7 }, - { "ROC" , 0x0A3FC9 }, - { "ROK" , 0x0A42CE }, - { "Singapore" , 0x0A4543 }, - { "Turkey" , 0x0A46CE }, - { "UCT" , 0x0A4E75 }, - { "Universal" , 0x0A4EF3 }, - { "US/Alaska" , 0x0A4F71 }, - { "US/Aleutian" , 0x0A58C0 }, - { "US/Arizona" , 0x0A6200 }, - { "US/Central" , 0x0A6354 }, - { "US/East-Indiana" , 0x0A7158 }, - { "US/Eastern" , 0x0A77E6 }, - { "US/Hawaii" , 0x0A85C2 }, - { "US/Indiana-Starke" , 0x0A8717 }, - { "US/Michigan" , 0x0A909F }, - { "US/Mountain" , 0x0A9961 }, - { "US/Pacific" , 0x0AA2F9 }, - { "US/Samoa" , 0x0AAE19 }, - { "UTC" , 0x0AAED4 }, - { "W-SU" , 0x0AAF52 }, - { "WET" , 0x0AB55D }, - { "Zulu" , 0x0ABCDA }, +const timelib_tzdb_index_entry timezonedb_idx_builtin[596] = { + { (char*) "Africa/Abidjan" , 0x000000 }, + { (char*) "Africa/Accra" , 0x0000A0 }, + { (char*) "Africa/Addis_Ababa" , 0x0004D0 }, + { (char*) "Africa/Algiers" , 0x000595 }, + { (char*) "Africa/Asmara" , 0x000880 }, + { (char*) "Africa/Asmera" , 0x000958 }, + { (char*) "Africa/Bamako" , 0x000A30 }, + { (char*) "Africa/Bangui" , 0x000B0C }, + { (char*) "Africa/Banjul" , 0x000BAD }, + { (char*) "Africa/Bissau" , 0x000C91 }, + { (char*) "Africa/Blantyre" , 0x000D5F }, + { (char*) "Africa/Brazzaville" , 0x000E3C }, + { (char*) "Africa/Bujumbura" , 0x000EDD }, + { (char*) "Africa/Cairo" , 0x000F7E }, + { (char*) "Africa/Casablanca" , 0x00172D }, + { (char*) "Africa/Ceuta" , 0x0020B6 }, + { (char*) "Africa/Conakry" , 0x0028C4 }, + { (char*) "Africa/Dakar" , 0x0029A0 }, + { (char*) "Africa/Dar_es_Salaam" , 0x002A62 }, + { (char*) "Africa/Djibouti" , 0x002B43 }, + { (char*) "Africa/Douala" , 0x002BE4 }, + { (char*) "Africa/El_Aaiun" , 0x002C85 }, + { (char*) "Africa/Freetown" , 0x003588 }, + { (char*) "Africa/Gaborone" , 0x00378F }, + { (char*) "Africa/Harare" , 0x003886 }, + { (char*) "Africa/Johannesburg" , 0x003927 }, + { (char*) "Africa/Juba" , 0x003A29 }, + { (char*) "Africa/Kampala" , 0x003CDC }, + { (char*) "Africa/Khartoum" , 0x003DE3 }, + { (char*) "Africa/Kigali" , 0x004096 }, + { (char*) "Africa/Kinshasa" , 0x004137 }, + { (char*) "Africa/Lagos" , 0x0041F1 }, + { (char*) "Africa/Libreville" , 0x0042E8 }, + { (char*) "Africa/Lome" , 0x004389 }, + { (char*) "Africa/Luanda" , 0x004429 }, + { (char*) "Africa/Lubumbashi" , 0x0044F0 }, + { (char*) "Africa/Lusaka" , 0x0045CC }, + { (char*) "Africa/Malabo" , 0x00466D }, + { (char*) "Africa/Maputo" , 0x004730 }, + { (char*) "Africa/Maseru" , 0x0047D1 }, + { (char*) "Africa/Mbabane" , 0x00489D }, + { (char*) "Africa/Mogadishu" , 0x004941 }, + { (char*) "Africa/Monrovia" , 0x004A22 }, + { (char*) "Africa/Nairobi" , 0x004AFE }, + { (char*) "Africa/Ndjamena" , 0x004C13 }, + { (char*) "Africa/Niamey" , 0x004CE6 }, + { (char*) "Africa/Nouakchott" , 0x004DCB }, + { (char*) "Africa/Ouagadougou" , 0x004EA7 }, + { (char*) "Africa/Porto-Novo" , 0x004F47 }, + { (char*) "Africa/Sao_Tome" , 0x00500A }, + { (char*) "Africa/Timbuktu" , 0x005114 }, + { (char*) "Africa/Tripoli" , 0x0051F0 }, + { (char*) "Africa/Tunis" , 0x00546D }, + { (char*) "Africa/Windhoek" , 0x00572A }, + { (char*) "America/Adak" , 0x005AF1 }, + { (char*) "America/Anchorage" , 0x006441 }, + { (char*) "America/Anguilla" , 0x006DA3 }, + { (char*) "America/Antigua" , 0x006E43 }, + { (char*) "America/Araguaina" , 0x006F05 }, + { (char*) "America/Argentina/Buenos_Aires" , 0x00728E }, + { (char*) "America/Argentina/Catamarca" , 0x0076E3 }, + { (char*) "America/Argentina/ComodRivadavia" , 0x007B3E }, + { (char*) "America/Argentina/Cordoba" , 0x007F7E }, + { (char*) "America/Argentina/Jujuy" , 0x0083F4 }, + { (char*) "America/Argentina/La_Rioja" , 0x008822 }, + { (char*) "America/Argentina/Mendoza" , 0x008C7D }, + { (char*) "America/Argentina/Rio_Gallegos" , 0x0090C9 }, + { (char*) "America/Argentina/Salta" , 0x009518 }, + { (char*) "America/Argentina/San_Juan" , 0x009952 }, + { (char*) "America/Argentina/San_Luis" , 0x009DAD }, + { (char*) "America/Argentina/Tucuman" , 0x00A214 }, + { (char*) "America/Argentina/Ushuaia" , 0x00A67C }, + { (char*) "America/Aruba" , 0x00AAD1 }, + { (char*) "America/Asuncion" , 0x00AB97 }, + { (char*) "America/Atikokan" , 0x00B39F }, + { (char*) "America/Atka" , 0x00B51C }, + { (char*) "America/Bahia" , 0x00BE5C }, + { (char*) "America/Bahia_Banderas" , 0x00C26D }, + { (char*) "America/Barbados" , 0x00C8A3 }, + { (char*) "America/Belem" , 0x00CA63 }, + { (char*) "America/Belize" , 0x00CCC1 }, + { (char*) "America/Blanc-Sablon" , 0x00D31B }, + { (char*) "America/Boa_Vista" , 0x00D46D }, + { (char*) "America/Bogota" , 0x00D6F8 }, + { (char*) "America/Boise" , 0x00D7FA }, + { (char*) "America/Buenos_Aires" , 0x00E180 }, + { (char*) "America/Cambridge_Bay" , 0x00E5C0 }, + { (char*) "America/Campo_Grande" , 0x00EE04 }, + { (char*) "America/Cancun" , 0x00F3C6 }, + { (char*) "America/Caracas" , 0x00F704 }, + { (char*) "America/Catamarca" , 0x00F818 }, + { (char*) "America/Cayenne" , 0x00FC58 }, + { (char*) "America/Cayman" , 0x00FD2A }, + { (char*) "America/Chicago" , 0x00FDEC }, + { (char*) "America/Chihuahua" , 0x010C04 }, + { (char*) "America/Coral_Harbour" , 0x011202 }, + { (char*) "America/Cordoba" , 0x01135E }, + { (char*) "America/Costa_Rica" , 0x01179E }, + { (char*) "America/Creston" , 0x0118E6 }, + { (char*) "America/Cuiaba" , 0x0119D4 }, + { (char*) "America/Curacao" , 0x011F73 }, + { (char*) "America/Danmarkshavn" , 0x012039 }, + { (char*) "America/Dawson" , 0x012319 }, + { (char*) "America/Dawson_Creek" , 0x012985 }, + { (char*) "America/Denver" , 0x012DCB }, + { (char*) "America/Detroit" , 0x013778 }, + { (char*) "America/Dominica" , 0x014053 }, + { (char*) "America/Edmonton" , 0x0140F3 }, + { (char*) "America/Eirunepe" , 0x014A38 }, + { (char*) "America/El_Salvador" , 0x014CE3 }, + { (char*) "America/Ensenada" , 0x014DCF }, + { (char*) "America/Fort_Nelson" , 0x015701 }, + { (char*) "America/Fort_Wayne" , 0x015FE1 }, + { (char*) "America/Fortaleza" , 0x01666F }, + { (char*) "America/Glace_Bay" , 0x01696D }, + { (char*) "America/Godthab" , 0x017224 }, + { (char*) "America/Goose_Bay" , 0x017986 }, + { (char*) "America/Grand_Turk" , 0x01863C }, + { (char*) "America/Grenada" , 0x018D72 }, + { (char*) "America/Guadeloupe" , 0x018E12 }, + { (char*) "America/Guatemala" , 0x018EB2 }, + { (char*) "America/Guayaquil" , 0x018FD6 }, + { (char*) "America/Guyana" , 0x0190EA }, + { (char*) "America/Halifax" , 0x0191FC }, + { (char*) "America/Havana" , 0x019F86 }, + { (char*) "America/Hermosillo" , 0x01A902 }, + { (char*) "America/Indiana/Indianapolis" , 0x01AACD }, + { (char*) "America/Indiana/Knox" , 0x01B174 }, + { (char*) "America/Indiana/Marengo" , 0x01BB11 }, + { (char*) "America/Indiana/Petersburg" , 0x01C1EE }, + { (char*) "America/Indiana/Tell_City" , 0x01C97D }, + { (char*) "America/Indiana/Vevay" , 0x01D031 }, + { (char*) "America/Indiana/Vincennes" , 0x01D5DD }, + { (char*) "America/Indiana/Winamac" , 0x01DCA3 }, + { (char*) "America/Indianapolis" , 0x01E3B7 }, + { (char*) "America/Inuvik" , 0x01EA45 }, + { (char*) "America/Iqaluit" , 0x01F1CB }, + { (char*) "America/Jamaica" , 0x01F9E5 }, + { (char*) "America/Jujuy" , 0x01FBD3 }, + { (char*) "America/Juneau" , 0x01FFF7 }, + { (char*) "America/Kentucky/Louisville" , 0x020948 }, + { (char*) "America/Kentucky/Monticello" , 0x021446 }, + { (char*) "America/Knox_IN" , 0x021D96 }, + { (char*) "America/Kralendijk" , 0x02271E }, + { (char*) "America/La_Paz" , 0x0227E4 }, + { (char*) "America/Lima" , 0x0228D8 }, + { (char*) "America/Los_Angeles" , 0x022A7A }, + { (char*) "America/Louisville" , 0x0235A1 }, + { (char*) "America/Lower_Princes" , 0x024081 }, + { (char*) "America/Maceio" , 0x024147 }, + { (char*) "America/Managua" , 0x02444B }, + { (char*) "America/Manaus" , 0x024605 }, + { (char*) "America/Marigot" , 0x02487C }, + { (char*) "America/Martinique" , 0x02491C }, + { (char*) "America/Matamoros" , 0x024A10 }, + { (char*) "America/Mazatlan" , 0x024FC8 }, + { (char*) "America/Mendoza" , 0x0255FF }, + { (char*) "America/Menominee" , 0x025A3F }, + { (char*) "America/Merida" , 0x02634C }, + { (char*) "America/Metlakatla" , 0x026906 }, + { (char*) "America/Mexico_City" , 0x026EB8 }, + { (char*) "America/Miquelon" , 0x027500 }, + { (char*) "America/Moncton" , 0x027B8E }, + { (char*) "America/Monterrey" , 0x028804 }, + { (char*) "America/Montevideo" , 0x028DC3 }, + { (char*) "America/Montreal" , 0x0293B5 }, + { (char*) "America/Montserrat" , 0x02A167 }, + { (char*) "America/Nassau" , 0x02A207 }, + { (char*) "America/New_York" , 0x02AB67 }, + { (char*) "America/Nipigon" , 0x02B967 }, + { (char*) "America/Nome" , 0x02C1DE }, + { (char*) "America/Noronha" , 0x02CB36 }, + { (char*) "America/North_Dakota/Beulah" , 0x02CE1E }, + { (char*) "America/North_Dakota/Center" , 0x02D78B }, + { (char*) "America/North_Dakota/New_Salem" , 0x02E0F8 }, + { (char*) "America/Nuuk" , 0x02EA6B }, + { (char*) "America/Ojinaga" , 0x02F1E3 }, + { (char*) "America/Panama" , 0x02F7E3 }, + { (char*) "America/Pangnirtung" , 0x02F8A5 }, + { (char*) "America/Paramaribo" , 0x0300F9 }, + { (char*) "America/Phoenix" , 0x03020B }, + { (char*) "America/Port-au-Prince" , 0x03037C }, + { (char*) "America/Port_of_Spain" , 0x030922 }, + { (char*) "America/Porto_Acre" , 0x0309C2 }, + { (char*) "America/Porto_Velho" , 0x030C42 }, + { (char*) "America/Puerto_Rico" , 0x030E96 }, + { (char*) "America/Punta_Arenas" , 0x030F98 }, + { (char*) "America/Rainy_River" , 0x031734 }, + { (char*) "America/Rankin_Inlet" , 0x031FAC }, + { (char*) "America/Recife" , 0x032732 }, + { (char*) "America/Regina" , 0x032A14 }, + { (char*) "America/Resolute" , 0x032E09 }, + { (char*) "America/Rio_Branco" , 0x033590 }, + { (char*) "America/Rosario" , 0x033814 }, + { (char*) "America/Santa_Isabel" , 0x033C54 }, + { (char*) "America/Santarem" , 0x034586 }, + { (char*) "America/Santiago" , 0x0347F7 }, + { (char*) "America/Santo_Domingo" , 0x0351F6 }, + { (char*) "America/Sao_Paulo" , 0x0353CC }, + { (char*) "America/Scoresbysund" , 0x0359B2 }, + { (char*) "America/Shiprock" , 0x036157 }, + { (char*) "America/Sitka" , 0x036AEF }, + { (char*) "America/St_Barthelemy" , 0x037427 }, + { (char*) "America/St_Johns" , 0x0374C7 }, + { (char*) "America/St_Kitts" , 0x03833C }, + { (char*) "America/St_Lucia" , 0x0383DC }, + { (char*) "America/St_Thomas" , 0x03849E }, + { (char*) "America/St_Vincent" , 0x03853E }, + { (char*) "America/Swift_Current" , 0x038600 }, + { (char*) "America/Tegucigalpa" , 0x03884E }, + { (char*) "America/Thule" , 0x038956 }, + { (char*) "America/Thunder_Bay" , 0x038F4E }, + { (char*) "America/Tijuana" , 0x03980E }, + { (char*) "America/Toronto" , 0x03A161 }, + { (char*) "America/Tortola" , 0x03AF30 }, + { (char*) "America/Vancouver" , 0x03AFD0 }, + { (char*) "America/Virgin" , 0x03BB41 }, + { (char*) "America/Whitehorse" , 0x03BBE1 }, + { (char*) "America/Winnipeg" , 0x03C24D }, + { (char*) "America/Yakutat" , 0x03CDAA }, + { (char*) "America/Yellowknife" , 0x03D6C7 }, + { (char*) "Antarctica/Casey" , 0x03DE98 }, + { (char*) "Antarctica/Davis" , 0x03E029 }, + { (char*) "Antarctica/DumontDUrville" , 0x03E163 }, + { (char*) "Antarctica/Macquarie" , 0x03E241 }, + { (char*) "Antarctica/Mawson" , 0x03EB31 }, + { (char*) "Antarctica/McMurdo" , 0x03EC0A }, + { (char*) "Antarctica/Palmer" , 0x03F405 }, + { (char*) "Antarctica/Rothera" , 0x03F9A1 }, + { (char*) "Antarctica/South_Pole" , 0x03FA58 }, + { (char*) "Antarctica/Syowa" , 0x04022D }, + { (char*) "Antarctica/Troll" , 0x0402E3 }, + { (char*) "Antarctica/Vostok" , 0x04077E }, + { (char*) "Arctic/Longyearbyen" , 0x040835 }, + { (char*) "Asia/Aden" , 0x0410F5 }, + { (char*) "Asia/Almaty" , 0x0411A6 }, + { (char*) "Asia/Amman" , 0x0415AE }, + { (char*) "Asia/Anadyr" , 0x041CF7 }, + { (char*) "Asia/Aqtau" , 0x0421BA }, + { (char*) "Asia/Aqtobe" , 0x0425B2 }, + { (char*) "Asia/Ashgabat" , 0x0429BE }, + { (char*) "Asia/Ashkhabad" , 0x042C35 }, + { (char*) "Asia/Atyrau" , 0x042EAC }, + { (char*) "Asia/Baghdad" , 0x0432AC }, + { (char*) "Asia/Bahrain" , 0x04368F }, + { (char*) "Asia/Baku" , 0x043788 }, + { (char*) "Asia/Bangkok" , 0x043C5F }, + { (char*) "Asia/Barnaul" , 0x043D32 }, + { (char*) "Asia/Beirut" , 0x044211 }, + { (char*) "Asia/Bishkek" , 0x044A87 }, + { (char*) "Asia/Brunei" , 0x044E6A }, + { (char*) "Asia/Calcutta" , 0x044F41 }, + { (char*) "Asia/Chita" , 0x04506A }, + { (char*) "Asia/Choibalsan" , 0x04554F }, + { (char*) "Asia/Chongqing" , 0x045922 }, + { (char*) "Asia/Chungking" , 0x045B5F }, + { (char*) "Asia/Colombo" , 0x045D9C }, + { (char*) "Asia/Dacca" , 0x045F1C }, + { (char*) "Asia/Damascus" , 0x046079 }, + { (char*) "Asia/Dhaka" , 0x04697B }, + { (char*) "Asia/Dili" , 0x046AD8 }, + { (char*) "Asia/Dubai" , 0x046BC7 }, + { (char*) "Asia/Dushanbe" , 0x046C78 }, + { (char*) "Asia/Famagusta" , 0x046ED3 }, + { (char*) "Asia/Gaza" , 0x0476DA }, + { (char*) "Asia/Harbin" , 0x048066 }, + { (char*) "Asia/Hebron" , 0x0482A3 }, + { (char*) "Asia/Ho_Chi_Minh" , 0x048C4A }, + { (char*) "Asia/Hong_Kong" , 0x048DB5 }, + { (char*) "Asia/Hovd" , 0x049292 }, + { (char*) "Asia/Irkutsk" , 0x049644 }, + { (char*) "Asia/Istanbul" , 0x049B45 }, + { (char*) "Asia/Jakarta" , 0x04A2EC }, + { (char*) "Asia/Jayapura" , 0x04A484 }, + { (char*) "Asia/Jerusalem" , 0x04A5A3 }, + { (char*) "Asia/Kabul" , 0x04AF03 }, + { (char*) "Asia/Kamchatka" , 0x04AFDF }, + { (char*) "Asia/Karachi" , 0x04B48B }, + { (char*) "Asia/Kashgar" , 0x04B612 }, + { (char*) "Asia/Kathmandu" , 0x04B6C3 }, + { (char*) "Asia/Katmandu" , 0x04B7A3 }, + { (char*) "Asia/Khandyga" , 0x04B883 }, + { (char*) "Asia/Kolkata" , 0x04BDA4 }, + { (char*) "Asia/Krasnoyarsk" , 0x04BECD }, + { (char*) "Asia/Kuala_Lumpur" , 0x04C3A9 }, + { (char*) "Asia/Kuching" , 0x04C548 }, + { (char*) "Asia/Kuwait" , 0x04C745 }, + { (char*) "Asia/Macao" , 0x04C7F6 }, + { (char*) "Asia/Macau" , 0x04CCCD }, + { (char*) "Asia/Magadan" , 0x04D1A4 }, + { (char*) "Asia/Makassar" , 0x04D686 }, + { (char*) "Asia/Manila" , 0x04D7D9 }, + { (char*) "Asia/Muscat" , 0x04D92D }, + { (char*) "Asia/Nicosia" , 0x04D9DE }, + { (char*) "Asia/Novokuznetsk" , 0x04E1CF }, + { (char*) "Asia/Novosibirsk" , 0x04E679 }, + { (char*) "Asia/Omsk" , 0x04EB5E }, + { (char*) "Asia/Oral" , 0x04F02E }, + { (char*) "Asia/Phnom_Penh" , 0x04F436 }, + { (char*) "Asia/Pontianak" , 0x04F569 }, + { (char*) "Asia/Pyongyang" , 0x04F6EC }, + { (char*) "Asia/Qatar" , 0x04F7E5 }, + { (char*) "Asia/Qostanay" , 0x04F8B8 }, + { (char*) "Asia/Qyzylorda" , 0x04FCD1 }, + { (char*) "Asia/Rangoon" , 0x0500FB }, + { (char*) "Asia/Riyadh" , 0x050213 }, + { (char*) "Asia/Saigon" , 0x0502C4 }, + { (char*) "Asia/Sakhalin" , 0x05042F }, + { (char*) "Asia/Samarkand" , 0x050905 }, + { (char*) "Asia/Seoul" , 0x050B63 }, + { (char*) "Asia/Shanghai" , 0x050DD8 }, + { (char*) "Asia/Singapore" , 0x051021 }, + { (char*) "Asia/Srednekolymsk" , 0x0511AC }, + { (char*) "Asia/Taipei" , 0x051692 }, + { (char*) "Asia/Tashkent" , 0x051997 }, + { (char*) "Asia/Tbilisi" , 0x051C03 }, + { (char*) "Asia/Tehran" , 0x05201A }, + { (char*) "Asia/Tel_Aviv" , 0x052514 }, + { (char*) "Asia/Thimbu" , 0x052E74 }, + { (char*) "Asia/Thimphu" , 0x052F4B }, + { (char*) "Asia/Tokyo" , 0x053022 }, + { (char*) "Asia/Tomsk" , 0x053163 }, + { (char*) "Asia/Ujung_Pandang" , 0x053642 }, + { (char*) "Asia/Ulaanbaatar" , 0x05374C }, + { (char*) "Asia/Ulan_Bator" , 0x053AE8 }, + { (char*) "Asia/Urumqi" , 0x053E6F }, + { (char*) "Asia/Ust-Nera" , 0x053F2D }, + { (char*) "Asia/Vientiane" , 0x054431 }, + { (char*) "Asia/Vladivostok" , 0x054580 }, + { (char*) "Asia/Yakutsk" , 0x054A57 }, + { (char*) "Asia/Yangon" , 0x054F2D }, + { (char*) "Asia/Yekaterinburg" , 0x055045 }, + { (char*) "Asia/Yerevan" , 0x05553A }, + { (char*) "Atlantic/Azores" , 0x0559C5 }, + { (char*) "Atlantic/Bermuda" , 0x05678F }, + { (char*) "Atlantic/Canary" , 0x0570F7 }, + { (char*) "Atlantic/Cape_Verde" , 0x05787A }, + { (char*) "Atlantic/Faeroe" , 0x057994 }, + { (char*) "Atlantic/Faroe" , 0x0580B7 }, + { (char*) "Atlantic/Jan_Mayen" , 0x0587DA }, + { (char*) "Atlantic/Madeira" , 0x05909A }, + { (char*) "Atlantic/Reykjavik" , 0x059E64 }, + { (char*) "Atlantic/South_Georgia" , 0x05A2FA }, + { (char*) "Atlantic/St_Helena" , 0x05A3AA }, + { (char*) "Atlantic/Stanley" , 0x05A46C }, + { (char*) "Australia/ACT" , 0x05A936 }, + { (char*) "Australia/Adelaide" , 0x05B1D0 }, + { (char*) "Australia/Brisbane" , 0x05BA8B }, + { (char*) "Australia/Broken_Hill" , 0x05BC51 }, + { (char*) "Australia/Canberra" , 0x05C52E }, + { (char*) "Australia/Currie" , 0x05CDC8 }, + { (char*) "Australia/Darwin" , 0x05D70A }, + { (char*) "Australia/Eucla" , 0x05D86D }, + { (char*) "Australia/Hobart" , 0x05DA68 }, + { (char*) "Australia/LHI" , 0x05E3B2 }, + { (char*) "Australia/Lindeman" , 0x05EB02 }, + { (char*) "Australia/Lord_Howe" , 0x05ED08 }, + { (char*) "Australia/Melbourne" , 0x05F468 }, + { (char*) "Australia/North" , 0x05FD0A }, + { (char*) "Australia/NSW" , 0x05FE5B }, + { (char*) "Australia/Perth" , 0x0606F5 }, + { (char*) "Australia/Queensland" , 0x0608DD }, + { (char*) "Australia/South" , 0x060A8C }, + { (char*) "Australia/Sydney" , 0x061338 }, + { (char*) "Australia/Tasmania" , 0x061BEE }, + { (char*) "Australia/Victoria" , 0x062530 }, + { (char*) "Australia/West" , 0x062DCA }, + { (char*) "Australia/Yancowinna" , 0x062F94 }, + { (char*) "Brazil/Acre" , 0x063855 }, + { (char*) "Brazil/DeNoronha" , 0x063AD5 }, + { (char*) "Brazil/East" , 0x063DAD }, + { (char*) "Brazil/West" , 0x06435D }, + { (char*) "Canada/Atlantic" , 0x0645C5 }, + { (char*) "Canada/Central" , 0x065331 }, + { (char*) "Canada/Eastern" , 0x065E71 }, + { (char*) "Canada/Mountain" , 0x066C23 }, + { (char*) "Canada/Newfoundland" , 0x06754B }, + { (char*) "Canada/Pacific" , 0x06839E }, + { (char*) "Canada/Saskatchewan" , 0x068EF6 }, + { (char*) "Canada/Yukon" , 0x0692D6 }, + { (char*) "CET" , 0x069930 }, + { (char*) "Chile/Continental" , 0x06A16A }, + { (char*) "Chile/EasterIsland" , 0x06AB57 }, + { (char*) "CST6CDT" , 0x06B41C }, + { (char*) "Cuba" , 0x06BD2E }, + { (char*) "EET" , 0x06C6AA }, + { (char*) "Egypt" , 0x06CE2A }, + { (char*) "Eire" , 0x06D5D9 }, + { (char*) "EST" , 0x06E389 }, + { (char*) "EST5EDT" , 0x06E407 }, + { (char*) "Etc/GMT" , 0x06ED19 }, + { (char*) "Etc/GMT+0" , 0x06ED97 }, + { (char*) "Etc/GMT+1" , 0x06EE15 }, + { (char*) "Etc/GMT+10" , 0x06EE95 }, + { (char*) "Etc/GMT+11" , 0x06EF16 }, + { (char*) "Etc/GMT+12" , 0x06EF97 }, + { (char*) "Etc/GMT+2" , 0x06F018 }, + { (char*) "Etc/GMT+3" , 0x06F098 }, + { (char*) "Etc/GMT+4" , 0x06F118 }, + { (char*) "Etc/GMT+5" , 0x06F198 }, + { (char*) "Etc/GMT+6" , 0x06F218 }, + { (char*) "Etc/GMT+7" , 0x06F298 }, + { (char*) "Etc/GMT+8" , 0x06F318 }, + { (char*) "Etc/GMT+9" , 0x06F398 }, + { (char*) "Etc/GMT-0" , 0x06F418 }, + { (char*) "Etc/GMT-1" , 0x06F496 }, + { (char*) "Etc/GMT-10" , 0x06F517 }, + { (char*) "Etc/GMT-11" , 0x06F599 }, + { (char*) "Etc/GMT-12" , 0x06F61B }, + { (char*) "Etc/GMT-13" , 0x06F69D }, + { (char*) "Etc/GMT-14" , 0x06F71F }, + { (char*) "Etc/GMT-2" , 0x06F7A1 }, + { (char*) "Etc/GMT-3" , 0x06F822 }, + { (char*) "Etc/GMT-4" , 0x06F8A3 }, + { (char*) "Etc/GMT-5" , 0x06F924 }, + { (char*) "Etc/GMT-6" , 0x06F9A5 }, + { (char*) "Etc/GMT-7" , 0x06FA26 }, + { (char*) "Etc/GMT-8" , 0x06FAA7 }, + { (char*) "Etc/GMT-9" , 0x06FB28 }, + { (char*) "Etc/GMT0" , 0x06FBA9 }, + { (char*) "Etc/Greenwich" , 0x06FC27 }, + { (char*) "Etc/UCT" , 0x06FCA5 }, + { (char*) "Etc/Universal" , 0x06FD23 }, + { (char*) "Etc/UTC" , 0x06FDA1 }, + { (char*) "Etc/Zulu" , 0x06FE1F }, + { (char*) "Europe/Amsterdam" , 0x06FE9D }, + { (char*) "Europe/Andorra" , 0x070A07 }, + { (char*) "Europe/Astrakhan" , 0x0710E1 }, + { (char*) "Europe/Athens" , 0x07158C }, + { (char*) "Europe/Belfast" , 0x071E6E }, + { (char*) "Europe/Belgrade" , 0x072CCA }, + { (char*) "Europe/Berlin" , 0x073456 }, + { (char*) "Europe/Bratislava" , 0x073D70 }, + { (char*) "Europe/Brussels" , 0x074679 }, + { (char*) "Europe/Bucharest" , 0x0751FA }, + { (char*) "Europe/Budapest" , 0x075A8E }, + { (char*) "Europe/Busingen" , 0x0763DA }, + { (char*) "Europe/Chisinau" , 0x076B63 }, + { (char*) "Europe/Copenhagen" , 0x0774C5 }, + { (char*) "Europe/Dublin" , 0x077D2A }, + { (char*) "Europe/Gibraltar" , 0x078ADA }, + { (char*) "Europe/Guernsey" , 0x0796E2 }, + { (char*) "Europe/Helsinki" , 0x07A582 }, + { (char*) "Europe/Isle_of_Man" , 0x07ACFA }, + { (char*) "Europe/Istanbul" , 0x07BB46 }, + { (char*) "Europe/Jersey" , 0x07C2ED }, + { (char*) "Europe/Kaliningrad" , 0x07D18D }, + { (char*) "Europe/Kiev" , 0x07D782 }, + { (char*) "Europe/Kirov" , 0x07DFD6 }, + { (char*) "Europe/Kyiv" , 0x07E471 }, + { (char*) "Europe/Lisbon" , 0x07ECD9 }, + { (char*) "Europe/Ljubljana" , 0x07FAA1 }, + { (char*) "Europe/London" , 0x08022D }, + { (char*) "Europe/Luxembourg" , 0x081089 }, + { (char*) "Europe/Madrid" , 0x081C17 }, + { (char*) "Europe/Malta" , 0x082669 }, + { (char*) "Europe/Mariehamn" , 0x0830B1 }, + { (char*) "Europe/Minsk" , 0x083829 }, + { (char*) "Europe/Monaco" , 0x083D5E }, + { (char*) "Europe/Moscow" , 0x0848EA }, + { (char*) "Europe/Nicosia" , 0x084F09 }, + { (char*) "Europe/Oslo" , 0x0856E7 }, + { (char*) "Europe/Paris" , 0x085FA7 }, + { (char*) "Europe/Podgorica" , 0x086B45 }, + { (char*) "Europe/Prague" , 0x0872D1 }, + { (char*) "Europe/Riga" , 0x087BDA }, + { (char*) "Europe/Rome" , 0x08847C }, + { (char*) "Europe/Samara" , 0x088ED9 }, + { (char*) "Europe/San_Marino" , 0x0893BD }, + { (char*) "Europe/Sarajevo" , 0x089E1A }, + { (char*) "Europe/Saratov" , 0x08A5A6 }, + { (char*) "Europe/Simferopol" , 0x08AA61 }, + { (char*) "Europe/Skopje" , 0x08B030 }, + { (char*) "Europe/Sofia" , 0x08B7BC }, + { (char*) "Europe/Stockholm" , 0x08BFE5 }, + { (char*) "Europe/Tallinn" , 0x08C766 }, + { (char*) "Europe/Tirane" , 0x08CFD6 }, + { (char*) "Europe/Tiraspol" , 0x08D806 }, + { (char*) "Europe/Ulyanovsk" , 0x08E168 }, + { (char*) "Europe/Uzhgorod" , 0x08E679 }, + { (char*) "Europe/Vaduz" , 0x08EEA5 }, + { (char*) "Europe/Vatican" , 0x08F611 }, + { (char*) "Europe/Vienna" , 0x09006E }, + { (char*) "Europe/Vilnius" , 0x090912 }, + { (char*) "Europe/Volgograd" , 0x091190 }, + { (char*) "Europe/Warsaw" , 0x09163B }, + { (char*) "Europe/Zagreb" , 0x0920A5 }, + { (char*) "Europe/Zaporozhye" , 0x092831 }, + { (char*) "Europe/Zurich" , 0x0930B2 }, + { (char*) "Factory" , 0x093833 }, + { (char*) "GB" , 0x0938B3 }, + { (char*) "GB-Eire" , 0x09470F }, + { (char*) "GMT" , 0x09556B }, + { (char*) "GMT+0" , 0x0955E9 }, + { (char*) "GMT-0" , 0x095667 }, + { (char*) "GMT0" , 0x0956E5 }, + { (char*) "Greenwich" , 0x095763 }, + { (char*) "Hongkong" , 0x0957E1 }, + { (char*) "HST" , 0x095CBE }, + { (char*) "Iceland" , 0x095D3D }, + { (char*) "Indian/Antananarivo" , 0x0961D3 }, + { (char*) "Indian/Chagos" , 0x0962BA }, + { (char*) "Indian/Christmas" , 0x09638D }, + { (char*) "Indian/Cocos" , 0x09643E }, + { (char*) "Indian/Comoro" , 0x0964F8 }, + { (char*) "Indian/Kerguelen" , 0x096599 }, + { (char*) "Indian/Mahe" , 0x09664A }, + { (char*) "Indian/Maldives" , 0x0966FB }, + { (char*) "Indian/Mauritius" , 0x0967CE }, + { (char*) "Indian/Mayotte" , 0x0968CB }, + { (char*) "Indian/Reunion" , 0x09696C }, + { (char*) "Iran" , 0x096A1D }, + { (char*) "Israel" , 0x096F17 }, + { (char*) "Jamaica" , 0x097877 }, + { (char*) "Japan" , 0x097A65 }, + { (char*) "Kwajalein" , 0x097BA6 }, + { (char*) "Libya" , 0x097CEE }, + { (char*) "MET" , 0x097F6B }, + { (char*) "Mexico/BajaNorte" , 0x0987A5 }, + { (char*) "Mexico/BajaSur" , 0x0990D7 }, + { (char*) "Mexico/General" , 0x0996D9 }, + { (char*) "MST" , 0x099D15 }, + { (char*) "MST7MDT" , 0x099D93 }, + { (char*) "Navajo" , 0x09A6A5 }, + { (char*) "NZ" , 0x09B03D }, + { (char*) "NZ-CHAT" , 0x09B9CE }, + { (char*) "Pacific/Apia" , 0x09C1EE }, + { (char*) "Pacific/Auckland" , 0x09C45E }, + { (char*) "Pacific/Bougainville" , 0x09CE07 }, + { (char*) "Pacific/Chatham" , 0x09CF2B }, + { (char*) "Pacific/Chuuk" , 0x09D75A }, + { (char*) "Pacific/Easter" , 0x09D882 }, + { (char*) "Pacific/Efate" , 0x09E154 }, + { (char*) "Pacific/Enderbury" , 0x09E37A }, + { (char*) "Pacific/Fakaofo" , 0x09E470 }, + { (char*) "Pacific/Fiji" , 0x09E544 }, + { (char*) "Pacific/Funafuti" , 0x09E969 }, + { (char*) "Pacific/Galapagos" , 0x09EA1B }, + { (char*) "Pacific/Gambier" , 0x09EB26 }, + { (char*) "Pacific/Guadalcanal" , 0x09EBE5 }, + { (char*) "Pacific/Guam" , 0x09EC97 }, + { (char*) "Pacific/Honolulu" , 0x09EE91 }, + { (char*) "Pacific/Johnston" , 0x09EFEC }, + { (char*) "Pacific/Kanton" , 0x09F141 }, + { (char*) "Pacific/Kiritimati" , 0x09F246 }, + { (char*) "Pacific/Kosrae" , 0x09F34C }, + { (char*) "Pacific/Kwajalein" , 0x09F4BD }, + { (char*) "Pacific/Majuro" , 0x09F60E }, + { (char*) "Pacific/Marquesas" , 0x09F76D }, + { (char*) "Pacific/Midway" , 0x09F837 }, + { (char*) "Pacific/Nauru" , 0x09F926 }, + { (char*) "Pacific/Niue" , 0x09FA2E }, + { (char*) "Pacific/Norfolk" , 0x09FB05 }, + { (char*) "Pacific/Noumea" , 0x09FE81 }, + { (char*) "Pacific/Pago_Pago" , 0x09FFBD }, + { (char*) "Pacific/Palau" , 0x0A0078 }, + { (char*) "Pacific/Pitcairn" , 0x0A0138 }, + { (char*) "Pacific/Pohnpei" , 0x0A020E }, + { (char*) "Pacific/Ponape" , 0x0A0357 }, + { (char*) "Pacific/Port_Moresby" , 0x0A0492 }, + { (char*) "Pacific/Rarotonga" , 0x0A0575 }, + { (char*) "Pacific/Saipan" , 0x0A07DC }, + { (char*) "Pacific/Samoa" , 0x0A08D4 }, + { (char*) "Pacific/Tahiti" , 0x0A098F }, + { (char*) "Pacific/Tarawa" , 0x0A0A4F }, + { (char*) "Pacific/Tongatapu" , 0x0A0B10 }, + { (char*) "Pacific/Truk" , 0x0A0C90 }, + { (char*) "Pacific/Wake" , 0x0A0DA9 }, + { (char*) "Pacific/Wallis" , 0x0A0E66 }, + { (char*) "Pacific/Yap" , 0x0A0F18 }, + { (char*) "Poland" , 0x0A1031 }, + { (char*) "Portugal" , 0x0A1A9B }, + { (char*) "PRC" , 0x0A2850 }, + { (char*) "PST8PDT" , 0x0A2A8D }, + { (char*) "ROC" , 0x0A339F }, + { (char*) "ROK" , 0x0A36A4 }, + { (char*) "Singapore" , 0x0A3919 }, + { (char*) "Turkey" , 0x0A3AA4 }, + { (char*) "UCT" , 0x0A424B }, + { (char*) "Universal" , 0x0A42C9 }, + { (char*) "US/Alaska" , 0x0A4347 }, + { (char*) "US/Aleutian" , 0x0A4C96 }, + { (char*) "US/Arizona" , 0x0A55D6 }, + { (char*) "US/Central" , 0x0A572A }, + { (char*) "US/East-Indiana" , 0x0A652E }, + { (char*) "US/Eastern" , 0x0A6BBC }, + { (char*) "US/Hawaii" , 0x0A79A8 }, + { (char*) "US/Indiana-Starke" , 0x0A7AFD }, + { (char*) "US/Michigan" , 0x0A8485 }, + { (char*) "US/Mountain" , 0x0A8D47 }, + { (char*) "US/Pacific" , 0x0A96DF }, + { (char*) "US/Samoa" , 0x0AA1FF }, + { (char*) "UTC" , 0x0AA2BA }, + { (char*) "W-SU" , 0x0AA338 }, + { (char*) "WET" , 0x0AA943 }, + { (char*) "Zulu" , 0x0AB0C0 }, }; -const unsigned char timelib_timezone_db_data_builtin[703832] = { +const unsigned char timelib_timezone_db_data_builtin[700734] = { /* Africa/Abidjan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -24043,34 +23854,86 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Accra */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, +0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x9A, 0x1D, 0x94, 0x34, +0xA1, 0xC0, 0xB4, 0x80, 0xA1, 0xF2, 0xE4, 0xF0, 0xA3, 0x34, 0x97, 0xA0, 0xA3, 0xD5, 0x69, 0xF0, +0xA5, 0x15, 0xCB, 0x20, 0xA5, 0xB6, 0x9D, 0x70, 0xA6, 0xF6, 0xFE, 0xA0, 0xA7, 0x97, 0xD0, 0xF0, +0xA8, 0xD8, 0x32, 0x20, 0xA9, 0x79, 0x04, 0x70, 0xAA, 0xBA, 0xB7, 0x20, 0xAB, 0x5B, 0x89, 0x70, +0xAC, 0x9B, 0xEA, 0xA0, 0xAD, 0x3C, 0xBC, 0xF0, 0xAE, 0x7D, 0x1E, 0x20, 0xAF, 0x1D, 0xF0, 0x70, +0xB0, 0x5E, 0x51, 0xA0, 0xB0, 0xFF, 0x23, 0xF0, 0xB2, 0x40, 0xD6, 0xA0, 0xB2, 0xE1, 0xA8, 0xF0, +0xB4, 0x22, 0x0A, 0x20, 0xB4, 0xC2, 0xDC, 0x70, 0xB6, 0x03, 0x3D, 0xA0, 0xB6, 0xA4, 0x0F, 0xF0, +0xB7, 0xE4, 0x71, 0x20, 0xB8, 0x85, 0x43, 0x70, 0xB9, 0xC6, 0xF6, 0x20, 0xBA, 0x67, 0xC8, 0x70, +0xBB, 0xA8, 0x29, 0xA0, 0xBC, 0x48, 0xFB, 0xF0, 0xBD, 0x89, 0x5D, 0x20, 0xBE, 0x2A, 0x2F, 0x70, +0xBF, 0x6A, 0x90, 0xA0, 0xC0, 0x0B, 0x62, 0xF0, 0xC1, 0x4D, 0x15, 0xA0, 0xC1, 0xED, 0xE7, 0xF0, +0xC3, 0x2E, 0x49, 0x20, 0xC3, 0xCF, 0x1B, 0x70, 0xC5, 0x0F, 0x7C, 0xA0, 0xC5, 0xB0, 0x4E, 0xF0, +0xC6, 0xF0, 0xB0, 0x20, 0xC7, 0x91, 0x82, 0x70, 0xC8, 0x31, 0x0C, 0xA0, 0xC9, 0x74, 0x07, 0x70, +0xCA, 0x12, 0x40, 0x20, 0xCB, 0x55, 0x3A, 0xF0, 0xCB, 0x87, 0x3C, 0x80, 0xD2, 0xE1, 0xD3, 0x78, +0xDB, 0xA1, 0xDB, 0x20, 0xDC, 0x42, 0xAB, 0x18, 0xDD, 0x83, 0x0E, 0xA0, 0xDE, 0x23, 0xDE, 0x98, +0xDF, 0x65, 0x93, 0xA0, 0xE0, 0x06, 0x63, 0x98, 0xE1, 0x46, 0xC7, 0x20, 0xE1, 0xE7, 0x97, 0x18, +0xE3, 0x27, 0xFA, 0xA0, 0xE3, 0xC8, 0xCA, 0x98, 0xE5, 0x09, 0x2E, 0x20, 0xE5, 0xA9, 0xFE, 0x18, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, +0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0xFF, 0xFF, 0xFF, +0xCC, 0x00, 0x00, 0x00, 0x00, 0x04, 0xB0, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, +0x00, 0x07, 0x08, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x08, 0x01, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, +0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x32, 0x30, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, +0x30, 0x30, 0x33, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, +0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x1D, 0x94, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0xC0, 0xB4, +0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0xE4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x34, 0x97, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0xD5, 0x69, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x15, 0xCB, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0xB6, 0x9D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0xF6, 0xFE, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x97, 0xD0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xD8, 0x32, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA9, 0x79, 0x04, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xBA, 0xB7, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0x5B, 0x89, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0x9B, 0xEA, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0x3C, 0xBC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x7D, 0x1E, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x1D, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x51, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0xFF, 0x23, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x40, 0xD6, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0xE1, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x0A, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC2, 0xDC, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x3D, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xA4, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x71, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x85, 0x43, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC6, 0xF6, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x67, 0xC8, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xA8, 0x29, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x48, 0xFB, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x89, 0x5D, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x2A, 0x2F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x6A, 0x90, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x0B, 0x62, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x4D, 0x15, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xED, 0xE7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x2E, 0x49, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0xCF, 0x1B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x0F, 0x7C, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0xB0, 0x4E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xF0, 0xB0, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x91, 0x82, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x31, 0x0C, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x74, 0x07, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x12, 0x40, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x55, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x87, 0x3C, +0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xE1, 0xD3, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xA1, 0xDB, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x42, 0xAB, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x83, 0x0E, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x23, 0xDE, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x65, 0x93, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x06, 0x63, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x46, 0xC7, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xE7, 0x97, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x27, 0xFA, +0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0xC8, 0xCA, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x09, 0x2E, +0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xA9, 0xFE, 0x18, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0xFF, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x04, 0xB0, +0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x07, 0x08, 0x00, 0x0E, 0x00, 0x00, +0x07, 0x08, 0x01, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, +0x30, 0x32, 0x30, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x91, 0xCC, 0x38, 0x01, 0x12, 0x53, 0xDD, 0x00, 0x00, 0x00, 0x00, /* Africa/Addis_Ababa */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, +0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x02, 0x00, 0x00, 0x24, 0x48, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, +0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x97, 0x1C, 0xE5, 0x01, 0x4D, 0xB5, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, +0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0x43, 0xE8, 0x19, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xAF, 0xF2, +0x98, 0x01, 0x02, 0x00, 0x00, 0x24, 0x48, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, 0x00, 0x04, 0x00, +0x00, 0x2A, 0x30, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, 0x00, 0x45, 0x41, +0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x97, 0x1C, 0xE5, 0x01, 0x4D, 0xB5, 0xB0, 0x00, 0x00, 0x00, 0x00, /* Africa/Algiers */ @@ -24125,86 +23988,80 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Asmara */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, +0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x02, 0x00, 0x00, 0x24, 0x74, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, +0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0xA0, 0xB9, 0xD5, 0x01, 0x4D, 0xFD, -0x4D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, +0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x43, 0xE8, 0x19, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xB7, +0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x02, 0x03, 0x00, 0x00, 0x24, 0x74, +0x00, 0x00, 0x00, 0x00, 0x24, 0x74, 0x00, 0x04, 0x00, 0x00, 0x24, 0x68, 0x00, 0x08, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0xA0, 0xB9, 0xD5, +0x01, 0x4D, 0xFD, 0x4D, 0x00, 0x00, 0x00, 0x00, /* Africa/Asmera */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, +0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x02, 0x00, 0x00, 0x24, 0x74, 0x00, 0x00, 0x00, 0x00, 0x24, 0x68, +0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, +0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x43, 0xE8, 0x19, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xB7, +0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xAF, 0xF2, 0x98, 0x01, 0x02, 0x03, 0x00, 0x00, 0x24, 0x74, +0x00, 0x00, 0x00, 0x00, 0x24, 0x74, 0x00, 0x04, 0x00, 0x00, 0x24, 0x68, 0x00, 0x08, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Africa/Bamako */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x96, 0x00, +0xBC, 0x92, 0xB8, 0x80, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x54, +0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9C, 0xA1, 0xA8, 0x01, 0x06, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, +0xE6, 0x96, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, +0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, +0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, +0x00, 0x9C, 0xA1, 0xA8, 0x01, 0x06, 0x73, 0x80, 0x00, 0x00, 0x00, 0x00, /* Africa/Bangui */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x7D, 0x14, +0x01, 0x00, 0x00, 0x11, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0xFD, 0xFA, 0x01, -0x2F, 0x03, 0x9D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x7D, 0x14, 0x01, 0x00, 0x00, 0x11, 0x6C, 0x00, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, +0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0xFD, 0xFA, 0x01, 0x2F, 0x03, 0x9D, 0x00, 0x00, 0x00, +0x00, /* Africa/Banjul */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x92, 0xE6, 0x9E, 0x1C, +0xBA, 0xDE, 0x67, 0x9C, 0xCB, 0x7E, 0x10, 0x10, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0xF0, 0x64, 0x00, +0x00, 0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, +0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9D, 0xE0, 0xAA, 0x00, 0xF9, 0x40, 0x98, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x9E, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xDE, 0x67, 0x9C, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x7E, 0x10, 0x10, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x00, +0xFF, 0xFF, 0xF0, 0x64, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, 0x4D, +0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9D, 0xE0, 0xAA, 0x00, 0xF9, 0x40, 0x98, +0x00, 0x00, 0x00, 0x00, /* Africa/Bissau */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -24224,43 +24081,41 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Blantyre */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, -0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x92, 0x12, 0x2C, 0x30, +0x97, 0x97, 0x73, 0xEA, 0xAC, 0x49, 0xF0, 0x74, 0x01, 0x02, 0x03, 0x00, 0x00, 0x20, 0xD0, 0x00, +0x00, 0x00, 0x00, 0x21, 0x16, 0x00, 0x04, 0x00, 0x00, 0x21, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x1C, +0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x5A, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x54, +0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, -0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, -0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x71, 0x3E, 0xE2, 0x01, 0x48, 0x10, 0x60, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, +0x12, 0x2C, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x97, 0x73, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, +0x49, 0xF0, 0x74, 0x01, 0x02, 0x03, 0x00, 0x00, 0x20, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x16, +0x00, 0x04, 0x00, 0x00, 0x21, 0x0C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, +0x54, 0x00, 0x5A, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, +0x0A, 0x00, 0x71, 0x3E, 0xE2, 0x01, 0x48, 0x10, 0x60, 0x00, 0x00, 0x00, 0x00, /* Africa/Brazzaville */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x80, 0x2C, +0x01, 0x00, 0x00, 0x0E, 0x54, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x82, 0xD1, 0x95, 0x01, -0x29, 0xFA, 0x8D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x80, 0x2C, 0x01, 0x00, 0x00, 0x0E, 0x54, 0x00, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, +0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x82, 0xD1, 0x95, 0x01, 0x29, 0xFA, 0x8D, 0x00, 0x00, 0x00, +0x00, /* Africa/Bujumbura */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, -0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x1B, 0x88, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xBF, 0xF8, 0x01, 0x00, 0x00, 0x1B, 0x88, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x84, 0x2A, 0xA2, 0x01, 0x3F, 0x77, 0xDA, 0x00, 0x00, 0x00, 0x00, @@ -24679,86 +24534,76 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Conakry */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9B, 0x5C, +0xBC, 0x92, 0xB8, 0x80, 0xED, 0x30, 0x16, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF3, 0x24, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x54, +0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0x97, 0xD9, 0xB2, 0x00, 0xFD, 0xBA, 0x6D, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, +0xE6, 0x9B, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, +0x30, 0x16, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF3, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, +0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, +0x00, 0x97, 0xD9, 0xB2, 0x00, 0xFD, 0xBA, 0x6D, 0x00, 0x00, 0x00, 0x00, /* Africa/Dakar */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9E, 0xD8, +0xCA, 0x3B, 0x10, 0x90, 0x01, 0x02, 0xFF, 0xFF, 0xEF, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9F, 0xB5, 0x6A, 0x00, 0xF8, 0x0E, 0x9A, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x9E, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x3B, 0x10, 0x90, +0x01, 0x02, 0xFF, 0xFF, 0xEF, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, 0x4D, 0x54, 0x00, +0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9F, 0xB5, 0x6A, 0x00, 0xF8, 0x0E, 0x9A, 0x00, 0x00, +0x00, 0x00, /* Africa/Dar_es_Salaam */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xB6, 0xA3, 0xD3, 0xAC, +0xD6, 0x9D, 0x7F, 0xD0, 0xEF, 0x12, 0x66, 0xD4, 0x01, 0x02, 0x01, 0x00, 0x00, 0x24, 0xD4, 0x00, +0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, +0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x7E, 0xF4, 0x00, 0x01, 0x4E, 0x99, -0x8D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xFF, 0xFF, 0xFF, +0xFF, 0xB6, 0xA3, 0xD3, 0xAC, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x9D, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xEF, 0x12, 0x66, 0xD4, 0x01, 0x02, 0x01, 0x00, 0x00, 0x24, 0xD4, 0x00, 0x00, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, +0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, +0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x7E, 0xF4, 0x00, 0x01, 0x4E, 0x99, 0x8D, 0x00, 0x00, 0x00, +0x00, /* Africa/Djibouti */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x44, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF3, 0xD2, 0x0C, +0x01, 0x00, 0x00, 0x28, 0x74, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x9B, 0x07, 0x80, 0x01, 0x54, 0x7F, -0xF8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xD2, 0x0C, 0x01, 0x00, 0x00, 0x28, 0x74, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, +0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x9B, 0x07, 0x80, 0x01, 0x54, 0x7F, 0xF8, 0x00, 0x00, 0x00, +0x00, /* Africa/Douala */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x85, 0x68, +0x01, 0x00, 0x00, 0x09, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x82, 0x48, 0x01, -0x21, 0x75, 0x90, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x85, 0x68, 0x01, 0x00, 0x00, 0x09, 0x18, 0x00, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, +0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x82, 0x48, 0x01, 0x21, 0x75, 0x90, 0x00, 0x00, 0x00, +0x00, /* Africa/El_Aaiun */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x45, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -24910,38 +24755,65 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Freetown */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0x96, 0x4C, 0x90, 0x00, 0xFE, 0x70, 0xB8, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, 0x80, 0x00, 0x00, 0x00, +0x95, 0xB7, 0xBF, 0x6C, 0xBA, 0x3E, 0xE0, 0x90, 0xBA, 0xDE, 0x61, 0x60, 0xBB, 0xA8, 0x1B, 0x90, +0xBC, 0xBF, 0x94, 0xE0, 0xBD, 0x89, 0x4F, 0x10, 0xBE, 0xA0, 0xC8, 0x60, 0xBF, 0x6A, 0x82, 0x90, +0xC0, 0x83, 0x4D, 0x60, 0xC1, 0x4D, 0x07, 0x90, 0xC2, 0x64, 0x80, 0xE0, 0xC3, 0x2E, 0x3B, 0x10, +0xC4, 0x45, 0xB4, 0x60, 0xC5, 0x0F, 0x6E, 0x90, 0xC6, 0x77, 0x53, 0x60, 0xC6, 0xF0, 0xA2, 0x10, +0xC6, 0xF5, 0xE3, 0x60, 0xCB, 0x34, 0x3C, 0x10, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x04, 0x04, +0xFF, 0xFF, 0xF3, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x94, 0x00, 0x04, 0xFF, 0xFF, 0xF6, 0xA0, +0x01, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x04, 0xB0, 0x01, 0x12, 0x4C, 0x4D, +0x54, 0x00, 0x46, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x30, 0x34, 0x30, 0x00, 0x2D, 0x30, 0x31, 0x00, +0x2B, 0x30, 0x31, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x16, +0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x7A, 0xA8, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0xB7, 0xBF, 0x6C, +0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x3E, 0xE0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xDE, 0x61, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xA8, 0x1B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xBF, 0x94, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0x89, 0x4F, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xA0, 0xC8, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x6A, 0x82, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x83, 0x4D, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x4D, 0x07, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x64, 0x80, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x2E, 0x3B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x45, 0xB4, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x0F, 0x6E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x77, 0x53, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xF0, 0xA2, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0xF5, 0xE3, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x34, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, +0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x04, 0x04, 0xFF, 0xFF, 0xF3, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x94, 0x00, 0x04, +0xFF, 0xFF, 0xF6, 0xA0, 0x01, 0x08, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x04, 0xB0, +0x01, 0x12, 0x4C, 0x4D, 0x54, 0x00, 0x46, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x30, 0x34, 0x30, 0x00, +0x2D, 0x30, 0x31, 0x00, 0x2B, 0x30, 0x31, 0x00, 0x0A, 0x58, 0x58, 0x58, 0x2D, 0x30, 0x3A, 0x34, +0x30, 0x3C, 0x2B, 0x30, 0x31, 0x3E, 0x2D, 0x30, 0x3A, 0x32, 0x30, 0x2C, 0x30, 0x2F, 0x30, 0x2C, +0x4A, 0x33, 0x36, 0x35, 0x2F, 0x32, 0x33, 0x3A, 0x34, 0x30, 0x0A, 0x00, 0x96, 0x4C, 0x90, 0x00, +0xFE, 0x70, 0xB8, 0x00, 0x00, 0x00, 0x00, /* Africa/Gaborone */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, -0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x80, 0x00, 0x00, 0x00, +0x82, 0x46, 0xCF, 0x68, 0xCE, 0x8E, 0x6E, 0x80, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x02, 0x03, 0x02, +0x00, 0x00, 0x18, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, +0x00, 0x43, 0x41, 0x54, 0x00, 0x43, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, -0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, -0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x63, 0xB7, 0x57, 0x01, 0x3A, 0x34, 0x32, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x60, 0x1F, 0x70, 0x34, 0xFF, 0xFF, +0xFF, 0xFF, 0x82, 0x46, 0xCF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x8E, 0x6E, 0x80, 0xFF, 0xFF, +0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x18, 0x4C, 0x00, 0x00, +0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x09, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x43, +0x41, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x63, 0xB7, 0x57, 0x01, +0x3A, 0x34, 0x32, 0x00, 0x00, 0x00, 0x00, /* Africa/Harare */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x5A, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, -0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC7, 0x64, +0x01, 0x00, 0x00, 0x1D, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC7, 0x64, 0x01, 0x00, 0x00, 0x1D, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x6E, 0x1E, 0x1A, 0x01, 0x42, 0x09, 0x68, 0x00, 0x00, 0x00, 0x00, @@ -25014,22 +24886,21 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Kampala */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x89, 0xCF, 0xF2, 0x01, 0x44, 0x1F, -0x42, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xB1, 0xEE, 0xDF, 0x1C, +0xB4, 0xC2, 0x9A, 0xD0, 0xD6, 0x9D, 0x86, 0xD8, 0xE7, 0x8C, 0x47, 0x54, 0x01, 0x02, 0x03, 0x01, +0x00, 0x00, 0x1E, 0x64, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x23, 0x28, +0x00, 0x08, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, +0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x32, 0x34, +0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, +0xFF, 0xFF, 0xB1, 0xEE, 0xDF, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC2, 0x9A, 0xD0, 0xFF, 0xFF, +0xFF, 0xFF, 0xD6, 0x9D, 0x86, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x8C, 0x47, 0x54, 0x01, 0x02, +0x03, 0x01, 0x00, 0x00, 0x1E, 0x64, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, +0x23, 0x28, 0x00, 0x08, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, +0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x2B, 0x30, +0x32, 0x34, 0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x89, 0xCF, 0xF2, 0x01, +0x44, 0x1F, 0x42, 0x00, 0x00, 0x00, 0x00, /* Africa/Khartoum */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25080,12 +24951,12 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Kigali */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, -0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xBE, 0xF1, 0x0E, 0x50, +0x01, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xF1, 0x0E, 0x50, 0x01, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x86, 0x5A, 0x88, 0x01, 0x40, 0x89, 0x4A, 0x00, 0x00, 0x00, 0x00, @@ -25093,22 +24964,16 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Kinshasa */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x0E, 0x58, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x82, 0xC4, 0x90, 0x01, -0x2A, 0x01, 0x10, 0x00, 0x00, 0x00, 0x19, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, -0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, 0x6E, 0x67, 0x6F, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x4D, 0x2C, 0xA8, 0x01, 0x00, 0x00, 0x0E, 0x58, 0x00, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, +0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x82, 0xC4, 0x90, 0x01, 0x2A, 0x01, 0x10, 0x00, 0x00, 0x00, +0x19, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, +0x6E, 0x67, 0x6F, 0x20, 0x28, 0x77, 0x65, 0x73, 0x74, 0x29, /* Africa/Lagos */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4E, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25131,75 +24996,69 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Libreville */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x85, 0xA4, +0x01, 0x00, 0x00, 0x08, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x89, 0xE9, 0xFD, 0x01, -0x21, 0x13, 0xE8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x85, 0xA4, 0x01, 0x00, 0x00, 0x08, 0xDC, 0x00, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, +0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x89, 0xE9, 0xFD, 0x01, 0x21, 0x13, 0xE8, 0x00, 0x00, 0x00, +0x00, /* Africa/Lome */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x6F, 0x2B, 0xC6, 0x5C, 0x01, 0x00, 0x00, 0x01, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x92, 0xB0, 0x15, 0x01, 0x14, 0x83, 0xC2, 0x00, 0x00, 0x00, 0x00, /* Africa/Luanda */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x7B, 0xE6, 0xC0, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, +0x92, 0xE6, 0x80, 0x70, 0x01, 0x02, 0x00, 0x00, 0x0C, 0x68, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x34, +0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x49, 0x36, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, +0x80, 0x70, 0x01, 0x02, 0x00, 0x00, 0x0C, 0x68, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x34, 0x00, 0x00, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x01, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x7B, 0xE6, 0xC0, 0x01, 0x26, 0xD9, 0xC5, 0x00, 0x00, 0x00, 0x00, /* Africa/Lubumbashi */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, -0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, +0xA2, 0x8A, 0x5B, 0xF0, 0x01, 0x02, 0x00, 0x00, 0x19, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, +0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, -0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, -0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x77, 0x86, 0xF5, 0x01, 0x3C, 0x91, 0xAA, 0x00, 0x00, 0x00, -0x19, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x6F, -0x6E, 0x67, 0x6F, 0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x4D, 0x21, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x8A, 0x5B, 0xF0, +0x01, 0x02, 0x00, 0x00, 0x19, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, +0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x77, 0x86, 0xF5, 0x01, 0x3C, 0x91, 0xAA, 0x00, +0x00, 0x00, 0x19, 0x44, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x70, 0x2E, 0x20, 0x6F, 0x66, 0x20, +0x43, 0x6F, 0x6E, 0x67, 0x6F, 0x20, 0x28, 0x65, 0x61, 0x73, 0x74, 0x29, /* Africa/Lusaka */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x5A, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC5, 0xF4, -0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x82, 0x46, 0xC9, 0xFC, +0x01, 0x00, 0x00, 0x1A, 0x84, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC5, 0xF4, 0x01, 0x00, 0x00, 0x1E, 0x8C, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC9, 0xFC, 0x01, 0x00, 0x00, 0x1A, 0x84, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x41, 0x54, 0x00, 0x0A, 0x43, 0x41, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x71, 0xCE, 0x1D, 0x01, 0x3D, 0xD0, 0xAD, 0x00, 0x00, 0x00, 0x00, @@ -25207,20 +25066,17 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Malabo */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x86, 0x44, +0xF4, 0x9F, 0xBE, 0x80, 0x01, 0x02, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, +0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x0D, 0x18, 0x01, -0x20, 0x0F, 0x7D, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x86, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x9F, 0xBE, 0x80, +0x01, 0x02, 0x00, 0x00, 0x08, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, +0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x8F, 0x0D, 0x18, 0x01, 0x20, 0x0F, 0x7D, 0x00, +0x00, 0x00, 0x00, /* Africa/Maputo */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25238,60 +25094,47 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Maseru */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, -0x82, 0x46, 0xCF, 0x68, 0xCC, 0xAE, 0x8C, 0x80, 0xCD, 0x9E, 0x6F, 0x70, 0xCE, 0x8E, 0x6E, 0x80, -0xCF, 0x7E, 0x51, 0x70, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x00, -0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x82, 0x46, 0xCA, 0xB8, +0xCE, 0x8E, 0x6E, 0x80, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x02, 0x01, 0x00, 0x00, 0x19, 0xC8, 0x00, +0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, -0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x7B, 0x41, 0x40, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xCF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xAE, 0x8C, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xCD, 0x9E, 0x6F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x8E, 0x6E, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1A, -0x40, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, -0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x53, -0x41, 0x53, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x5C, 0x5D, 0xD5, 0x01, 0x3C, 0x9E, 0xB0, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xCA, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x8E, +0x6E, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x02, 0x01, 0x00, 0x00, 0x19, +0xC8, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x4C, +0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x53, 0x41, 0x53, 0x54, 0x2D, 0x32, 0x0A, +0x00, 0x5C, 0x5D, 0xD5, 0x01, 0x3C, 0x9E, 0xB0, 0x00, 0x00, 0x00, 0x00, /* Africa/Mbabane */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x80, 0x00, 0x00, 0x00, -0x82, 0x46, 0xCF, 0x68, 0xCC, 0xAE, 0x8C, 0x80, 0xCD, 0x9E, 0x6F, 0x70, 0xCE, 0x8E, 0x6E, 0x80, -0xCF, 0x7E, 0x51, 0x70, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1A, 0x40, 0x00, 0x00, -0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x82, 0x46, 0xC7, 0x58, +0x01, 0x00, 0x00, 0x1D, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, -0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x7B, 0x41, 0x40, 0xFF, -0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xCF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xAE, 0x8C, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xCD, 0x9E, 0x6F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x8E, 0x6E, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xCF, 0x7E, 0x51, 0x70, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x00, 0x00, 0x1A, -0x40, 0x00, 0x00, 0x00, 0x00, 0x15, 0x18, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x04, 0x00, -0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x53, -0x41, 0x53, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x61, 0x32, 0xD0, 0x01, 0x42, 0x1C, 0xF0, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, +0x00, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0x82, 0x46, 0xC7, 0x58, 0x01, 0x00, 0x00, 0x1D, 0x28, 0x00, +0x00, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x41, 0x53, 0x54, 0x00, +0x0A, 0x53, 0x41, 0x53, 0x54, 0x2D, 0x32, 0x0A, 0x00, 0x61, 0x32, 0xD0, 0x01, 0x42, 0x1C, 0xF0, +0x00, 0x00, 0x00, 0x00, /* Africa/Mogadishu */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0x80, 0x00, 0x00, 0x00, +0xB6, 0xA3, 0xCE, 0x50, 0xE7, 0x8C, 0x4A, 0xD8, 0x01, 0x02, 0x01, 0x00, 0x00, 0x2A, 0x88, 0x00, +0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x23, 0x28, 0x00, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, +0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x8C, 0x7B, 0x8A, 0x01, 0x57, 0xE1, -0xDA, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xFF, 0xFF, 0xFF, +0xFF, 0x70, 0xBC, 0x64, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0xA3, 0xCE, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xE7, 0x8C, 0x4A, 0xD8, 0x01, 0x02, 0x01, 0x00, 0x00, 0x2A, 0x88, 0x00, 0x00, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x23, 0x28, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, +0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x0A, 0x45, +0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x8C, 0x7B, 0x8A, 0x01, 0x57, 0xE1, 0xDA, 0x00, 0x00, 0x00, +0x00, /* Africa/Monrovia */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25348,43 +25191,45 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Niamey */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4E, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x92, 0xE6, 0x8C, 0x84, +0xBC, 0x92, 0xC6, 0x90, 0xED, 0x30, 0x08, 0x80, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0xFC, 0x00, +0x00, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, +0x10, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, +0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x9D, 0xF4, 0x32, 0x01, -0x15, 0xE3, 0x52, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x8C, 0x84, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xC6, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0x30, 0x08, 0x80, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, +0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, +0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, +0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x9D, 0xF4, 0x32, 0x01, 0x15, 0xE3, +0x52, 0x00, 0x00, 0x00, 0x00, /* Africa/Nouakchott */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x9D, 0x74, +0xBC, 0x92, 0xB8, 0x80, 0xEE, 0xE5, 0xC8, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF1, 0x0C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x54, +0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0xA4, 0xF2, 0x90, 0x00, 0xFA, 0x52, 0x08, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, +0xE6, 0x9D, 0x74, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, +0xE5, 0xC8, 0x90, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF1, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, +0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, +0x00, 0xA4, 0xF2, 0x90, 0x00, 0xFA, 0x52, 0x08, 0x00, 0x00, 0x00, 0x00, /* Africa/Ouagadougou */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x8F, 0xEC, +0x01, 0xFF, 0xFF, 0xFE, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x8F, 0xEC, 0x01, 0xFF, 0xFF, 0xFE, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x9C, 0x32, 0xFA, 0x01, 0x10, 0x58, 0x0D, 0x00, 0x00, 0x00, 0x00, @@ -25392,20 +25237,17 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Porto-Novo */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x86, 0xAB, 0x70, 0xD1, -0x8C, 0x50, 0x60, 0x00, 0x96, 0xAA, 0x43, 0xD1, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, -0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, -0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, 0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x8C, 0x0C, +0xBC, 0x92, 0xB8, 0x80, 0x01, 0x02, 0x00, 0x00, 0x02, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, +0x57, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, -0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0xAB, 0x70, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0x8C, 0x50, 0x60, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0xAA, 0x43, 0xD1, 0xFF, 0xFF, -0xFF, 0xFF, 0xA1, 0x51, 0xEF, 0x78, 0x01, 0x00, 0x02, 0x03, 0x00, 0x00, 0x03, 0x2F, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x07, 0x08, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x30, 0x33, 0x30, 0x00, -0x57, 0x41, 0x54, 0x00, 0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x93, 0x38, 0xCD, 0x01, -0x16, 0xA6, 0xA2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x8C, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, +0x01, 0x02, 0x00, 0x00, 0x02, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x57, 0x41, 0x54, 0x00, +0x0A, 0x57, 0x41, 0x54, 0x2D, 0x31, 0x0A, 0x00, 0x93, 0x38, 0xCD, 0x01, 0x16, 0xA6, 0xA2, 0x00, +0x00, 0x00, 0x00, /* Africa/Sao_Tome */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25429,15 +25271,18 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Africa/Timbuktu */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x92, 0xE6, 0x96, 0x00, +0xBC, 0x92, 0xB8, 0x80, 0xEE, 0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, +0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x54, +0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, +0xE6, 0x96, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x92, 0xB8, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, +0x11, 0x87, 0x10, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0xFF, 0xFF, 0xF1, 0xF0, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, +0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x31, 0x00, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Africa/Tripoli */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -25897,39 +25742,29 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Anguilla */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA5, 0x19, 0xA0, 0x00, 0xB2, 0x6D, 0x15, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x35, 0x20, +0x01, 0xFF, 0xFF, 0xC4, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x35, 0x20, 0x01, 0xFF, 0xFF, 0xC4, 0xE0, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA5, 0x19, 0xA0, 0x00, 0xB2, 0x6D, 0x15, 0x00, 0x00, 0x00, 0x00, + /* America/Antigua */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x93, 0x37, 0x33, 0xF0, +0xDC, 0x42, 0xDC, 0x50, 0x01, 0x02, 0xFF, 0xFF, 0xC6, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, +0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x42, 0xDC, 0x50, +0x01, 0x02, 0xFF, 0xFF, 0xC6, 0x10, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x04, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA3, 0x58, 0x68, 0x00, 0xB4, 0x5B, 0xE0, 0x00, 0x00, 0x00, 0x00, @@ -26926,22 +26761,18 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Aruba */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9C, 0x67, 0x10, 0x00, 0xA7, 0xE5, 0xC5, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x93, 0x1E, 0x2F, 0x38, +0xF6, 0x98, 0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBE, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, +0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, +0x30, 0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2F, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, +0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBE, 0x48, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, +0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9C, 0x67, 0x10, 0x00, 0xA7, +0xE5, 0xC5, 0x00, 0x00, 0x00, 0x00, /* America/Asuncion */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x50, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -27076,20 +26907,29 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Atikokan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, -0x8B, 0xF4, 0x61, 0xE8, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, -0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, -0x45, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, -0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, -0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, -0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xD3, 0xBA, 0x95, 0x00, 0x86, 0xDA, 0xC9, 0x00, 0x00, -0x00, 0x21, 0x45, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, -0x6F, 0x6B, 0x61, 0x6E, 0x29, 0x3B, 0x20, 0x4E, 0x55, 0x20, 0x28, 0x43, 0x6F, 0x72, 0x61, 0x6C, -0x20, 0x48, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, +0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xC8, 0xF8, 0x57, 0x60, 0xCB, 0x88, 0xFE, 0x80, +0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0xFF, +0xFF, 0xAA, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, +0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, +0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, +0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x84, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, +0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, +0xF8, 0x57, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, +0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x03, +0x04, 0x05, 0xFF, 0xFF, 0xAA, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, +0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, +0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, +0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, +0x00, 0xD3, 0xBA, 0x95, 0x00, 0x86, 0xDA, 0xC9, 0x00, 0x00, 0x00, 0x21, 0x45, 0x53, 0x54, 0x20, +0x2D, 0x20, 0x4F, 0x4E, 0x20, 0x28, 0x41, 0x74, 0x69, 0x6B, 0x6F, 0x6B, 0x61, 0x6E, 0x29, 0x3B, +0x20, 0x4E, 0x55, 0x20, 0x28, 0x43, 0x6F, 0x72, 0x61, 0x6C, 0x20, 0x48, 0x29, /* America/Atka */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -27589,23 +27429,27 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Blanc-Sablon */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xD7, 0xC8, 0xE2, 0x00, 0xBB, 0x81, 0x4D, 0x00, 0x00, -0x00, 0x1C, 0x41, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x51, 0x43, 0x20, 0x28, 0x4C, 0x6F, 0x77, 0x65, -0x72, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x20, 0x53, 0x68, 0x6F, 0x72, 0x65, 0x29, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x9E, 0xB8, 0x85, 0x60, 0x9F, 0xBA, 0xDD, 0x50, 0xCB, 0x88, 0xE2, 0x60, 0xD2, 0x23, 0xF4, 0x70, +0xD2, 0x60, 0xED, 0xD0, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0xFF, 0xFF, 0xCA, 0x74, 0x00, 0x00, +0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, +0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, +0x41, 0x53, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, +0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, +0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3D, 0x39, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, +0x85, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xDD, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, +0xE2, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, +0xED, 0xD0, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, 0xFF, 0xFF, 0xCA, 0x74, 0x00, 0x00, 0xFF, 0xFF, +0xD5, 0xD0, 0x01, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, +0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x44, 0x54, 0x00, 0x41, 0x53, +0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x41, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xD7, 0xC8, 0xE2, 0x00, 0xBB, +0x81, 0x4D, 0x00, 0x00, 0x00, 0x1C, 0x41, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x51, 0x43, 0x20, 0x28, +0x4C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x4E, 0x6F, 0x72, 0x74, 0x68, 0x20, 0x53, 0x68, 0x6F, 0x72, +0x65, 0x29, /* America/Boa_Vista */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -28290,14 +28134,14 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, -0x8B, 0xF4, 0x61, 0xE8, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, -0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, +0x93, 0x0F, 0xB4, 0xFE, 0x01, 0x02, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x02, +0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, -0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, -0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x27, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x0F, 0xB4, 0xFE, +0x01, 0x02, 0xFF, 0xFF, 0xB3, 0xB4, 0x00, 0x00, 0xFF, 0xFF, 0xB8, 0x02, 0x00, 0x04, 0xFF, 0xFF, +0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0xA6, 0xC7, 0x50, 0x00, 0x96, 0x7A, 0x22, 0x00, 0x00, 0x00, 0x00, @@ -28629,18 +28473,27 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Coral_Harbour */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, -0x8B, 0xF4, 0x61, 0xE8, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, -0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, -0x45, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, -0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x26, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xF4, 0x61, 0xE8, -0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xB5, 0x18, 0x00, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, -0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x18, 0x80, 0x00, 0x00, 0x00, +0x9E, 0xB8, 0xA1, 0x80, 0x9F, 0xBA, 0xF9, 0x70, 0xC8, 0xF8, 0x57, 0x60, 0xCB, 0x88, 0xFE, 0x80, +0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x61, 0x09, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x05, 0xFF, +0xFF, 0xAA, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, 0xAB, 0xA0, 0x00, +0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, 0xFF, 0xFF, 0xB9, +0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, 0x54, 0x00, 0x43, +0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, +0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x84, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, +0xB8, 0xA1, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xF9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, +0xF8, 0x57, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xFE, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, +0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x61, 0x09, 0xF0, 0x02, 0x01, 0x02, 0x01, 0x03, +0x04, 0x05, 0xFF, 0xFF, 0xAA, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x04, 0xFF, 0xFF, +0xAB, 0xA0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x0C, 0xFF, 0xFF, 0xB9, 0xB0, 0x01, 0x10, +0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x44, 0x54, 0x00, 0x43, 0x53, +0x54, 0x00, 0x43, 0x57, 0x54, 0x00, 0x43, 0x50, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x0A, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* America/Cordoba */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -28739,27 +28592,19 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Creston */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0x9E, 0xA6, 0x3A, 0x90, 0x9F, 0xBB, 0x07, 0x80, 0xA0, 0x86, 0x1C, 0x90, 0xA1, 0x9A, 0xE9, 0x80, -0xCB, 0x89, 0x0C, 0x90, 0xCF, 0x17, 0xDF, 0x1C, 0xCF, 0x8F, 0xE5, 0xAC, 0xD0, 0x81, 0x1A, 0x1C, -0xFA, 0xF8, 0x75, 0x10, 0xFB, 0xE8, 0x58, 0x00, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, -0x02, 0x01, 0x02, 0xFF, 0xFF, 0x96, 0xEE, 0x00, 0x00, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, -0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4D, -0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, +0x9B, 0xD6, 0x4B, 0x70, 0x9E, 0xF9, 0x3B, 0x00, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0x92, 0xC4, 0x00, +0x00, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, +0x90, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x54, +0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, -0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x04, 0x0C, 0xB0, 0xFF, -0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x3A, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBB, 0x07, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x1C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xE9, 0x80, 0xFF, -0xFF, 0xFF, 0xFF, 0xCB, 0x89, 0x0C, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x17, 0xDF, 0x1C, 0xFF, -0xFF, 0xFF, 0xFF, 0xCF, 0x8F, 0xE5, 0xAC, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x81, 0x1A, 0x1C, 0xFF, -0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x75, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x58, 0x00, 0x02, -0x01, 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0x96, 0xEE, 0x00, 0x00, -0xFF, 0xFF, 0xAB, 0xA0, 0x01, 0x04, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x08, 0xFF, 0xFF, 0xAB, 0xA0, -0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x4D, 0x44, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x4D, 0x57, -0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xD4, 0x3F, 0xF0, 0x00, 0x60, 0xDE, 0x2D, -0x00, 0x00, 0x00, 0x12, 0x4D, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x43, 0x72, -0x65, 0x73, 0x74, 0x6F, 0x6E, 0x29, +0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, +0x3D, 0x70, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x4B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, +0xF9, 0x3B, 0x00, 0x01, 0x02, 0x01, 0xFF, 0xFF, 0x92, 0xC4, 0x00, 0x00, 0xFF, 0xFF, 0x9D, 0x90, +0x00, 0x04, 0xFF, 0xFF, 0x8F, 0x80, 0x00, 0x08, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x04, 0x4C, 0x4D, +0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, +0x00, 0xD4, 0x3F, 0xF0, 0x00, 0x60, 0xDE, 0x2D, 0x00, 0x00, 0x00, 0x12, 0x4D, 0x53, 0x54, 0x20, +0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x6E, 0x29, /* America/Cuiaba */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -28855,22 +28700,18 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Curacao */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xEB, 0x5D, 0x00, 0xA9, 0x5F, 0x60, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x93, 0x1E, 0x2E, 0x23, +0xF6, 0x98, 0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, +0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, +0x30, 0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2E, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, +0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, +0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xEB, 0x5D, 0x00, 0xA9, +0x5F, 0x60, 0x00, 0x00, 0x00, 0x00, /* America/Danmarkshavn */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -29092,7 +28933,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x9D, 0x90, 0x01, 0x0C, 0xFF, 0xFF, 0x9D, 0x90, 0x01, 0x10, 0xFF, 0xFF, 0x9D, 0x90, 0x00, 0x14, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x44, 0x54, 0x00, 0x50, 0x53, 0x54, 0x00, 0x50, 0x57, 0x54, 0x00, 0x50, 0x50, 0x54, 0x00, 0x4D, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xE4, 0x86, 0x9A, 0x00, 0x5B, +0x00, 0x00, 0x01, 0x00, 0x0A, 0x4D, 0x53, 0x54, 0x37, 0x0A, 0x00, 0xDE, 0x6C, 0x1A, 0x00, 0x5B, 0x32, 0x5A, 0x00, 0x00, 0x00, 0x20, 0x4D, 0x53, 0x54, 0x20, 0x2D, 0x20, 0x42, 0x43, 0x20, 0x28, 0x44, 0x61, 0x77, 0x73, 0x6F, 0x6E, 0x20, 0x43, 0x72, 0x2C, 0x20, 0x46, 0x74, 0x20, 0x53, 0x74, 0x20, 0x4A, 0x6F, 0x68, 0x6E, 0x29, @@ -29400,22 +29241,16 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Dominica */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x44, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA0, 0xAC, 0xD0, 0x00, 0xB4, 0xF8, 0x20, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x34, 0x4C, +0x01, 0xFF, 0xFF, 0xC6, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x34, 0x4C, 0x01, 0xFF, 0xFF, 0xC6, 0x70, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA0, 0xAC, 0xD0, 0x00, 0xB4, 0xF8, 0x20, 0x00, 0x00, 0x00, 0x00, + /* America/Edmonton */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -30671,41 +30506,29 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Grenada */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xB7, 0x48, 0x00, 0xB4, 0x6F, 0x68, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x34, 0x64, +0x01, 0xFF, 0xFF, 0xC6, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x34, 0x64, 0x01, 0xFF, 0xFF, 0xC6, 0x1C, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xB7, 0x48, 0x00, 0xB4, 0x6F, 0x68, 0x00, 0x00, 0x00, 0x00, + /* America/Guadeloupe */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA2, 0x19, 0x65, 0x00, 0xB4, 0xC4, 0x0A, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xD5, 0xE1, 0xB0, +0x01, 0xFF, 0xFF, 0xC6, 0x50, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xD5, 0xE1, 0xB0, 0x01, 0xFF, 0xFF, 0xC6, 0x50, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA2, 0x19, 0x65, 0x00, 0xB4, 0xC4, 0x0A, 0x00, 0x00, 0x00, 0x00, + /* America/Guatemala */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -33205,22 +33028,18 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Kralendijk */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xDE, 0xAB, 0x00, 0xAA, 0x79, 0xED, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x93, 0x1E, 0x2E, 0x23, +0xF6, 0x98, 0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, +0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, +0x30, 0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2E, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, +0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, +0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9B, 0xDE, 0xAB, 0x00, 0xAA, +0x79, 0xED, 0x00, 0x00, 0x00, 0x00, /* America/La_Paz */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -33629,22 +33448,18 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Lower_Princes */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA4, 0xDF, 0x92, 0x00, 0xB2, 0x74, 0xAD, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0E, 0x93, 0x1E, 0x2E, 0x23, +0xF6, 0x98, 0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, +0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, +0x30, 0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +0x00, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x1E, 0x2E, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x98, +0xEC, 0x48, 0x01, 0x02, 0xFF, 0xFF, 0xBF, 0x5D, 0x00, 0x00, 0xFF, 0xFF, 0xC0, 0xB8, 0x00, 0x04, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x34, 0x33, 0x30, 0x00, +0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA4, 0xDF, 0x92, 0x00, 0xB2, +0x74, 0xAD, 0x00, 0x00, 0x00, 0x00, /* America/Maceio */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -33771,22 +33586,16 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Marigot */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA4, 0xE5, 0x8A, 0x00, 0xB2, 0x66, 0x92, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x33, 0xAC, +0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xAC, 0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA4, 0xE5, 0x8A, 0x00, 0xB2, 0x66, 0x92, 0x00, 0x00, 0x00, 0x00, + /* America/Martinique */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -35236,249 +35045,174 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Montserrat */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA2, 0xD6, 0x32, 0x00, 0xB3, 0xB9, 0x1D, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x35, 0x10, +0x01, 0xFF, 0xFF, 0xC5, 0xAC, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x35, 0x10, 0x01, 0xFF, 0xFF, 0xC5, 0xAC, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA2, 0xD6, 0x32, 0x00, 0xB3, 0xB9, 0x1D, 0x00, 0x00, 0x00, 0x00, + /* America/Nassau */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, -0x9E, 0xB8, 0x93, 0x70, 0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x87, 0x2E, 0xC8, 0xA1, 0x9A, 0xB1, 0x40, -0xA2, 0x94, 0x06, 0xF0, 0xA3, 0x55, 0xA9, 0x40, 0xA4, 0x86, 0x5D, 0xF0, 0xA5, 0x28, 0x78, 0x60, -0xA6, 0x66, 0x3F, 0xF0, 0xA7, 0x0C, 0x4E, 0xE0, 0xA8, 0x46, 0x21, 0xF0, 0xA8, 0xEC, 0x30, 0xE0, -0xAA, 0x1C, 0xC9, 0x70, 0xAA, 0xD5, 0x4D, 0x60, 0xAB, 0xFC, 0xAB, 0x70, 0xAC, 0xB5, 0x2F, 0x60, -0xAD, 0xDC, 0x8D, 0x70, 0xAE, 0x95, 0x11, 0x60, 0xAF, 0xBC, 0x6F, 0x70, 0xB0, 0x7E, 0x2D, 0xE0, -0xB1, 0x9C, 0x51, 0x70, 0xB2, 0x67, 0x4A, 0x60, 0xB3, 0x7C, 0x33, 0x70, 0xB4, 0x47, 0x2C, 0x60, -0xB5, 0x5C, 0x15, 0x70, 0xB6, 0x27, 0x0E, 0x60, 0xB7, 0x3B, 0xF7, 0x70, 0xB8, 0x06, 0xF0, 0x60, -0xB9, 0x25, 0x13, 0xF0, 0xB9, 0xE6, 0xD2, 0x60, 0xBB, 0x04, 0xF5, 0xF0, 0xBB, 0xCF, 0xEE, 0xE0, -0xBC, 0xE4, 0xD7, 0xF0, 0xBD, 0xAF, 0xD0, 0xE0, 0xBE, 0xC4, 0xB9, 0xF0, 0xBF, 0x8F, 0xB2, 0xE0, -0xC0, 0xA4, 0x9B, 0xF0, 0xC1, 0x6F, 0x94, 0xE0, 0xC2, 0x84, 0x7D, 0xF0, 0xC3, 0x4F, 0x76, 0xE0, -0xC4, 0x64, 0x5F, 0xF0, 0xC5, 0x2F, 0x58, 0xE0, 0xC6, 0x4D, 0x7C, 0x70, 0xC7, 0x0F, 0x3A, 0xE0, -0xC8, 0x2D, 0x5E, 0x70, 0xCB, 0x88, 0xF0, 0x70, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xFB, 0xE0, -0xD3, 0x75, 0xE4, 0xF0, 0xD4, 0x40, 0xDD, 0xE0, 0xD5, 0x55, 0xAA, 0xD0, 0xD6, 0x20, 0xA3, 0xC0, -0xD7, 0x35, 0x8C, 0xD0, 0xD8, 0x00, 0x85, 0xC0, 0xD9, 0x15, 0x6E, 0xD0, 0xDA, 0x33, 0x76, 0x40, -0xDA, 0xFE, 0xA7, 0x70, 0xDC, 0x13, 0x74, 0x60, 0xDC, 0xDE, 0x89, 0x70, 0xDD, 0xA9, 0x82, 0x60, -0xDE, 0xBE, 0x6B, 0x70, 0xDF, 0x89, 0x64, 0x60, 0xE0, 0x9E, 0x4D, 0x70, 0xE1, 0x69, 0x46, 0x60, -0xE2, 0x7E, 0x2F, 0x70, 0xE3, 0x49, 0x28, 0x60, 0xE4, 0x5E, 0x11, 0x70, 0xE5, 0x29, 0x0A, 0x60, -0xE6, 0x47, 0x2D, 0xF0, 0xE7, 0x12, 0x26, 0xE0, 0xE8, 0x27, 0x0F, 0xF0, 0xE9, 0x16, 0xF2, 0xE0, -0xEA, 0x06, 0xF1, 0xF0, 0xEA, 0xF6, 0xD4, 0xE0, 0xEB, 0xE6, 0xD3, 0xF0, 0xEC, 0xD6, 0xB6, 0xE0, -0xED, 0xC6, 0xB5, 0xF0, 0xEE, 0xBF, 0xD3, 0x60, 0xEF, 0xAF, 0xD2, 0x70, 0xF0, 0x9F, 0xB5, 0x60, -0xF1, 0x8F, 0xB4, 0x70, 0xF2, 0x7F, 0x97, 0x60, 0xF3, 0x6F, 0x96, 0x70, 0xF4, 0x5F, 0x79, 0x60, -0xF5, 0x4F, 0x78, 0x70, 0xF6, 0x3F, 0x5B, 0x60, 0xF7, 0x2F, 0x5A, 0x70, 0xF8, 0x28, 0x77, 0xE0, -0xF9, 0x0F, 0x3C, 0x70, 0xFA, 0x08, 0x59, 0xE0, 0xFA, 0xF8, 0x58, 0xF0, 0xFB, 0xE8, 0x3B, 0xE0, -0xFC, 0xD8, 0x3A, 0xF0, 0xFD, 0xC8, 0x1D, 0xE0, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xA7, 0xFF, 0xE0, -0x00, 0x97, 0xFE, 0xF0, 0x01, 0x87, 0xE1, 0xE0, 0x02, 0x77, 0xE0, 0xF0, 0x03, 0x70, 0xFE, 0x60, -0x04, 0x60, 0xFD, 0x70, 0x05, 0x50, 0xE0, 0x60, 0x06, 0x40, 0xDF, 0x70, 0x07, 0x30, 0xC2, 0x60, -0x08, 0x20, 0xC1, 0x70, 0x09, 0x10, 0xA4, 0x60, 0x0A, 0x00, 0xA3, 0x70, 0x0A, 0xF0, 0x86, 0x60, -0x0B, 0xE0, 0x85, 0x70, 0x0C, 0xD9, 0xA2, 0xE0, 0x0D, 0xC0, 0x67, 0x70, 0x0E, 0xB9, 0x84, 0xE0, -0x0F, 0xA9, 0x83, 0xF0, 0x10, 0x99, 0x66, 0xE0, 0x11, 0x89, 0x65, 0xF0, 0x12, 0x79, 0x48, 0xE0, -0x13, 0x69, 0x47, 0xF0, 0x14, 0x59, 0x2A, 0xE0, 0x15, 0x49, 0x29, 0xF0, 0x16, 0x39, 0x0C, 0xE0, -0x17, 0x29, 0x0B, 0xF0, 0x18, 0x22, 0x29, 0x60, 0x19, 0x08, 0xED, 0xF0, 0x1A, 0x02, 0x0B, 0x60, -0x1A, 0xF2, 0x0A, 0x70, 0x1B, 0xE1, 0xED, 0x60, 0x1C, 0xD1, 0xEC, 0x70, 0x1D, 0xC1, 0xCF, 0x60, -0x1E, 0xB1, 0xCE, 0x70, 0x1F, 0xA1, 0xB1, 0x60, 0x20, 0x76, 0x00, 0xF0, 0x21, 0x81, 0x93, 0x60, -0x22, 0x55, 0xE2, 0xF0, 0x23, 0x6A, 0xAF, 0xE0, 0x24, 0x35, 0xC4, 0xF0, 0x25, 0x4A, 0x91, 0xE0, -0x26, 0x15, 0xA6, 0xF0, 0x27, 0x2A, 0x73, 0xE0, 0x27, 0xFE, 0xC3, 0x70, 0x29, 0x0A, 0x55, 0xE0, -0x29, 0xDE, 0xA5, 0x70, 0x2A, 0xEA, 0x37, 0xE0, 0x2B, 0xBE, 0x87, 0x70, 0x2C, 0xD3, 0x54, 0x60, -0x2D, 0x9E, 0x69, 0x70, 0x2E, 0xB3, 0x36, 0x60, 0x2F, 0x7E, 0x4B, 0x70, 0x30, 0x93, 0x18, 0x60, -0x31, 0x67, 0x67, 0xF0, 0x32, 0x72, 0xFA, 0x60, 0x33, 0x47, 0x49, 0xF0, 0x34, 0x52, 0xDC, 0x60, -0x35, 0x27, 0x2B, 0xF0, 0x36, 0x32, 0xBE, 0x60, 0x37, 0x07, 0x0D, 0xF0, 0x38, 0x1B, 0xDA, 0xE0, -0x38, 0xE6, 0xEF, 0xF0, 0x39, 0xFB, 0xBC, 0xE0, 0x3A, 0xC6, 0xD1, 0xF0, 0x3B, 0xDB, 0x9E, 0xE0, -0x3C, 0xAF, 0xEE, 0x70, 0x3D, 0xBB, 0x80, 0xE0, 0x3E, 0x8F, 0xD0, 0x70, 0x3F, 0x9B, 0x62, 0xE0, -0x40, 0x6F, 0xB2, 0x70, 0x41, 0x84, 0x7F, 0x60, 0x42, 0x4F, 0x94, 0x70, 0x43, 0x64, 0x61, 0x60, -0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0, 0x47, 0x2D, 0x5F, 0xE0, -0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, 0x4A, 0xED, 0x23, 0xE0, -0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, 0x4E, 0xB6, 0x22, 0x60, -0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, 0x52, 0x75, 0xE6, 0x60, -0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, 0x56, 0x35, 0xAA, 0x60, -0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, 0x59, 0xFE, 0xA8, 0xE0, -0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, 0x5D, 0xBE, 0x6C, 0xE0, -0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, 0x61, 0x87, 0x6B, 0x60, -0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, 0x65, 0x47, 0x2F, 0x60, -0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, 0x69, 0x06, 0xF3, 0x60, -0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, 0x6C, 0xCF, 0xF1, 0xE0, -0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, 0x70, 0x8F, 0xB5, 0xE0, -0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, -0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, -0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, -0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x94, 0x00, 0x00, 0xFF, -0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, -0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, -0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, -0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, -0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x72, 0xEE, 0x78, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xB8, 0x93, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x87, 0x2E, -0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xB1, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x94, 0x06, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x55, 0xA9, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x86, 0x5D, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x28, 0x78, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x66, 0x3F, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x0C, 0x4E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x46, 0x21, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEC, 0x30, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x1C, 0xC9, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x4D, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xFC, 0xAB, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xB5, 0x2F, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xDC, 0x8D, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x95, 0x11, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xBC, 0x6F, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x25, 0x13, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xCF, 0xEE, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xAA, -0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xA3, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0x8C, -0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0x85, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x6E, -0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x33, 0x76, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x13, 0x74, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x29, 0x0A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x12, 0x26, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, -0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, -0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, -0x70, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, -0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xC1, -0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xA3, -0x70, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, -0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, -0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, -0x70, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, -0x70, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, -0x70, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, -0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, -0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, -0x70, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, -0x70, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, -0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, -0x70, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, -0x70, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, -0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, -0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, -0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x8A, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x6C, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x89, -0x70, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x6B, -0x70, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x4D, -0x70, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, -0x70, 0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, -0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, -0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, -0x70, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, -0x70, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, -0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, -0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, -0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, -0x70, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, -0xF0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, -0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, -0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, -0x70, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, -0x70, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, -0x70, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, -0x70, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0xFF, 0xFF, 0xB5, 0x94, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, -0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, -0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x45, -0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, -0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xAF, 0x9A, 0x6D, 0x00, 0x9C, 0xA1, 0xA8, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x93, 0x37, 0x42, 0x8A, +0xCB, 0xF4, 0xEF, 0x50, 0xD0, 0xFA, 0x47, 0xC0, 0xD1, 0x23, 0x34, 0x50, 0xD2, 0x23, 0xF4, 0x70, +0xD2, 0x78, 0x9A, 0xC0, 0xF5, 0x4F, 0x78, 0x70, 0xF6, 0x3F, 0x5B, 0x60, 0xF7, 0x2F, 0x5A, 0x70, +0xF8, 0x28, 0x77, 0xE0, 0xF9, 0x0F, 0x3C, 0x70, 0xFA, 0x08, 0x59, 0xE0, 0xFA, 0xF8, 0x58, 0xF0, +0xFB, 0xE8, 0x3B, 0xE0, 0xFC, 0xD8, 0x3A, 0xF0, 0xFD, 0xC8, 0x1D, 0xE0, 0xFE, 0xB8, 0x1C, 0xF0, +0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x97, 0xFE, 0xF0, 0x01, 0x87, 0xE1, 0xE0, 0x02, 0x77, 0xE0, 0xF0, +0x03, 0x70, 0xFE, 0x60, 0x04, 0x60, 0xFD, 0x70, 0x05, 0x50, 0xE0, 0x60, 0x06, 0x40, 0xDF, 0x70, +0x07, 0x30, 0xC2, 0x60, 0x08, 0x20, 0xC1, 0x70, 0x09, 0x10, 0xA4, 0x60, 0x0A, 0x00, 0xA3, 0x70, +0x0A, 0xF0, 0x86, 0x60, 0x0B, 0xE0, 0x85, 0x70, 0x0C, 0xD9, 0xA2, 0xE0, 0x0D, 0xC0, 0x67, 0x70, +0x0E, 0xB9, 0x84, 0xE0, 0x0F, 0xA9, 0x83, 0xF0, 0x10, 0x99, 0x66, 0xE0, 0x11, 0x89, 0x65, 0xF0, +0x12, 0x79, 0x48, 0xE0, 0x13, 0x69, 0x47, 0xF0, 0x14, 0x59, 0x2A, 0xE0, 0x15, 0x49, 0x29, 0xF0, +0x16, 0x39, 0x0C, 0xE0, 0x17, 0x29, 0x0B, 0xF0, 0x18, 0x22, 0x29, 0x60, 0x19, 0x08, 0xED, 0xF0, +0x1A, 0x02, 0x0B, 0x60, 0x1A, 0xF2, 0x0A, 0x70, 0x1B, 0xE1, 0xED, 0x60, 0x1C, 0xD1, 0xEC, 0x70, +0x1D, 0xC1, 0xCF, 0x60, 0x1E, 0xB1, 0xCE, 0x70, 0x1F, 0xA1, 0xB1, 0x60, 0x20, 0x76, 0x00, 0xF0, +0x21, 0x81, 0x93, 0x60, 0x22, 0x55, 0xE2, 0xF0, 0x23, 0x6A, 0xAF, 0xE0, 0x24, 0x35, 0xC4, 0xF0, +0x25, 0x4A, 0x91, 0xE0, 0x26, 0x15, 0xA6, 0xF0, 0x27, 0x2A, 0x73, 0xE0, 0x27, 0xFE, 0xC3, 0x70, +0x29, 0x0A, 0x55, 0xE0, 0x29, 0xDE, 0xA5, 0x70, 0x2A, 0xEA, 0x37, 0xE0, 0x2B, 0xBE, 0x87, 0x70, +0x2C, 0xD3, 0x54, 0x60, 0x2D, 0x9E, 0x69, 0x70, 0x2E, 0xB3, 0x36, 0x60, 0x2F, 0x7E, 0x4B, 0x70, +0x30, 0x93, 0x18, 0x60, 0x31, 0x67, 0x67, 0xF0, 0x32, 0x72, 0xFA, 0x60, 0x33, 0x47, 0x49, 0xF0, +0x34, 0x52, 0xDC, 0x60, 0x35, 0x27, 0x2B, 0xF0, 0x36, 0x32, 0xBE, 0x60, 0x37, 0x07, 0x0D, 0xF0, +0x38, 0x1B, 0xDA, 0xE0, 0x38, 0xE6, 0xEF, 0xF0, 0x39, 0xFB, 0xBC, 0xE0, 0x3A, 0xC6, 0xD1, 0xF0, +0x3B, 0xDB, 0x9E, 0xE0, 0x3C, 0xAF, 0xEE, 0x70, 0x3D, 0xBB, 0x80, 0xE0, 0x3E, 0x8F, 0xD0, 0x70, +0x3F, 0x9B, 0x62, 0xE0, 0x40, 0x6F, 0xB2, 0x70, 0x41, 0x84, 0x7F, 0x60, 0x42, 0x4F, 0x94, 0x70, +0x43, 0x64, 0x61, 0x60, 0x44, 0x2F, 0x76, 0x70, 0x45, 0x44, 0x43, 0x60, 0x45, 0xF3, 0xA8, 0xF0, +0x47, 0x2D, 0x5F, 0xE0, 0x47, 0xD3, 0x8A, 0xF0, 0x49, 0x0D, 0x41, 0xE0, 0x49, 0xB3, 0x6C, 0xF0, +0x4A, 0xED, 0x23, 0xE0, 0x4B, 0x9C, 0x89, 0x70, 0x4C, 0xD6, 0x40, 0x60, 0x4D, 0x7C, 0x6B, 0x70, +0x4E, 0xB6, 0x22, 0x60, 0x4F, 0x5C, 0x4D, 0x70, 0x50, 0x96, 0x04, 0x60, 0x51, 0x3C, 0x2F, 0x70, +0x52, 0x75, 0xE6, 0x60, 0x53, 0x1C, 0x11, 0x70, 0x54, 0x55, 0xC8, 0x60, 0x54, 0xFB, 0xF3, 0x70, +0x56, 0x35, 0xAA, 0x60, 0x56, 0xE5, 0x0F, 0xF0, 0x58, 0x1E, 0xC6, 0xE0, 0x58, 0xC4, 0xF1, 0xF0, +0x59, 0xFE, 0xA8, 0xE0, 0x5A, 0xA4, 0xD3, 0xF0, 0x5B, 0xDE, 0x8A, 0xE0, 0x5C, 0x84, 0xB5, 0xF0, +0x5D, 0xBE, 0x6C, 0xE0, 0x5E, 0x64, 0x97, 0xF0, 0x5F, 0x9E, 0x4E, 0xE0, 0x60, 0x4D, 0xB4, 0x70, +0x61, 0x87, 0x6B, 0x60, 0x62, 0x2D, 0x96, 0x70, 0x63, 0x67, 0x4D, 0x60, 0x64, 0x0D, 0x78, 0x70, +0x65, 0x47, 0x2F, 0x60, 0x65, 0xED, 0x5A, 0x70, 0x67, 0x27, 0x11, 0x60, 0x67, 0xCD, 0x3C, 0x70, +0x69, 0x06, 0xF3, 0x60, 0x69, 0xAD, 0x1E, 0x70, 0x6A, 0xE6, 0xD5, 0x60, 0x6B, 0x96, 0x3A, 0xF0, +0x6C, 0xCF, 0xF1, 0xE0, 0x6D, 0x76, 0x1C, 0xF0, 0x6E, 0xAF, 0xD3, 0xE0, 0x6F, 0x55, 0xFE, 0xF0, +0x70, 0x8F, 0xB5, 0xE0, 0x71, 0x35, 0xE0, 0xF0, 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, +0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, +0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, +0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, 0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, +0x7F, 0x98, 0x00, 0x60, 0x02, 0x01, 0x02, 0x01, 0x03, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0xFF, 0xFF, +0xB7, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, +0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, +0x45, 0x57, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0x00, 0x00, +0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x42, 0x8A, 0xFF, 0xFF, +0xFF, 0xFF, 0xCB, 0xF4, 0xEF, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0xFA, 0x47, 0xC0, 0xFF, 0xFF, +0xFF, 0xFF, 0xD1, 0x23, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, +0xFF, 0xFF, 0xD2, 0x78, 0x9A, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, 0xFF, +0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, 0xFF, +0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, 0xFF, +0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, +0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, +0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, +0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, 0x00, 0x00, +0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, +0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xC1, 0x70, 0x00, 0x00, +0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0xA3, 0x70, 0x00, 0x00, +0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, +0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, 0x00, +0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, 0x00, 0x00, +0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, 0x00, 0x00, +0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, 0x00, 0x00, +0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, 0x00, 0x00, +0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, 0x00, 0x00, +0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, 0x00, 0x00, +0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, 0x00, 0x00, +0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, 0x00, 0x00, +0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, 0x00, 0x00, +0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, 0x00, 0x00, +0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, +0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, +0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, +0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x8A, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x6C, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x89, 0x70, 0x00, 0x00, +0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x6B, 0x70, 0x00, 0x00, +0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x4D, 0x70, 0x00, 0x00, +0x00, 0x00, 0x50, 0x96, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, 0x70, 0x00, 0x00, +0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, 0x70, 0x00, 0x00, +0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, 0x70, 0x00, 0x00, +0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00, +0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, 0x00, 0x00, +0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, 0x00, 0x00, +0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, 0x00, 0x00, +0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00, +0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00, +0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00, +0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00, +0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00, +0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00, +0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00, +0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00, +0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00, +0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x02, 0x01, 0x02, 0x01, 0x03, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, +0xFF, 0xFF, 0xB7, 0x76, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, +0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, +0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x45, 0x44, +0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x45, 0x53, 0x54, +0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, +0x31, 0x2E, 0x30, 0x0A, 0x00, 0xAF, 0x9A, 0x6D, 0x00, 0x9C, 0xA1, 0xA8, 0x00, 0x00, 0x00, 0x00, + /* America/New_York */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, 0x9E, 0xA6, 0x1E, 0x70, 0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x86, 0x00, 0x70, 0xA1, 0x9A, 0xCD, 0x60, 0xA2, 0x65, 0xE2, 0x70, 0xA3, 0x83, 0xE9, 0xE0, 0xA4, 0x6A, 0xAE, 0x70, 0xA5, 0x35, 0xA7, 0x60, 0xA6, 0x53, 0xCA, 0xF0, 0xA7, 0x15, 0x89, 0x60, 0xA8, 0x33, 0xAC, 0xF0, 0xA8, 0xFE, 0xA5, 0xE0, @@ -35537,10 +35271,10 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, -0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x02, 0x01, 0x02, 0x01, +0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, @@ -35553,149 +35287,150 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, -0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, -0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, -0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, -0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, -0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, -0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, -0x00, 0x00, 0x00, 0x00, 0x07, 0x8D, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, -0x00, 0x00, 0x00, 0x00, 0x09, 0xAD, 0x94, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, -0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, -0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, -0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, -0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, -0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, -0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, -0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, -0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, -0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, -0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, -0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x8A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x6C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x89, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, -0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x6B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, -0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x4D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x04, 0x60, -0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, -0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, -0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, -0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, -0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, -0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, -0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x11, 0x60, -0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, -0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0x96, 0x60, -0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x78, 0x60, -0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, -0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, -0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, -0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, +0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, +0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, +0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, +0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, +0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, +0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8D, 0x19, 0x70, +0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAD, 0x94, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, +0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, +0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, +0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, +0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, +0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, +0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, +0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, +0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, +0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, +0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, +0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, +0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, +0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, +0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, +0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x8A, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x6C, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x89, 0x70, +0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x6B, 0x70, +0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x4D, 0x70, +0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, 0x70, +0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, 0x70, +0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, 0x70, +0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, +0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, +0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, +0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, +0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, +0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, +0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, +0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, +0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, +0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, +0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, +0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, +0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, +0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, +0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, +0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0xC7, 0x74, 0x38, 0x00, 0xA1, 0xBB, 0xC1, 0x00, 0x00, 0x00, 0x14, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x28, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, @@ -37013,22 +36748,16 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Port_of_Spain */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x99, 0x94, 0x68, 0x00, 0xB4, 0xCA, 0x8D, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x33, 0xAC, +0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xAC, 0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0x99, 0x94, 0x68, 0x00, 0xB4, 0xCA, 0x8D, 0x00, 0x00, 0x00, 0x00, + /* America/Porto_Acre */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -37135,125 +36864,126 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Punta_Arenas */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, 0x8F, 0x30, 0x47, 0x45, 0x9B, 0x5C, 0xE5, 0x50, 0x9F, 0x7C, 0xE2, 0xC5, 0xA1, 0x00, 0x71, 0xC0, 0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, -0xCC, 0x6C, 0xE7, 0xD0, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, 0xFD, 0xD1, 0x3C, 0x40, -0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x72, 0xDC, 0xB0, 0x01, 0x75, 0x50, 0xC0, -0x02, 0x40, 0x49, 0xB0, 0x03, 0x55, 0x32, 0xC0, 0x04, 0x20, 0x2B, 0xB0, 0x05, 0x3E, 0x4F, 0x40, -0x06, 0x00, 0x0D, 0xB0, 0x07, 0x0B, 0xBC, 0x40, 0x07, 0xDF, 0xEF, 0xB0, 0x08, 0xFE, 0x13, 0x40, -0x09, 0xBF, 0xD1, 0xB0, 0x0A, 0xDD, 0xF5, 0x40, 0x0B, 0xA8, 0xEE, 0x30, 0x0C, 0xBD, 0xD7, 0x40, -0x0D, 0x88, 0xD0, 0x30, 0x0E, 0x9D, 0xB9, 0x40, 0x0F, 0x68, 0xB2, 0x30, 0x10, 0x86, 0xD5, 0xC0, -0x11, 0x48, 0x94, 0x30, 0x12, 0x66, 0xB7, 0xC0, 0x13, 0x28, 0x76, 0x30, 0x14, 0x46, 0x99, 0xC0, -0x15, 0x11, 0x92, 0xB0, 0x16, 0x26, 0x7B, 0xC0, 0x16, 0xF1, 0x74, 0xB0, 0x18, 0x06, 0x5D, 0xC0, -0x18, 0xD1, 0x56, 0xB0, 0x19, 0xE6, 0x3F, 0xC0, 0x1A, 0xB1, 0x38, 0xB0, 0x1B, 0xCF, 0x5C, 0x40, -0x1C, 0x91, 0x1A, 0xB0, 0x1D, 0xAF, 0x3E, 0x40, 0x1E, 0x70, 0xFC, 0xB0, 0x1F, 0x8F, 0x20, 0x40, -0x20, 0x7F, 0x03, 0x30, 0x21, 0x6F, 0x02, 0x40, 0x22, 0x39, 0xFB, 0x30, 0x23, 0x4E, 0xE4, 0x40, -0x24, 0x19, 0xDD, 0x30, 0x25, 0x38, 0x00, 0xC0, 0x25, 0xF9, 0xBF, 0x30, 0x26, 0xF2, 0xF8, 0xC0, -0x27, 0xD9, 0xA1, 0x30, 0x28, 0xF7, 0xC4, 0xC0, 0x29, 0xC2, 0xBD, 0xB0, 0x2A, 0xD7, 0xA6, 0xC0, -0x2B, 0xA2, 0x9F, 0xB0, 0x2C, 0xB7, 0x88, 0xC0, 0x2D, 0x82, 0x81, 0xB0, 0x2E, 0x97, 0x6A, 0xC0, -0x2F, 0x62, 0x63, 0xB0, 0x30, 0x80, 0x87, 0x40, 0x31, 0x42, 0x45, 0xB0, 0x32, 0x60, 0x69, 0x40, -0x33, 0x3D, 0xD7, 0x30, 0x34, 0x40, 0x4B, 0x40, 0x35, 0x0B, 0x44, 0x30, 0x36, 0x0D, 0xB8, 0x40, -0x37, 0x06, 0xD5, 0xB0, 0x38, 0x00, 0x0F, 0x40, 0x38, 0xCB, 0x08, 0x30, 0x39, 0xE9, 0x2B, 0xC0, -0x3A, 0xAA, 0xEA, 0x30, 0x3B, 0xC9, 0x0D, 0xC0, 0x3C, 0x8A, 0xCC, 0x30, 0x3D, 0xA8, 0xEF, 0xC0, -0x3E, 0x6A, 0xAE, 0x30, 0x3F, 0x88, 0xD1, 0xC0, 0x40, 0x53, 0xCA, 0xB0, 0x41, 0x68, 0xB3, 0xC0, -0x42, 0x33, 0xAC, 0xB0, 0x43, 0x48, 0x95, 0xC0, 0x44, 0x13, 0x8E, 0xB0, 0x45, 0x31, 0xB2, 0x40, -0x45, 0xF3, 0x70, 0xB0, 0x47, 0x11, 0x94, 0x40, 0x47, 0xEF, 0x02, 0x30, 0x48, 0xF1, 0x76, 0x40, -0x49, 0xBC, 0x6F, 0x30, 0x4A, 0xD1, 0x58, 0x40, 0x4B, 0xB8, 0x00, 0xB0, 0x4C, 0xB1, 0x3A, 0x40, -0x4D, 0xC6, 0x07, 0x30, 0x4E, 0x50, 0x82, 0xC0, 0x4F, 0x9C, 0xAE, 0xB0, 0x50, 0x42, 0xD9, 0xC0, -0x51, 0x7C, 0x90, 0xB0, 0x52, 0x2B, 0xF6, 0x40, 0x53, 0x5C, 0x72, 0xB0, 0x54, 0x0B, 0xD8, 0x40, -0x57, 0x37, 0xE6, 0x30, 0x57, 0xAF, 0xEC, 0xC0, 0x58, 0x43, 0x86, 0xB0, 0x7F, 0xFF, 0xFF, 0xFF, -0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, -0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, -0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, -0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, -0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, -0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x1D, 0xFC, 0xFF, 0xFF, 0xFF, -0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, 0xE5, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x71, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, 0x3D, 0x40, 0xFF, 0xFF, 0xFF, -0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, 0x70, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, 0xA4, 0x40, 0xFF, 0xFF, 0xFF, -0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB7, 0xE4, 0x9B, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, 0x5C, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xB9, 0xC7, 0x20, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x1C, 0x6E, 0x40, 0xFF, 0xFF, 0xFF, -0xFF, 0xCC, 0x6C, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, 0xFF, 0xFF, -0xFF, 0xD5, 0x76, 0x92, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, -0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x75, 0x50, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x02, 0x40, 0x49, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x55, 0x32, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x04, 0x20, 0x2B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x3E, 0x4F, 0x40, 0x00, 0x00, 0x00, -0x00, 0x06, 0x00, 0x0D, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0B, 0xBC, 0x40, 0x00, 0x00, 0x00, -0x00, 0x07, 0xDF, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xFE, 0x13, 0x40, 0x00, 0x00, 0x00, -0x00, 0x09, 0xBF, 0xD1, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xDD, 0xF5, 0x40, 0x00, 0x00, 0x00, -0x00, 0x0B, 0xA8, 0xEE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xBD, 0xD7, 0x40, 0x00, 0x00, 0x00, -0x00, 0x0D, 0x88, 0xD0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x9D, 0xB9, 0x40, 0x00, 0x00, 0x00, -0x00, 0x0F, 0x68, 0xB2, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x86, 0xD5, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x11, 0x48, 0x94, 0x30, 0x00, 0x00, 0x00, 0x00, 0x12, 0x66, 0xB7, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x13, 0x28, 0x76, 0x30, 0x00, 0x00, 0x00, 0x00, 0x14, 0x46, 0x99, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x15, 0x11, 0x92, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x26, 0x7B, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x16, 0xF1, 0x74, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x5D, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x18, 0xD1, 0x56, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xE6, 0x3F, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x1A, 0xB1, 0x38, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xCF, 0x5C, 0x40, 0x00, 0x00, 0x00, -0x00, 0x1C, 0x91, 0x1A, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xAF, 0x3E, 0x40, 0x00, 0x00, 0x00, -0x00, 0x1E, 0x70, 0xFC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x8F, 0x20, 0x40, 0x00, 0x00, 0x00, -0x00, 0x20, 0x7F, 0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x21, 0x6F, 0x02, 0x40, 0x00, 0x00, 0x00, -0x00, 0x22, 0x39, 0xFB, 0x30, 0x00, 0x00, 0x00, 0x00, 0x23, 0x4E, 0xE4, 0x40, 0x00, 0x00, 0x00, -0x00, 0x24, 0x19, 0xDD, 0x30, 0x00, 0x00, 0x00, 0x00, 0x25, 0x38, 0x00, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x25, 0xF9, 0xBF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x26, 0xF2, 0xF8, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x27, 0xD9, 0xA1, 0x30, 0x00, 0x00, 0x00, 0x00, 0x28, 0xF7, 0xC4, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x29, 0xC2, 0xBD, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xD7, 0xA6, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x2B, 0xA2, 0x9F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xB7, 0x88, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x2D, 0x82, 0x81, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x97, 0x6A, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x2F, 0x62, 0x63, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x87, 0x40, 0x00, 0x00, 0x00, -0x00, 0x31, 0x42, 0x45, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x60, 0x69, 0x40, 0x00, 0x00, 0x00, -0x00, 0x33, 0x3D, 0xD7, 0x30, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x4B, 0x40, 0x00, 0x00, 0x00, -0x00, 0x35, 0x0B, 0x44, 0x30, 0x00, 0x00, 0x00, 0x00, 0x36, 0x0D, 0xB8, 0x40, 0x00, 0x00, 0x00, -0x00, 0x37, 0x06, 0xD5, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x00, -0x00, 0x38, 0xCB, 0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE9, 0x2B, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x3A, 0xAA, 0xEA, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xC9, 0x0D, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x3C, 0x8A, 0xCC, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xA8, 0xEF, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x3E, 0x6A, 0xAE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x88, 0xD1, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x40, 0x53, 0xCA, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x68, 0xB3, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x42, 0x33, 0xAC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x95, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x44, 0x13, 0x8E, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x31, 0xB2, 0x40, 0x00, 0x00, 0x00, -0x00, 0x45, 0xF3, 0x70, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x11, 0x94, 0x40, 0x00, 0x00, 0x00, -0x00, 0x47, 0xEF, 0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF1, 0x76, 0x40, 0x00, 0x00, 0x00, -0x00, 0x49, 0xBC, 0x6F, 0x30, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xD1, 0x58, 0x40, 0x00, 0x00, 0x00, -0x00, 0x4B, 0xB8, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xB1, 0x3A, 0x40, 0x00, 0x00, 0x00, -0x00, 0x4D, 0xC6, 0x07, 0x30, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x50, 0x82, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x4F, 0x9C, 0xAE, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x42, 0xD9, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x51, 0x7C, 0x90, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x2B, 0xF6, 0x40, 0x00, 0x00, 0x00, -0x00, 0x53, 0x5C, 0x72, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, 0x00, 0x00, -0x00, 0x57, 0x37, 0xE6, 0x30, 0x00, 0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, 0x00, 0x00, -0x00, 0x58, 0x43, 0x86, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, -0x03, 0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, +0xCC, 0x6C, 0xE7, 0xD0, 0xD4, 0x17, 0xE3, 0x40, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, +0xFD, 0xD1, 0x3C, 0x40, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x72, 0xDC, 0xB0, +0x01, 0x75, 0x50, 0xC0, 0x02, 0x40, 0x49, 0xB0, 0x03, 0x55, 0x32, 0xC0, 0x04, 0x20, 0x2B, 0xB0, +0x05, 0x3E, 0x4F, 0x40, 0x06, 0x00, 0x0D, 0xB0, 0x07, 0x0B, 0xBC, 0x40, 0x07, 0xDF, 0xEF, 0xB0, +0x08, 0xFE, 0x13, 0x40, 0x09, 0xBF, 0xD1, 0xB0, 0x0A, 0xDD, 0xF5, 0x40, 0x0B, 0xA8, 0xEE, 0x30, +0x0C, 0xBD, 0xD7, 0x40, 0x0D, 0x88, 0xD0, 0x30, 0x0E, 0x9D, 0xB9, 0x40, 0x0F, 0x68, 0xB2, 0x30, +0x10, 0x86, 0xD5, 0xC0, 0x11, 0x48, 0x94, 0x30, 0x12, 0x66, 0xB7, 0xC0, 0x13, 0x28, 0x76, 0x30, +0x14, 0x46, 0x99, 0xC0, 0x15, 0x11, 0x92, 0xB0, 0x16, 0x26, 0x7B, 0xC0, 0x16, 0xF1, 0x74, 0xB0, +0x18, 0x06, 0x5D, 0xC0, 0x18, 0xD1, 0x56, 0xB0, 0x19, 0xE6, 0x3F, 0xC0, 0x1A, 0xB1, 0x38, 0xB0, +0x1B, 0xCF, 0x5C, 0x40, 0x1C, 0x91, 0x1A, 0xB0, 0x1D, 0xAF, 0x3E, 0x40, 0x1E, 0x70, 0xFC, 0xB0, +0x1F, 0x8F, 0x20, 0x40, 0x20, 0x7F, 0x03, 0x30, 0x21, 0x6F, 0x02, 0x40, 0x22, 0x39, 0xFB, 0x30, +0x23, 0x4E, 0xE4, 0x40, 0x24, 0x19, 0xDD, 0x30, 0x25, 0x38, 0x00, 0xC0, 0x25, 0xF9, 0xBF, 0x30, +0x26, 0xF2, 0xF8, 0xC0, 0x27, 0xD9, 0xA1, 0x30, 0x28, 0xF7, 0xC4, 0xC0, 0x29, 0xC2, 0xBD, 0xB0, +0x2A, 0xD7, 0xA6, 0xC0, 0x2B, 0xA2, 0x9F, 0xB0, 0x2C, 0xB7, 0x88, 0xC0, 0x2D, 0x82, 0x81, 0xB0, +0x2E, 0x97, 0x6A, 0xC0, 0x2F, 0x62, 0x63, 0xB0, 0x30, 0x80, 0x87, 0x40, 0x31, 0x42, 0x45, 0xB0, +0x32, 0x60, 0x69, 0x40, 0x33, 0x3D, 0xD7, 0x30, 0x34, 0x40, 0x4B, 0x40, 0x35, 0x0B, 0x44, 0x30, +0x36, 0x0D, 0xB8, 0x40, 0x37, 0x06, 0xD5, 0xB0, 0x38, 0x00, 0x0F, 0x40, 0x38, 0xCB, 0x08, 0x30, +0x39, 0xE9, 0x2B, 0xC0, 0x3A, 0xAA, 0xEA, 0x30, 0x3B, 0xC9, 0x0D, 0xC0, 0x3C, 0x8A, 0xCC, 0x30, +0x3D, 0xA8, 0xEF, 0xC0, 0x3E, 0x6A, 0xAE, 0x30, 0x3F, 0x88, 0xD1, 0xC0, 0x40, 0x53, 0xCA, 0xB0, +0x41, 0x68, 0xB3, 0xC0, 0x42, 0x33, 0xAC, 0xB0, 0x43, 0x48, 0x95, 0xC0, 0x44, 0x13, 0x8E, 0xB0, +0x45, 0x31, 0xB2, 0x40, 0x45, 0xF3, 0x70, 0xB0, 0x47, 0x11, 0x94, 0x40, 0x47, 0xEF, 0x02, 0x30, +0x48, 0xF1, 0x76, 0x40, 0x49, 0xBC, 0x6F, 0x30, 0x4A, 0xD1, 0x58, 0x40, 0x4B, 0xB8, 0x00, 0xB0, +0x4C, 0xB1, 0x3A, 0x40, 0x4D, 0xC6, 0x07, 0x30, 0x4E, 0x50, 0x82, 0xC0, 0x4F, 0x9C, 0xAE, 0xB0, +0x50, 0x42, 0xD9, 0xC0, 0x51, 0x7C, 0x90, 0xB0, 0x52, 0x2B, 0xF6, 0x40, 0x53, 0x5C, 0x72, 0xB0, +0x54, 0x0B, 0xD8, 0x40, 0x57, 0x37, 0xE6, 0x30, 0x57, 0xAF, 0xEC, 0xC0, 0x58, 0x43, 0x86, 0xB0, +0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, +0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x04, 0x02, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, +0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, +0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, +0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, +0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x76, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, +0x1D, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x30, 0x47, 0x45, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x5C, +0xE5, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7C, 0xE2, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, +0x71, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x5E, 0x77, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x77, +0x3D, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x41, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x58, +0x70, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22, 0x34, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x39, +0xA4, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x03, 0x67, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x1A, +0xD7, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x9B, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, +0x5C, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x20, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x1C, +0x6E, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x17, +0xE3, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x76, +0x92, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, +0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, +0xDC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x75, 0x50, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, +0x49, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x55, 0x32, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x20, +0x2B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x3E, 0x4F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, +0x0D, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0B, 0xBC, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDF, +0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x08, 0xFE, 0x13, 0x40, 0x00, 0x00, 0x00, 0x00, 0x09, 0xBF, +0xD1, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xDD, 0xF5, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xA8, +0xEE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xBD, 0xD7, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x88, +0xD0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x9D, 0xB9, 0x40, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x68, +0xB2, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0x86, 0xD5, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x48, +0x94, 0x30, 0x00, 0x00, 0x00, 0x00, 0x12, 0x66, 0xB7, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x28, +0x76, 0x30, 0x00, 0x00, 0x00, 0x00, 0x14, 0x46, 0x99, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x11, +0x92, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x26, 0x7B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x16, 0xF1, +0x74, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x06, 0x5D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xD1, +0x56, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xE6, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xB1, +0x38, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xCF, 0x5C, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x91, +0x1A, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xAF, 0x3E, 0x40, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x70, +0xFC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x8F, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x20, 0x7F, +0x03, 0x30, 0x00, 0x00, 0x00, 0x00, 0x21, 0x6F, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x22, 0x39, +0xFB, 0x30, 0x00, 0x00, 0x00, 0x00, 0x23, 0x4E, 0xE4, 0x40, 0x00, 0x00, 0x00, 0x00, 0x24, 0x19, +0xDD, 0x30, 0x00, 0x00, 0x00, 0x00, 0x25, 0x38, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x25, 0xF9, +0xBF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x26, 0xF2, 0xF8, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xD9, +0xA1, 0x30, 0x00, 0x00, 0x00, 0x00, 0x28, 0xF7, 0xC4, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xC2, +0xBD, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xD7, 0xA6, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xA2, +0x9F, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xB7, 0x88, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x82, +0x81, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x97, 0x6A, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x62, +0x63, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x80, 0x87, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x42, +0x45, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x60, 0x69, 0x40, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, +0xD7, 0x30, 0x00, 0x00, 0x00, 0x00, 0x34, 0x40, 0x4B, 0x40, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0B, +0x44, 0x30, 0x00, 0x00, 0x00, 0x00, 0x36, 0x0D, 0xB8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x37, 0x06, +0xD5, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x38, 0xCB, +0x08, 0x30, 0x00, 0x00, 0x00, 0x00, 0x39, 0xE9, 0x2B, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xAA, +0xEA, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xC9, 0x0D, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x8A, +0xCC, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xA8, 0xEF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x6A, +0xAE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x88, 0xD1, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x53, +0xCA, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x41, 0x68, 0xB3, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x42, 0x33, +0xAC, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x95, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x44, 0x13, +0x8E, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x45, 0x31, 0xB2, 0x40, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, +0x70, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x11, 0x94, 0x40, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEF, +0x02, 0x30, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF1, 0x76, 0x40, 0x00, 0x00, 0x00, 0x00, 0x49, 0xBC, +0x6F, 0x30, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xD1, 0x58, 0x40, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xB8, +0x00, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xB1, 0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xC6, +0x07, 0x30, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x50, 0x82, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x9C, +0xAE, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x42, 0xD9, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x7C, +0x90, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x52, 0x2B, 0xF6, 0x40, 0x00, 0x00, 0x00, 0x00, 0x53, 0x5C, +0x72, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x54, 0x0B, 0xD8, 0x40, 0x00, 0x00, 0x00, 0x00, 0x57, 0x37, +0xE6, 0x30, 0x00, 0x00, 0x00, 0x00, 0x57, 0xAF, 0xEC, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x43, +0x86, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, +0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x04, 0x02, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x07, 0x07, 0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, -0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, -0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, -0x00, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, -0x34, 0x00, 0x2D, 0x30, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x33, 0x0A, 0x00, 0x38, -0x3A, 0x88, 0x00, 0xA6, 0x72, 0xAD, 0x00, 0x00, 0x00, 0x14, 0x52, 0x65, 0x67, 0x69, 0x6F, 0x6E, -0x20, 0x6F, 0x66, 0x20, 0x4D, 0x61, 0x67, 0x61, 0x6C, 0x6C, 0x61, 0x6E, 0x65, 0x73, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x07, 0x07, +0xFF, 0xFF, 0xBD, 0x84, 0x00, 0x00, 0xFF, 0xFF, 0xBD, 0xBB, 0x00, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, +0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, +0xD5, 0xD0, 0x01, 0x10, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x0C, 0xFF, 0xFF, 0xD5, 0xD0, 0x00, 0x10, +0x4C, 0x4D, 0x54, 0x00, 0x53, 0x4D, 0x54, 0x00, 0x2D, 0x30, 0x35, 0x00, 0x2D, 0x30, 0x34, 0x00, +0x2D, 0x30, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 0x00, 0x0A, 0x3C, 0x2D, 0x30, 0x33, 0x3E, 0x33, 0x0A, 0x00, 0x38, 0x3A, 0x88, +0x00, 0xA6, 0x72, 0xAD, 0x00, 0x00, 0x00, 0x14, 0x52, 0x65, 0x67, 0x69, 0x6F, 0x6E, 0x20, 0x6F, +0x66, 0x20, 0x4D, 0x61, 0x67, 0x61, 0x6C, 0x6C, 0x61, 0x6E, 0x65, 0x73, /* America/Rainy_River */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -38068,7 +37798,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, -0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, +0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x17, 0xD5, 0x30, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, 0xFD, 0xD1, 0x3C, 0x40, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x72, 0xDC, 0xB0, 0x01, 0x75, 0x50, 0xC0, 0x02, 0x40, 0x49, 0xB0, 0x03, 0x55, 0x32, 0xC0, 0x04, 0x20, 0x2B, 0xB0, 0x05, 0x3E, 0x4F, 0x40, 0x06, 0x00, 0x0D, 0xB0, 0x07, 0x0B, 0xBC, 0x40, @@ -38095,7 +37825,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x53, 0x5C, 0x72, 0xB0, 0x54, 0x0B, 0xD8, 0x40, 0x57, 0x37, 0xE6, 0x30, 0x57, 0xAF, 0xEC, 0xC0, 0x59, 0x17, 0xC8, 0x30, 0x59, 0x8F, 0xCE, 0xC0, 0x5A, 0xF7, 0xAA, 0x30, 0x5B, 0x6F, 0xB0, 0xC0, 0x5C, 0xA9, 0x67, 0xB0, 0x5D, 0x74, 0x7C, 0xC0, 0x5E, 0x89, 0x49, 0xB0, 0x5F, 0x54, 0x5E, 0xC0, -0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x14, 0x22, 0xC0, +0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x1D, 0x5D, 0x40, 0x64, 0x28, 0xEF, 0xB0, 0x64, 0xF4, 0x04, 0xC0, 0x66, 0x12, 0x0C, 0x30, 0x66, 0xDD, 0x21, 0x40, 0x67, 0xF1, 0xEE, 0x30, 0x68, 0xBD, 0x03, 0x40, 0x69, 0xD1, 0xD0, 0x30, 0x6A, 0x9C, 0xE5, 0x40, 0x6B, 0xB1, 0xB2, 0x30, 0x6C, 0x7C, 0xC7, 0x40, 0x6D, 0x91, 0x94, 0x30, 0x6E, 0x5C, 0xA9, 0x40, @@ -38104,7 +37834,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x76, 0xFA, 0x38, 0xB0, 0x77, 0xC5, 0x4D, 0xC0, 0x78, 0xDA, 0x1A, 0xB0, 0x79, 0xA5, 0x2F, 0xC0, 0x7A, 0xC3, 0x37, 0x30, 0x7B, 0x85, 0x11, 0xC0, 0x7C, 0xA3, 0x19, 0x30, 0x7D, 0x6E, 0x2E, 0x40, 0x7E, 0x82, 0xFB, 0x30, 0x7F, 0x4E, 0x10, 0x40, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, -0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x03, +0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x02, 0x03, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, @@ -38131,7 +37861,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x9B, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, 0x5C, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x20, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x1C, 0x6E, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x1B, 0xC9, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, +0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x17, 0xD5, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x76, 0x92, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, 0x00, 0x00, 0x00, @@ -38186,7 +37916,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, 0x00, 0x00, 0x00, 0x00, -0x63, 0x14, 0x22, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, +0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x12, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x66, 0xDD, 0x21, 0x40, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xEE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBD, 0x03, 0x40, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0xD0, 0x30, 0x00, 0x00, 0x00, 0x00, @@ -38202,7 +37932,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x7B, 0x85, 0x11, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xA3, 0x19, 0x30, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x6E, 0x2E, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x82, 0xFB, 0x30, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x4E, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, -0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x03, +0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x02, 0x03, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, @@ -38784,22 +38514,16 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/St_Barthelemy */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA4, 0x9D, 0xED, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x33, 0xAC, +0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x33, 0xAC, 0x01, 0xFF, 0xFF, 0xC6, 0x54, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA4, 0x9D, 0xED, 0x00, 0xB2, 0xC1, 0xB8, 0x00, 0x00, 0x00, 0x00, + /* America/St_Johns */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -39037,77 +38761,57 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/St_Kitts */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA3, 0xBA, 0x10, 0x00, 0xB2, 0xF5, 0xCD, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x93, 0x37, 0x34, 0xCC, +0x01, 0xFF, 0xFF, 0xC5, 0x34, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x93, 0x37, 0x34, 0xCC, 0x01, 0xFF, 0xFF, 0xC5, 0x34, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA3, 0xBA, 0x10, 0x00, 0xB2, 0xF5, 0xCD, 0x00, 0x00, 0x00, 0x00, + /* America/St_Lucia */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, +0x92, 0xE6, 0xC7, 0xB0, 0x01, 0x02, 0xFF, 0xFF, 0xC6, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0xD0, +0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, +0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x14, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0xC7, 0xB0, +0x01, 0x02, 0xFF, 0xFF, 0xC6, 0xD0, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0xD0, 0x00, 0x04, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9E, 0xB7, 0x82, 0x00, 0xB5, 0x94, 0x60, 0x00, 0x00, 0x00, 0x00, /* America/St_Thomas */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA5, 0x54, 0x38, 0x00, 0xAF, 0x93, 0xEA, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x37, 0x60, +0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x37, 0x60, 0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA5, 0x54, 0x38, 0x00, 0xAF, 0x93, 0xEA, 0x00, 0x00, 0x00, 0x00, + /* America/St_Vincent */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, +0x92, 0xE6, 0xC7, 0xE8, 0x01, 0x02, 0xFF, 0xFF, 0xC6, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x98, +0x00, 0x04, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, +0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x87, 0x14, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0xC7, 0xE8, +0x01, 0x02, 0xFF, 0xFF, 0xC6, 0x98, 0x00, 0x00, 0xFF, 0xFF, 0xC6, 0x98, 0x00, 0x04, 0xFF, 0xFF, +0xC7, 0xC0, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x9D, 0x64, 0xF8, 0x00, 0xB5, 0x39, 0x3A, 0x00, 0x00, 0x00, 0x00, @@ -39787,22 +39491,16 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Tortola */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0xA5, 0x7B, 0x48, 0x00, 0xB0, 0x0F, 0x9D, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x37, 0x14, +0x01, 0xFF, 0xFF, 0xC3, 0x6C, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x37, 0x14, 0x01, 0xFF, 0xFF, 0xC3, 0x6C, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0xA5, 0x7B, 0x48, 0x00, 0xB0, 0x0F, 0x9D, 0x00, 0x00, 0x00, 0x00, + /* America/Vancouver */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -39992,22 +39690,16 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* America/Virgin */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x00, -0xCB, 0xF6, 0x32, 0xC0, 0xD2, 0x23, 0xF4, 0x70, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, -0x7A, 0xE6, 0x95, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF6, 0x32, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xED, 0xD0, 0x01, 0x03, 0x02, 0x01, -0xFF, 0xFF, 0xC2, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0xFF, 0xFF, 0xD5, 0xD0, -0x01, 0x08, 0xFF, 0xFF, 0xD5, 0xD0, 0x01, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, -0x41, 0x50, 0x54, 0x00, 0x41, 0x57, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, -0x0A, 0x41, 0x53, 0x54, 0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF4, 0x37, 0x60, +0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x41, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF4, 0x37, 0x60, 0x01, 0xFF, 0xFF, 0xC3, 0x20, 0x00, 0x00, +0xFF, 0xFF, 0xC7, 0xC0, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x41, 0x53, 0x54, 0x00, 0x0A, 0x41, +0x53, 0x54, 0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + /* America/Whitehorse */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x43, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -40627,18 +40319,18 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Antarctica/DumontDUrville */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, -0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x89, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD4, 0xBC, 0x76, 0x80, +0xDE, 0x34, 0x60, 0x60, 0xE7, 0x3C, 0x02, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x01, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, +0x2B, 0x31, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, -0x00, 0x03, 0x00, 0x00, 0x00, 0x0D, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x5A, 0x08, 0xFF, 0xFF, -0xFF, 0xFF, 0x72, 0xED, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, -0x02, 0x00, 0x00, 0x89, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x89, 0xF0, 0x00, 0x04, 0x00, 0x00, 0x8C, -0xA0, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4D, 0x4D, 0x54, 0x00, 0x2B, 0x31, 0x30, 0x00, -0x0A, 0x3C, 0x2B, 0x31, 0x30, 0x3E, 0x2D, 0x31, 0x30, 0x0A, 0x00, 0x23, 0x9A, 0x95, 0x01, 0xE8, -0x4E, 0x82, 0x00, 0x00, 0x00, 0x10, 0x44, 0x75, 0x6D, 0x6F, 0x6E, 0x74, 0x2D, 0x64, 0x27, 0x55, -0x72, 0x76, 0x69, 0x6C, 0x6C, 0x65, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, +0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0xBC, 0x76, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x34, 0x60, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x3C, 0x02, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, +0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, +0x2D, 0x30, 0x30, 0x00, 0x2B, 0x31, 0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x31, 0x30, 0x3E, 0x2D, 0x31, +0x30, 0x0A, 0x00, 0x23, 0x9A, 0x95, 0x01, 0xE8, 0x4E, 0x82, 0x00, 0x00, 0x00, 0x10, 0x44, 0x75, +0x6D, 0x6F, 0x6E, 0x74, 0x2D, 0x64, 0x27, 0x55, 0x72, 0x76, 0x69, 0x6C, 0x6C, 0x65, /* Antarctica/Macquarie */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -40804,15 +40496,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Antarctica/McMurdo */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0x00, -0xB0, 0xB4, 0xB2, 0xE8, 0xB1, 0x51, 0x87, 0x58, 0xB2, 0x78, 0xE5, 0x68, 0xB3, 0x43, 0xE5, 0x60, -0xB4, 0x58, 0xC7, 0x68, 0xB5, 0x23, 0xC7, 0x60, 0xB6, 0x38, 0xA9, 0x68, 0xB7, 0x03, 0xA9, 0x60, -0xB8, 0x18, 0x8B, 0x68, 0xB8, 0xEC, 0xC5, 0xE0, 0xB9, 0xF8, 0x6D, 0x68, 0xBA, 0xCC, 0xA7, 0xE0, -0xBB, 0xD8, 0x4F, 0x68, 0xBC, 0xE3, 0xE8, 0xE0, 0xBD, 0xAE, 0xF6, 0xE8, 0xBE, 0xC3, 0xCA, 0xE0, -0xBF, 0x8E, 0xD8, 0xE8, 0xC0, 0xA3, 0xAC, 0xE0, 0xC1, 0x6E, 0xBA, 0xE8, 0xC2, 0x83, 0x8E, 0xE0, -0xC3, 0x4E, 0x9C, 0xE8, 0xC4, 0x63, 0x70, 0xE0, 0xC5, 0x2E, 0x7E, 0xE8, 0xC6, 0x4C, 0x8D, 0x60, -0xC7, 0x0E, 0x60, 0xE8, 0xC8, 0x2C, 0x6F, 0x60, 0xC8, 0xF7, 0x7D, 0x68, 0xD2, 0xDA, 0x9A, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xE5, 0xA9, 0xE9, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, 0x0C, 0xD8, 0xC1, 0xE0, 0x0D, 0x7E, 0xDE, 0xE0, 0x0E, 0xB8, 0xA3, 0xE0, 0x0F, 0x5E, 0xC0, 0xE0, 0x10, 0x98, 0x85, 0xE0, 0x11, 0x3E, 0xA2, 0xE0, 0x12, 0x78, 0x67, 0xE0, 0x13, 0x1E, 0x84, 0xE0, @@ -40844,121 +40529,100 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x72, 0x40, 0x92, 0x60, 0x73, 0x39, 0xBD, 0xE0, 0x74, 0x20, 0x74, 0x60, 0x75, 0x19, 0x9F, 0xE0, 0x76, 0x00, 0x56, 0x60, 0x76, 0xF9, 0x81, 0xE0, 0x77, 0xE0, 0x38, 0x60, 0x78, 0xD9, 0x63, 0xE0, 0x79, 0xC0, 0x1A, 0x60, 0x7A, 0xB9, 0x45, 0xE0, 0x7B, 0xA9, 0x36, 0xE0, 0x7C, 0xA2, 0x62, 0x60, -0x7D, 0x89, 0x18, 0xE0, 0x7E, 0x82, 0x44, 0x60, 0x7F, 0x68, 0xFA, 0xE0, 0x02, 0x01, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00, 0x00, 0xA3, 0xD8, 0x00, 0x00, 0x00, 0x00, -0xAF, 0xC8, 0x01, 0x04, 0x00, 0x00, 0xA1, 0xB8, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, -0x00, 0x00, 0xB6, 0xD0, 0x01, 0x0E, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, 0x00, -0x4E, 0x5A, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, -0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, -0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xB7, 0x4C, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0xB4, 0xB2, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x51, 0x87, 0x58, -0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x78, 0xE5, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x43, 0xE5, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x58, 0xC7, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x23, 0xC7, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x38, 0xA9, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x03, 0xA9, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x18, 0x8B, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xEC, 0xC5, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xF8, 0x6D, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xCC, 0xA7, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0x4F, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE3, 0xE8, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAE, 0xF6, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC3, 0xCA, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8E, 0xD8, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA3, 0xAC, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6E, 0xBA, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x83, 0x8E, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4E, 0x9C, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x63, 0x70, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2E, 0x7E, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4C, 0x8D, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0E, 0x60, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2C, 0x6F, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF7, 0x7D, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xDA, 0x9A, 0x40, -0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAC, 0xA5, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0A, 0xEF, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x9E, 0xFC, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0C, 0xD8, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7E, 0xDE, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0E, 0xB8, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x5E, 0xC0, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x10, 0x98, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0xA2, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x12, 0x78, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x1E, 0x84, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x14, 0xFE, 0x66, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x16, 0xE7, 0x83, 0x60, -0x00, 0x00, 0x00, 0x00, 0x18, 0x21, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x18, 0xC7, 0x65, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1A, 0x01, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA7, 0x47, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x87, 0x29, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1D, 0xC0, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x67, 0x0B, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1F, 0xA0, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0xED, 0x60, -0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0xB2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x30, 0x09, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x23, 0x69, 0xCE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x0F, 0xEB, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x25, 0x2E, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x42, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x27, 0x0D, 0xE3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x27, 0xE2, 0x24, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x28, 0xED, 0xC5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x29, 0xC2, 0x06, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x2A, 0xCD, 0xA7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAB, 0x23, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2C, 0xAD, 0x89, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8B, 0x05, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2E, 0x8D, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6A, 0xE7, 0x60, -0x00, 0x00, 0x00, 0x00, 0x30, 0x6D, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x4A, 0xC9, 0x60, -0x00, 0x00, 0x00, 0x00, 0x32, 0x56, 0x69, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x2A, 0xAB, 0x60, -0x00, 0x00, 0x00, 0x00, 0x34, 0x36, 0x4B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0A, 0x8D, 0x60, -0x00, 0x00, 0x00, 0x00, 0x36, 0x16, 0x2D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF3, 0xA9, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x37, 0xF6, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD3, 0x8B, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x39, 0xD5, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB3, 0x6D, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3B, 0xBF, 0x0E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x93, 0x4F, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3D, 0x9E, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x73, 0x31, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3F, 0x7E, 0xD2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0x4E, 0x60, -0x00, 0x00, 0x00, 0x00, 0x41, 0x5E, 0xB4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3C, 0x30, 0x60, -0x00, 0x00, 0x00, 0x00, 0x43, 0x3E, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1C, 0x12, 0x60, -0x00, 0x00, 0x00, 0x00, 0x45, 0x1E, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFB, 0xF4, 0x60, -0x00, 0x00, 0x00, 0x00, 0x46, 0xFE, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF7, 0x85, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x48, 0xDE, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD7, 0x67, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4A, 0xBE, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xB7, 0x49, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4C, 0x9E, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0x2B, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4E, 0x7D, 0xE2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x77, 0x0D, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x50, 0x66, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x60, 0x2A, 0x60, -0x00, 0x00, 0x00, 0x00, 0x52, 0x46, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x40, 0x0C, 0x60, -0x00, 0x00, 0x00, 0x00, 0x54, 0x26, 0xC2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x1F, 0xEE, 0x60, -0x00, 0x00, 0x00, 0x00, 0x56, 0x06, 0xA4, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xD0, 0x60, -0x00, 0x00, 0x00, 0x00, 0x57, 0xE6, 0x86, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xDF, 0xB2, 0x60, -0x00, 0x00, 0x00, 0x00, 0x59, 0xC6, 0x68, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xBF, 0x94, 0x60, -0x00, 0x00, 0x00, 0x00, 0x5B, 0xAF, 0x85, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA8, 0xB0, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5D, 0x8F, 0x67, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x88, 0x92, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5F, 0x6F, 0x49, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x68, 0x74, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x61, 0x4F, 0x2B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x48, 0x56, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x63, 0x2F, 0x0D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0x38, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x65, 0x0E, 0xEF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x11, 0x55, 0x60, -0x00, 0x00, 0x00, 0x00, 0x66, 0xF8, 0x0B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0x37, 0x60, -0x00, 0x00, 0x00, 0x00, 0x68, 0xD7, 0xED, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0x19, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6A, 0xB7, 0xCF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xB0, 0xFB, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6C, 0x97, 0xB1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x90, 0xDD, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6E, 0x77, 0x93, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x70, 0xBF, 0x60, -0x00, 0x00, 0x00, 0x00, 0x70, 0x60, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x71, 0x59, 0xDB, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x72, 0x40, 0x92, 0x60, 0x00, 0x00, 0x00, 0x00, 0x73, 0x39, 0xBD, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x74, 0x20, 0x74, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x19, 0x9F, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x56, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF9, 0x81, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x77, 0xE0, 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD9, 0x63, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x79, 0xC0, 0x1A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB9, 0x45, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x7B, 0xA9, 0x36, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xA2, 0x62, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7D, 0x89, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x82, 0x44, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7F, 0x68, 0xFA, 0xE0, 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x00, 0x00, 0xA3, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xC8, 0x01, 0x04, -0x00, 0x00, 0xA1, 0xB8, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, 0x00, 0x00, 0xB6, 0xD0, -0x01, 0x0E, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x4C, 0x4D, -0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x44, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x4E, 0x5A, 0x53, 0x54, 0x2D, 0x31, 0x32, -0x4E, 0x5A, 0x44, 0x54, 0x2C, 0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, -0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0x12, 0x90, 0x9A, 0x02, 0x10, 0xDE, 0xA0, 0x00, 0x00, 0x00, -0x26, 0x4E, 0x65, 0x77, 0x20, 0x5A, 0x65, 0x61, 0x6C, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x69, 0x6D, -0x65, 0x20, 0x2D, 0x20, 0x4D, 0x63, 0x4D, 0x75, 0x72, 0x64, 0x6F, 0x2C, 0x20, 0x53, 0x6F, 0x75, -0x74, 0x68, 0x20, 0x50, 0x6F, 0x6C, 0x65, +0x7D, 0x89, 0x18, 0xE0, 0x7E, 0x82, 0x44, 0x60, 0x7F, 0x68, 0xFA, 0xE0, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x00, 0x00, +0xA8, 0xC0, 0x00, 0x09, 0x2D, 0x30, 0x30, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x4E, 0x5A, 0x53, +0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xA9, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x18, +0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAC, 0xA5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xEF, +0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x9E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD8, +0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7E, 0xDE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB8, +0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x5E, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x98, +0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x78, +0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x1E, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, +0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x14, 0xFE, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, +0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x16, 0xE7, 0x83, 0x60, 0x00, 0x00, 0x00, 0x00, 0x18, 0x21, +0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x18, 0xC7, 0x65, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x01, +0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA7, 0x47, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, +0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x87, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC0, +0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x67, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA0, +0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, +0xB2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x30, 0x09, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x69, +0xCE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x0F, 0xEB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2E, +0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x42, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x0D, +0xE3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x27, 0xE2, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x28, 0xED, +0xC5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x29, 0xC2, 0x06, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xCD, +0xA7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAB, 0x23, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xAD, +0x89, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8B, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x8D, +0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6A, 0xE7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x6D, +0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x4A, 0xC9, 0x60, 0x00, 0x00, 0x00, 0x00, 0x32, 0x56, +0x69, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x2A, 0xAB, 0x60, 0x00, 0x00, 0x00, 0x00, 0x34, 0x36, +0x4B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0A, 0x8D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x36, 0x16, +0x2D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF3, 0xA9, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x37, 0xF6, +0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD3, 0x8B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xD5, +0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB3, 0x6D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xBF, +0x0E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x93, 0x4F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x9E, +0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x73, 0x31, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7E, +0xD2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0x4E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x41, 0x5E, +0xB4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3C, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3E, +0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1C, 0x12, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0x1E, +0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFB, 0xF4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFE, +0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF7, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x48, 0xDE, +0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD7, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xBE, +0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xB7, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x9E, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x7D, +0xE2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x77, 0x0D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x66, +0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x60, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x52, 0x46, +0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x40, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0x26, +0xC2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x1F, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0x06, +0xA4, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x57, 0xE6, +0x86, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xDF, 0xB2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x59, 0xC6, +0x68, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xBF, 0x94, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xAF, +0x85, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA8, 0xB0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x8F, +0x67, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x88, 0x92, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x6F, +0x49, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x68, 0x74, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x4F, +0x2B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x48, 0x56, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2F, +0x0D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0E, +0xEF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x11, 0x55, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0xF8, +0x0B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0x37, 0x60, 0x00, 0x00, 0x00, 0x00, 0x68, 0xD7, +0xED, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB7, +0xCF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xB0, 0xFB, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x97, +0xB1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x90, 0xDD, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x77, +0x93, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x70, 0xBF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x60, +0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x71, 0x59, 0xDB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x40, +0x92, 0x60, 0x00, 0x00, 0x00, 0x00, 0x73, 0x39, 0xBD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x20, +0x74, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x19, 0x9F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, +0x56, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF9, 0x81, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x77, 0xE0, +0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD9, 0x63, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xC0, +0x1A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB9, 0x45, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xA9, +0x36, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xA2, 0x62, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x89, +0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x82, 0x44, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x68, +0xFA, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, 0x00, +0xA8, 0xC0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x2D, 0x30, 0x30, 0x00, 0x4E, 0x5A, +0x44, 0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x4E, 0x5A, 0x53, +0x54, 0x2D, 0x31, 0x32, 0x4E, 0x5A, 0x44, 0x54, 0x2C, 0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, +0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0x12, 0x90, 0x9A, 0x02, 0x10, 0xDE, +0xA0, 0x00, 0x00, 0x00, 0x26, 0x4E, 0x65, 0x77, 0x20, 0x5A, 0x65, 0x61, 0x6C, 0x61, 0x6E, 0x64, +0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x4D, 0x63, 0x4D, 0x75, 0x72, 0x64, 0x6F, 0x2C, +0x20, 0x53, 0x6F, 0x75, 0x74, 0x68, 0x20, 0x50, 0x6F, 0x6C, 0x65, /* Antarctica/Palmer */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -41068,15 +40732,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Antarctica/South_Pole */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x9C, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0x80, 0x00, 0x00, 0x00, -0xB0, 0xB4, 0xB2, 0xE8, 0xB1, 0x51, 0x87, 0x58, 0xB2, 0x78, 0xE5, 0x68, 0xB3, 0x43, 0xE5, 0x60, -0xB4, 0x58, 0xC7, 0x68, 0xB5, 0x23, 0xC7, 0x60, 0xB6, 0x38, 0xA9, 0x68, 0xB7, 0x03, 0xA9, 0x60, -0xB8, 0x18, 0x8B, 0x68, 0xB8, 0xEC, 0xC5, 0xE0, 0xB9, 0xF8, 0x6D, 0x68, 0xBA, 0xCC, 0xA7, 0xE0, -0xBB, 0xD8, 0x4F, 0x68, 0xBC, 0xE3, 0xE8, 0xE0, 0xBD, 0xAE, 0xF6, 0xE8, 0xBE, 0xC3, 0xCA, 0xE0, -0xBF, 0x8E, 0xD8, 0xE8, 0xC0, 0xA3, 0xAC, 0xE0, 0xC1, 0x6E, 0xBA, 0xE8, 0xC2, 0x83, 0x8E, 0xE0, -0xC3, 0x4E, 0x9C, 0xE8, 0xC4, 0x63, 0x70, 0xE0, 0xC5, 0x2E, 0x7E, 0xE8, 0xC6, 0x4C, 0x8D, 0x60, -0xC7, 0x0E, 0x60, 0xE8, 0xC8, 0x2C, 0x6F, 0x60, 0xC8, 0xF7, 0x7D, 0x68, 0xD2, 0xDA, 0x9A, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0E, 0xE5, 0xA9, 0xE9, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x09, 0xAC, 0xA5, 0xE0, 0x0A, 0xEF, 0xA5, 0x60, 0x0B, 0x9E, 0xFC, 0xE0, 0x0C, 0xD8, 0xC1, 0xE0, 0x0D, 0x7E, 0xDE, 0xE0, 0x0E, 0xB8, 0xA3, 0xE0, 0x0F, 0x5E, 0xC0, 0xE0, 0x10, 0x98, 0x85, 0xE0, 0x11, 0x3E, 0xA2, 0xE0, 0x12, 0x78, 0x67, 0xE0, 0x13, 0x1E, 0x84, 0xE0, @@ -41108,131 +40765,110 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x72, 0x40, 0x92, 0x60, 0x73, 0x39, 0xBD, 0xE0, 0x74, 0x20, 0x74, 0x60, 0x75, 0x19, 0x9F, 0xE0, 0x76, 0x00, 0x56, 0x60, 0x76, 0xF9, 0x81, 0xE0, 0x77, 0xE0, 0x38, 0x60, 0x78, 0xD9, 0x63, 0xE0, 0x79, 0xC0, 0x1A, 0x60, 0x7A, 0xB9, 0x45, 0xE0, 0x7B, 0xA9, 0x36, 0xE0, 0x7C, 0xA2, 0x62, 0x60, -0x7D, 0x89, 0x18, 0xE0, 0x7E, 0x82, 0x44, 0x60, 0x7F, 0x68, 0xFA, 0xE0, 0x02, 0x01, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x00, 0x00, 0xA3, 0xD8, 0x00, 0x00, 0x00, 0x00, -0xAF, 0xC8, 0x01, 0x04, 0x00, 0x00, 0xA1, 0xB8, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, -0x00, 0x00, 0xB6, 0xD0, 0x01, 0x0E, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, 0x00, -0x4E, 0x5A, 0x44, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, -0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, -0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0xB7, 0x4C, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0xB4, 0xB2, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x51, 0x87, 0x58, -0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x78, 0xE5, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x43, 0xE5, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x58, 0xC7, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x23, 0xC7, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x38, 0xA9, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x03, 0xA9, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x18, 0x8B, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xEC, 0xC5, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xF8, 0x6D, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xCC, 0xA7, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0x4F, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE3, 0xE8, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAE, 0xF6, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC3, 0xCA, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8E, 0xD8, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA3, 0xAC, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6E, 0xBA, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x83, 0x8E, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4E, 0x9C, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x63, 0x70, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2E, 0x7E, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4C, 0x8D, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0E, 0x60, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2C, 0x6F, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF7, 0x7D, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xDA, 0x9A, 0x40, -0x00, 0x00, 0x00, 0x00, 0x09, 0x18, 0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAC, 0xA5, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0A, 0xEF, 0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x9E, 0xFC, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0C, 0xD8, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7E, 0xDE, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0E, 0xB8, 0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x5E, 0xC0, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x10, 0x98, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0xA2, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x12, 0x78, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x1E, 0x84, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x14, 0xFE, 0x66, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x16, 0xE7, 0x83, 0x60, -0x00, 0x00, 0x00, 0x00, 0x18, 0x21, 0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x18, 0xC7, 0x65, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1A, 0x01, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA7, 0x47, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x87, 0x29, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1D, 0xC0, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x67, 0x0B, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1F, 0xA0, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0xED, 0x60, -0x00, 0x00, 0x00, 0x00, 0x21, 0x80, 0xB2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x30, 0x09, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x23, 0x69, 0xCE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x0F, 0xEB, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x25, 0x2E, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x42, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x27, 0x0D, 0xE3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x27, 0xE2, 0x24, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x28, 0xED, 0xC5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x29, 0xC2, 0x06, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x2A, 0xCD, 0xA7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAB, 0x23, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2C, 0xAD, 0x89, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8B, 0x05, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2E, 0x8D, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6A, 0xE7, 0x60, -0x00, 0x00, 0x00, 0x00, 0x30, 0x6D, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x4A, 0xC9, 0x60, -0x00, 0x00, 0x00, 0x00, 0x32, 0x56, 0x69, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x2A, 0xAB, 0x60, -0x00, 0x00, 0x00, 0x00, 0x34, 0x36, 0x4B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0A, 0x8D, 0x60, -0x00, 0x00, 0x00, 0x00, 0x36, 0x16, 0x2D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF3, 0xA9, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x37, 0xF6, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD3, 0x8B, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x39, 0xD5, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB3, 0x6D, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3B, 0xBF, 0x0E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x93, 0x4F, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3D, 0x9E, 0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x73, 0x31, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3F, 0x7E, 0xD2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0x4E, 0x60, -0x00, 0x00, 0x00, 0x00, 0x41, 0x5E, 0xB4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3C, 0x30, 0x60, -0x00, 0x00, 0x00, 0x00, 0x43, 0x3E, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1C, 0x12, 0x60, -0x00, 0x00, 0x00, 0x00, 0x45, 0x1E, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFB, 0xF4, 0x60, -0x00, 0x00, 0x00, 0x00, 0x46, 0xFE, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF7, 0x85, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x48, 0xDE, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD7, 0x67, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4A, 0xBE, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xB7, 0x49, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4C, 0x9E, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0x2B, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4E, 0x7D, 0xE2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x77, 0x0D, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x50, 0x66, 0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x60, 0x2A, 0x60, -0x00, 0x00, 0x00, 0x00, 0x52, 0x46, 0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x40, 0x0C, 0x60, -0x00, 0x00, 0x00, 0x00, 0x54, 0x26, 0xC2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x1F, 0xEE, 0x60, -0x00, 0x00, 0x00, 0x00, 0x56, 0x06, 0xA4, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xD0, 0x60, -0x00, 0x00, 0x00, 0x00, 0x57, 0xE6, 0x86, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xDF, 0xB2, 0x60, -0x00, 0x00, 0x00, 0x00, 0x59, 0xC6, 0x68, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xBF, 0x94, 0x60, -0x00, 0x00, 0x00, 0x00, 0x5B, 0xAF, 0x85, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA8, 0xB0, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5D, 0x8F, 0x67, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x88, 0x92, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5F, 0x6F, 0x49, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x68, 0x74, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x61, 0x4F, 0x2B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x48, 0x56, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x63, 0x2F, 0x0D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0x38, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x65, 0x0E, 0xEF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x11, 0x55, 0x60, -0x00, 0x00, 0x00, 0x00, 0x66, 0xF8, 0x0B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0x37, 0x60, -0x00, 0x00, 0x00, 0x00, 0x68, 0xD7, 0xED, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0x19, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6A, 0xB7, 0xCF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xB0, 0xFB, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6C, 0x97, 0xB1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x90, 0xDD, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6E, 0x77, 0x93, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x70, 0xBF, 0x60, -0x00, 0x00, 0x00, 0x00, 0x70, 0x60, 0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x71, 0x59, 0xDB, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x72, 0x40, 0x92, 0x60, 0x00, 0x00, 0x00, 0x00, 0x73, 0x39, 0xBD, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x74, 0x20, 0x74, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x19, 0x9F, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x56, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF9, 0x81, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x77, 0xE0, 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD9, 0x63, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x79, 0xC0, 0x1A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB9, 0x45, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x7B, 0xA9, 0x36, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xA2, 0x62, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7D, 0x89, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x82, 0x44, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7F, 0x68, 0xFA, 0xE0, 0x02, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x05, 0x04, 0x05, 0x04, 0x00, 0x00, 0xA3, 0xD8, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xC8, 0x01, 0x04, -0x00, 0x00, 0xA1, 0xB8, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x01, 0x04, 0x00, 0x00, 0xB6, 0xD0, -0x01, 0x0E, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x04, 0x4C, 0x4D, -0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x4E, 0x5A, 0x4D, 0x54, 0x00, 0x4E, 0x5A, 0x44, 0x54, -0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x4E, 0x5A, 0x53, 0x54, 0x2D, 0x31, 0x32, -0x4E, 0x5A, 0x44, 0x54, 0x2C, 0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x34, 0x2E, 0x31, -0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, +0x7D, 0x89, 0x18, 0xE0, 0x7E, 0x82, 0x44, 0x60, 0x7F, 0x68, 0xFA, 0xE0, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x00, 0x00, +0xA8, 0xC0, 0x00, 0x09, 0x2D, 0x30, 0x30, 0x00, 0x4E, 0x5A, 0x44, 0x54, 0x00, 0x4E, 0x5A, 0x53, +0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xA9, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x18, +0xFD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAC, 0xA5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xEF, +0xA5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x9E, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD8, +0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7E, 0xDE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB8, +0xA3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x5E, 0xC0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x98, +0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x3E, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x78, +0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x1E, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, +0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x14, 0xFE, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, +0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x16, 0xE7, 0x83, 0x60, 0x00, 0x00, 0x00, 0x00, 0x18, 0x21, +0x48, 0x60, 0x00, 0x00, 0x00, 0x00, 0x18, 0xC7, 0x65, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x01, +0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xA7, 0x47, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, +0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x87, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC0, +0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x67, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA0, +0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x46, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x21, 0x80, +0xB2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x30, 0x09, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x69, +0xCE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x0F, 0xEB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x2E, +0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x42, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x0D, +0xE3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x27, 0xE2, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x28, 0xED, +0xC5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x29, 0xC2, 0x06, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xCD, +0xA7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAB, 0x23, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xAD, +0x89, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8B, 0x05, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x8D, +0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6A, 0xE7, 0x60, 0x00, 0x00, 0x00, 0x00, 0x30, 0x6D, +0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x4A, 0xC9, 0x60, 0x00, 0x00, 0x00, 0x00, 0x32, 0x56, +0x69, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x2A, 0xAB, 0x60, 0x00, 0x00, 0x00, 0x00, 0x34, 0x36, +0x4B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x0A, 0x8D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x36, 0x16, +0x2D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF3, 0xA9, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x37, 0xF6, +0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD3, 0x8B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xD5, +0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB3, 0x6D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xBF, +0x0E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x93, 0x4F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x9E, +0xF0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x73, 0x31, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x7E, +0xD2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0x4E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x41, 0x5E, +0xB4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3C, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3E, +0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x1C, 0x12, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0x1E, +0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFB, 0xF4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFE, +0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x47, 0xF7, 0x85, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x48, 0xDE, +0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x49, 0xD7, 0x67, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xBE, +0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xB7, 0x49, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x9E, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x97, 0x2B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x7D, +0xE2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x77, 0x0D, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x50, 0x66, +0xFE, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x51, 0x60, 0x2A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x52, 0x46, +0xE0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x53, 0x40, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0x26, +0xC2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x55, 0x1F, 0xEE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0x06, +0xA4, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xD0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x57, 0xE6, +0x86, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xDF, 0xB2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x59, 0xC6, +0x68, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xBF, 0x94, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xAF, +0x85, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA8, 0xB0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x8F, +0x67, 0x60, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x88, 0x92, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x6F, +0x49, 0x60, 0x00, 0x00, 0x00, 0x00, 0x60, 0x68, 0x74, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x4F, +0x2B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x48, 0x56, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2F, +0x0D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0E, +0xEF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0x11, 0x55, 0x60, 0x00, 0x00, 0x00, 0x00, 0x66, 0xF8, +0x0B, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0x37, 0x60, 0x00, 0x00, 0x00, 0x00, 0x68, 0xD7, +0xED, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0x19, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB7, +0xCF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xB0, 0xFB, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x97, +0xB1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x90, 0xDD, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x77, +0x93, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x70, 0xBF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x60, +0xB0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x71, 0x59, 0xDB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x40, +0x92, 0x60, 0x00, 0x00, 0x00, 0x00, 0x73, 0x39, 0xBD, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x20, +0x74, 0x60, 0x00, 0x00, 0x00, 0x00, 0x75, 0x19, 0x9F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, +0x56, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF9, 0x81, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x77, 0xE0, +0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD9, 0x63, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x79, 0xC0, +0x1A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB9, 0x45, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xA9, +0x36, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xA2, 0x62, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x89, +0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x82, 0x44, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x68, +0xFA, 0xE0, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xD0, 0x01, 0x04, 0x00, 0x00, +0xA8, 0xC0, 0x00, 0x09, 0x00, 0x00, 0xA8, 0xC0, 0x00, 0x09, 0x2D, 0x30, 0x30, 0x00, 0x4E, 0x5A, +0x44, 0x54, 0x00, 0x4E, 0x5A, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x0A, 0x4E, 0x5A, 0x53, +0x54, 0x2D, 0x31, 0x32, 0x4E, 0x5A, 0x44, 0x54, 0x2C, 0x4D, 0x39, 0x2E, 0x35, 0x2E, 0x30, 0x2C, +0x4D, 0x34, 0x2E, 0x31, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, /* Antarctica/Syowa */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD5, 0x1B, 0x36, 0xB4, -0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xE7, 0xB1, 0x58, 0x00, +0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1B, 0x36, 0xB4, 0x00, 0x00, -0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, -0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, +0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xB1, 0x58, 0x00, 0x00, 0x00, +0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x2A, 0x30, 0x00, 0x04, 0x2D, 0x30, 0x30, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0x20, 0x08, 0xBC, 0x01, 0x4F, 0x11, 0x58, 0x00, 0x00, 0x00, 0x05, 0x53, 0x79, 0x6F, 0x77, 0x61, @@ -41472,13 +41108,13 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Aden */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x59, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD5, 0x1B, 0x36, 0xB4, -0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x61, 0x38, 0x56, +0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2A, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1B, 0x36, 0xB4, 0x00, 0x00, -0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x61, 0x38, 0x56, 0x00, 0x00, +0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2A, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0x9C, 0xC8, 0xB8, 0x01, 0x57, 0xA0, 0xC0, 0x00, 0x00, 0x00, 0x00, @@ -42100,18 +41736,20 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Bahrain */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x42, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xA1, 0xF2, 0x9D, 0x30, -0x04, 0x8A, 0x92, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x02, 0x00, 0x00, 0x30, 0x50, 0x00, -0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xCA, 0x7B, 0x6C, 0x94, +0xCF, 0x17, 0x59, 0x48, 0x04, 0x8A, 0x92, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x03, +0x00, 0x00, 0x2F, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x31, 0x38, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, +0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x33, +0x30, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, -0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0x9D, 0x30, 0x00, 0x00, 0x00, -0x00, 0x04, 0x8A, 0x92, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x02, -0x00, 0x00, 0x30, 0x50, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, -0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xB1, 0x96, 0x3D, 0x01, 0x5F, 0xD7, 0x9D, 0x00, -0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, +0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x7B, 0x6C, 0x94, 0xFF, 0xFF, +0xFF, 0xFF, 0xCF, 0x17, 0x59, 0x48, 0x00, 0x00, 0x00, 0x00, 0x04, 0x8A, 0x92, 0xC0, 0x00, 0x00, +0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x03, 0x00, 0x00, 0x2F, 0x6C, 0x00, 0x00, +0x00, 0x00, 0x31, 0x38, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x00, 0x0A, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x34, 0x00, +0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xB1, 0x96, +0x3D, 0x01, 0x5F, 0xD7, 0x9D, 0x00, 0x00, 0x00, 0x00, /* Asia/Baku */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x41, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -43527,23 +43165,23 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Ho_Chi_Minh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x80, +0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x8A, 0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, 0xD5, 0x32, 0xBB, 0x10, 0xE4, 0xB6, 0xE4, 0x80, 0xED, 0x2F, 0x98, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, -0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, +0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, -0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, +0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, 0xE4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x64, -0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, +0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x63, +0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, @@ -43551,8 +43189,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Hong_Kong */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x48, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0x85, 0x69, 0x63, 0x90, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x16, 0x85, 0x69, 0x63, 0x90, 0xCA, 0x4D, 0x31, 0x30, 0xCA, 0xDB, 0x93, 0x30, 0xCB, 0x4B, 0x71, 0x78, 0xD2, 0xA0, 0xDE, 0x90, 0xD3, 0x6B, 0xD7, 0x80, 0xD4, 0x93, 0x58, 0xB8, 0xD5, 0x42, 0xB0, 0x38, 0xD6, 0x73, 0x3A, 0xB8, 0xD7, 0x3E, 0x41, 0xB8, 0xD8, 0x2E, 0x32, 0xB8, 0xD8, 0xF9, 0x39, 0xB8, 0xDA, 0x0E, 0x14, 0xB8, @@ -43570,62 +43208,64 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x04, 0x4D, 0xE6, 0xB8, 0x05, 0x47, 0x04, 0x28, 0x06, 0x37, 0x03, 0x38, 0x07, 0x26, 0xE6, 0x28, 0x07, 0x83, 0x3D, 0x38, 0x09, 0x06, 0xC8, 0x28, 0x09, 0xF6, 0xC7, 0x38, 0x0A, 0xE6, 0xAA, 0x28, 0x0B, 0xD6, 0xA9, 0x38, 0x0C, 0xC6, 0x8C, 0x28, 0x11, 0x9B, 0x39, 0x38, 0x12, 0x6F, 0x6C, 0xA8, -0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, -0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, 0x77, 0x88, 0x01, 0x0D, 0x00, 0x00, 0x7E, -0x90, 0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x4C, -0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, 0x00, 0x48, 0x4B, 0x57, 0x54, -0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, -0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, -0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0x69, 0x63, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x4D, 0x31, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xDB, 0x93, 0x30, -0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x4B, 0x71, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA0, 0xDE, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x6B, 0xD7, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x93, 0x58, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xB0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x73, 0x3A, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x3E, 0x41, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x32, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x39, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x14, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xD9, 0x1B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xED, 0xF6, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xB8, 0xFD, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xCD, 0xD8, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xA2, 0x1A, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xB6, 0xF5, 0x38, -0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x81, 0xFC, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x96, 0xC9, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x4F, 0x69, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x76, 0xAB, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x2F, 0x4B, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x5F, 0xC7, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x0F, 0x2D, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x3F, 0xA9, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xF8, 0x49, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x1F, 0x8B, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xD8, 0x2B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xFF, 0x6D, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xB8, 0x0D, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xDF, 0x4F, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x97, 0xEF, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xC8, 0x6C, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x77, 0xD1, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xA8, 0x4E, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x57, 0xB3, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x88, 0x30, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x40, 0xD0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x68, 0x12, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x20, 0xB2, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x47, 0xF4, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x25, 0x7E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x15, 0x61, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x05, 0x60, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0x43, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xE5, 0x42, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDE, 0x5F, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xCE, 0x5E, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBE, 0x41, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAE, 0x40, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x23, 0xA8, -0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7E, 0x05, 0xA8, -0x00, 0x00, 0x00, 0x00, 0x02, 0x6E, 0x04, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5D, 0xE7, 0xA8, -0x00, 0x00, 0x00, 0x00, 0x04, 0x4D, 0xE6, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x05, 0x47, 0x04, 0x28, -0x00, 0x00, 0x00, 0x00, 0x06, 0x37, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x26, 0xE6, 0x28, -0x00, 0x00, 0x00, 0x00, 0x07, 0x83, 0x3D, 0x38, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0xC8, 0x28, -0x00, 0x00, 0x00, 0x00, 0x09, 0xF6, 0xC7, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xE6, 0xAA, 0x28, -0x00, 0x00, 0x00, 0x00, 0x0B, 0xD6, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC6, 0x8C, 0x28, -0x00, 0x00, 0x00, 0x00, 0x11, 0x9B, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x12, 0x6F, 0x6C, 0xA8, -0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, +0x01, 0x02, 0x03, 0x04, 0x07, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, +0x05, 0x02, 0x05, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, +0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, +0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, +0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, 0x77, 0x88, 0x01, 0x0D, 0x00, 0x00, 0x7E, -0x90, 0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x4C, -0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, 0x00, 0x48, 0x4B, 0x57, 0x54, -0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x48, 0x4B, 0x54, -0x2D, 0x38, 0x0A, 0x00, 0xAB, 0x54, 0xAD, 0x01, 0xC0, 0xD6, 0x57, 0x00, 0x00, 0x00, 0x00, +0x90, 0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, +0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, +0x54, 0x00, 0x48, 0x4B, 0x57, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0x69, 0x63, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xCA, 0x4D, 0x31, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xDB, 0x93, 0x30, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x4B, 0x71, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA0, 0xDE, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xD3, 0x6B, 0xD7, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x93, 0x58, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xB0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x73, 0x3A, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xD7, 0x3E, 0x41, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x32, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x39, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x14, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xDA, 0xD9, 0x1B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xED, 0xF6, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xDC, 0xB8, 0xFD, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xCD, 0xD8, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xDE, 0xA2, 0x1A, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xB6, 0xF5, 0x38, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x81, 0xFC, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x96, 0xC9, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xE2, 0x4F, 0x69, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x76, 0xAB, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xE4, 0x2F, 0x4B, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x5F, 0xC7, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xE6, 0x0F, 0x2D, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x3F, 0xA9, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xE7, 0xF8, 0x49, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x1F, 0x8B, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xE9, 0xD8, 0x2B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xFF, 0x6D, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xEB, 0xB8, 0x0D, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xDF, 0x4F, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0x97, 0xEF, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xC8, 0x6C, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xEF, 0x77, 0xD1, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xA8, 0x4E, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF1, 0x57, 0xB3, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x88, 0x30, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF3, 0x40, 0xD0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x68, 0x12, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF5, 0x20, 0xB2, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x47, 0xF4, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF7, 0x25, 0x7E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x15, 0x61, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF9, 0x05, 0x60, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0x43, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xFA, 0xE5, 0x42, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDE, 0x5F, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xFC, 0xCE, 0x5E, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBE, 0x41, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xFE, 0xAE, 0x40, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x23, 0xA8, 0x00, +0x00, 0x00, 0x00, 0x00, 0x8E, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7E, 0x05, 0xA8, 0x00, +0x00, 0x00, 0x00, 0x02, 0x6E, 0x04, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5D, 0xE7, 0xA8, 0x00, +0x00, 0x00, 0x00, 0x04, 0x4D, 0xE6, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x05, 0x47, 0x04, 0x28, 0x00, +0x00, 0x00, 0x00, 0x06, 0x37, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x26, 0xE6, 0x28, 0x00, +0x00, 0x00, 0x00, 0x07, 0x83, 0x3D, 0x38, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0xC8, 0x28, 0x00, +0x00, 0x00, 0x00, 0x09, 0xF6, 0xC7, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xE6, 0xAA, 0x28, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xD6, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC6, 0x8C, 0x28, 0x00, +0x00, 0x00, 0x00, 0x11, 0x9B, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x12, 0x6F, 0x6C, 0xA8, 0x01, +0x02, 0x03, 0x04, 0x07, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, +0x02, 0x05, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, +0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, 0x77, 0x88, 0x01, 0x0D, 0x00, 0x00, 0x7E, 0x90, +0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, +0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, +0x00, 0x48, 0x4B, 0x57, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x4B, 0x54, 0x2D, 0x38, +0x0A, 0x00, 0xAB, 0x54, 0xAD, 0x01, 0xC0, 0xD6, 0x57, 0x00, 0x00, 0x00, 0x00, /* Asia/Hovd */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -43899,7 +43539,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Jakarta */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x00, 0xA9, 0x78, 0x85, 0xE0, 0xBA, 0x16, 0xDE, 0x60, 0xCB, 0xBF, 0x83, 0x88, 0xD2, 0x56, 0xEE, 0x70, 0xD7, 0x3C, 0xC6, 0x08, 0xDA, 0xFF, 0x26, 0x00, 0xF4, 0xB5, 0xBE, 0x88, 0x01, 0x02, 0x03, 0x04, @@ -43907,21 +43547,23 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x67, 0x20, 0x00, 0x08, 0x00, 0x00, 0x69, 0x78, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x14, 0x00, 0x00, 0x70, 0x80, 0x00, 0x18, 0x00, 0x00, 0x62, 0x70, 0x00, 0x1C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x32, 0x30, 0x00, 0x2B, 0x30, 0x37, 0x33, -0x30, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x57, 0x49, 0x42, 0x00, 0x54, 0x5A, -0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x08, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x66, -0x49, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA9, 0x78, 0x85, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x16, -0xDE, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xBF, 0x83, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x56, -0xEE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x3C, 0xC6, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, -0x26, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xB5, 0xBE, 0x88, 0x01, 0x02, 0x03, 0x04, 0x03, 0x05, -0x03, 0x06, 0x00, 0x00, 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x64, 0x20, 0x00, 0x04, 0x00, 0x00, -0x67, 0x20, 0x00, 0x08, 0x00, 0x00, 0x69, 0x78, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x14, -0x00, 0x00, 0x70, 0x80, 0x00, 0x18, 0x00, 0x00, 0x62, 0x70, 0x00, 0x1C, 0x4C, 0x4D, 0x54, 0x00, -0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x32, 0x30, 0x00, 0x2B, 0x30, 0x37, 0x33, 0x30, 0x00, -0x2B, 0x30, 0x39, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x57, 0x49, 0x42, 0x00, 0x0A, 0x57, 0x49, 0x42, -0x2D, 0x37, 0x0A, 0x00, 0x7F, 0xEB, 0x65, 0x01, 0xB5, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x0D, 0x4A, -0x61, 0x76, 0x61, 0x2C, 0x20, 0x53, 0x75, 0x6D, 0x61, 0x74, 0x72, 0x61, +0x30, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x57, 0x49, 0x42, 0x00, 0x00, 0x00, +0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, +0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x66, 0x49, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA9, 0x78, 0x85, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0x16, 0xDE, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xBF, 0x83, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x56, 0xEE, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x3C, 0xC6, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFF, 0x26, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xB5, 0xBE, 0x88, 0x01, 0x02, 0x03, 0x04, 0x03, 0x05, 0x03, 0x06, +0x00, 0x00, 0x64, 0x20, 0x00, 0x00, 0x00, 0x00, 0x64, 0x20, 0x00, 0x04, 0x00, 0x00, 0x67, 0x20, +0x00, 0x08, 0x00, 0x00, 0x69, 0x78, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x14, 0x00, 0x00, +0x70, 0x80, 0x00, 0x18, 0x00, 0x00, 0x62, 0x70, 0x00, 0x1C, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, +0x54, 0x00, 0x2B, 0x30, 0x37, 0x32, 0x30, 0x00, 0x2B, 0x30, 0x37, 0x33, 0x30, 0x00, 0x2B, 0x30, +0x39, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x57, 0x49, 0x42, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x57, 0x49, 0x42, 0x2D, 0x37, 0x0A, 0x00, +0x7F, 0xEB, 0x65, 0x01, 0xB5, 0x9F, 0x40, 0x00, 0x00, 0x00, 0x0D, 0x4A, 0x61, 0x76, 0x61, 0x2C, +0x20, 0x53, 0x75, 0x6D, 0x61, 0x74, 0x72, 0x61, /* Asia/Jayapura */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -44515,13 +44157,13 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Kuwait */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xD5, 0x1B, 0x36, 0xB4, -0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xDA, 0x61, 0x35, 0x84, +0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2C, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1B, 0x36, 0xB4, 0x00, 0x00, -0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2B, 0xCC, 0x00, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x61, 0x35, 0x84, 0x00, 0x00, +0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x2C, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xB6, 0x16, 0x95, 0x01, 0x5B, 0xDF, 0xFD, 0x00, 0x00, 0x00, 0x00, @@ -44818,13 +44460,13 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Muscat */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4F, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0xF2, 0x99, 0xA8, -0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x33, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xA1, 0xF2, 0x96, 0x90, +0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x36, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, -0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0x99, 0xA8, 0x00, 0x00, -0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x33, 0xD8, 0x00, 0x00, 0x00, 0x00, +0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0xF2, 0x96, 0x90, 0x00, 0x00, +0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0x00, 0x36, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x34, 0x3E, 0x2D, 0x34, 0x0A, 0x00, 0xAD, 0x57, 0x00, 0x01, 0x6C, 0x0C, 0x9D, 0x00, 0x00, 0x00, 0x00, @@ -45267,16 +44909,22 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Phnom_Penh */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, -0xA2, 0x6A, 0x67, 0xC4, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x02, 0x00, 0x00, 0x5E, 0x3C, 0x00, -0x00, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x45, 0x24, +0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, +0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x02, 0x00, 0x00, 0x62, 0x5C, 0x00, 0x00, +0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, +0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, +0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, +0x30, 0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, -0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x85, 0xC4, 0xFF, 0xFF, 0xFF, -0xFF, 0xA2, 0x6A, 0x67, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x02, -0x00, 0x00, 0x5E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x0A, 0x3C, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xFF, +0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x45, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, +0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, +0x02, 0x03, 0x04, 0x02, 0x02, 0x00, 0x00, 0x62, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, +0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, +0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, +0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0x9A, 0xF3, 0xF8, 0x01, 0xB2, 0xBF, 0x92, 0x00, 0x00, 0x00, 0x00, @@ -45515,23 +45163,23 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Saigon */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x80, +0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x43, 0x8A, 0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, 0xD5, 0x32, 0xBB, 0x10, 0xE4, 0xB6, 0xE4, 0x80, 0xED, 0x2F, 0x98, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, -0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, +0x63, 0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, -0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, +0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x43, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0xB6, 0xE4, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x2F, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x3D, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, -0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x64, -0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, +0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x63, +0xF6, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, @@ -46009,167 +45657,84 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Tehran */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0x9A, 0x6C, 0x7D, 0xC8, -0xD2, 0xDB, 0x12, 0xC8, 0x0E, 0xBB, 0xA2, 0x48, 0x0F, 0x74, 0x2D, 0x40, 0x10, 0x8E, 0x40, 0x30, -0x10, 0xED, 0x3A, 0x40, 0x11, 0x55, 0x67, 0xC8, 0x12, 0x45, 0x4A, 0xB8, 0x13, 0x37, 0xEC, 0xC8, -0x14, 0x2D, 0x15, 0xB8, 0x28, 0x20, 0x76, 0xC8, 0x28, 0xDB, 0x9D, 0xB8, 0x29, 0xCB, 0x9C, 0xC8, -0x2A, 0xBE, 0x22, 0xB8, 0x2B, 0xAC, 0xD0, 0x48, 0x2C, 0x9F, 0x56, 0x38, 0x2D, 0x8E, 0x03, 0xC8, -0x2E, 0x80, 0x89, 0xB8, 0x2F, 0x6F, 0x37, 0x48, 0x30, 0x61, 0xBD, 0x38, 0x31, 0x50, 0x6A, 0xC8, -0x32, 0x42, 0xF0, 0xB8, 0x33, 0x32, 0xEF, 0xC8, 0x34, 0x25, 0x75, 0xB8, 0x35, 0x14, 0x23, 0x48, -0x36, 0x06, 0xA9, 0x38, 0x36, 0xF5, 0x56, 0xC8, 0x37, 0xE7, 0xDC, 0xB8, 0x38, 0xD6, 0x8A, 0x48, -0x39, 0xC9, 0x10, 0x38, 0x3A, 0xB9, 0x0F, 0x48, 0x3B, 0xAB, 0x95, 0x38, 0x3C, 0x9A, 0x42, 0xC8, -0x3D, 0x8C, 0xC8, 0xB8, 0x3E, 0x7B, 0x76, 0x48, 0x3F, 0x6D, 0xFC, 0x38, 0x40, 0x5C, 0xA9, 0xC8, -0x41, 0x4F, 0x2F, 0xB8, 0x42, 0x3F, 0x2E, 0xC8, 0x43, 0x31, 0xB4, 0xB8, 0x47, 0xE2, 0xC9, 0x48, -0x48, 0xD5, 0x4F, 0x38, 0x49, 0xC5, 0x4E, 0x48, 0x4A, 0xB7, 0xD4, 0x38, 0x4B, 0xA6, 0x81, 0xC8, -0x4C, 0x99, 0x07, 0xB8, 0x4D, 0x87, 0xB5, 0x48, 0x4E, 0x7A, 0x3B, 0x38, 0x4F, 0x68, 0xE8, 0xC8, -0x50, 0x5B, 0x6E, 0xB8, 0x51, 0x4B, 0x6D, 0xC8, 0x52, 0x3D, 0xF3, 0xB8, 0x53, 0x2C, 0xA1, 0x48, -0x54, 0x1F, 0x27, 0x38, 0x55, 0x0D, 0xD4, 0xC8, 0x56, 0x00, 0x5A, 0xB8, 0x56, 0xEF, 0x08, 0x48, -0x57, 0xE1, 0x8E, 0x38, 0x58, 0xD1, 0x8D, 0x48, 0x59, 0xC4, 0x13, 0x38, 0x5A, 0xB2, 0xC0, 0xC8, -0x5B, 0xA5, 0x46, 0xB8, 0x5C, 0x93, 0xF4, 0x48, 0x5D, 0x86, 0x7A, 0x38, 0x5E, 0x75, 0x27, 0xC8, -0x5F, 0x67, 0xAD, 0xB8, 0x60, 0x57, 0xAC, 0xC8, 0x61, 0x4A, 0x32, 0xB8, 0x62, 0x38, 0xE0, 0x48, -0x63, 0x2B, 0x66, 0x38, 0x64, 0x1A, 0x13, 0xC8, 0x65, 0x0C, 0x99, 0xB8, 0x65, 0xFB, 0x47, 0x48, -0x66, 0xED, 0xCD, 0x38, 0x67, 0xDD, 0xCC, 0x48, 0x68, 0xD0, 0x52, 0x38, 0x69, 0xBE, 0xFF, 0xC8, -0x6A, 0xB1, 0x85, 0xB8, 0x6B, 0xA0, 0x33, 0x48, 0x6C, 0x92, 0xB9, 0x38, 0x6D, 0x81, 0x66, 0xC8, -0x6E, 0x73, 0xEC, 0xB8, 0x6F, 0x62, 0x9A, 0x48, 0x70, 0x55, 0x20, 0x38, 0x71, 0x45, 0x1F, 0x48, -0x72, 0x37, 0xA5, 0x38, 0x73, 0x26, 0x52, 0xC8, 0x74, 0x18, 0xD8, 0xB8, 0x75, 0x07, 0x86, 0x48, -0x75, 0xFA, 0x0C, 0x38, 0x76, 0xE8, 0xB9, 0xC8, 0x77, 0xDB, 0x3F, 0xB8, 0x78, 0xCB, 0x3E, 0xC8, -0x79, 0xBD, 0xC4, 0xB8, 0x7A, 0xAC, 0x72, 0x48, 0x7B, 0x9E, 0xF8, 0x38, 0x7C, 0x8D, 0xA5, 0xC8, -0x7D, 0x80, 0x2B, 0xB8, 0x7E, 0x6E, 0xD9, 0x48, 0x7F, 0x61, 0x5F, 0x38, 0x01, 0x02, 0x04, 0x03, -0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, -0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x00, 0x12, 0x00, 0x00, -0x3F, 0x48, 0x01, 0x16, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, -0x2B, 0x30, 0x34, 0x33, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, -0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xDB, -0x12, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xBB, 0xA2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x74, -0x2D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8E, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0xED, -0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0x55, 0x67, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, -0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, -0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, -0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xBE, -0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x9F, -0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x80, -0x89, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, 0x00, 0x00, 0x00, 0x30, 0x61, -0xBD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x32, 0x42, -0xF0, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x34, 0x25, -0x75, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, 0x36, 0x06, -0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x37, 0xE7, -0xDC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC9, -0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xAB, -0x95, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x8C, -0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6D, -0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x41, 0x4F, -0x2F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x43, 0x31, -0xB4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x48, 0xD5, -0x4F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xB7, -0xD4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x99, -0x07, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x7A, -0x3B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x5B, -0x6E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x52, 0x3D, -0xF3, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x54, 0x1F, -0x27, 0x38, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, -0x5A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, 0x57, 0xE1, -0x8E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x59, 0xC4, -0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xA5, -0x46, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x86, -0x7A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x67, -0xAD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x61, 0x4A, -0x32, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2B, -0x66, 0x38, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1A, 0x13, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0C, -0x99, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x65, 0xFB, 0x47, 0x48, 0x00, 0x00, 0x00, 0x00, 0x66, 0xED, -0xCD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x67, 0xDD, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x68, 0xD0, -0x52, 0x38, 0x00, 0x00, 0x00, 0x00, 0x69, 0xBE, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB1, -0x85, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA0, 0x33, 0x48, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x92, -0xB9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x81, 0x66, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x73, -0xEC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x62, 0x9A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x70, 0x55, -0x20, 0x38, 0x00, 0x00, 0x00, 0x00, 0x71, 0x45, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x72, 0x37, -0xA5, 0x38, 0x00, 0x00, 0x00, 0x00, 0x73, 0x26, 0x52, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x74, 0x18, -0xD8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x75, 0x07, 0x86, 0x48, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFA, -0x0C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x76, 0xE8, 0xB9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x77, 0xDB, -0x3F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCB, 0x3E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x79, 0xBD, -0xC4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAC, 0x72, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x9E, -0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x8D, 0xA5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x80, -0x2B, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x6E, 0xD9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x61, -0x5F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x80, 0x51, 0x5E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x81, 0x43, -0xE4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x82, 0x32, 0x91, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x25, -0x17, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x84, 0x13, 0xC5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x85, 0x06, -0x4B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x85, 0xF4, 0xF8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x86, 0xE7, -0x7E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x87, 0xD7, 0x7D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x88, 0xCA, -0x03, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x89, 0xB8, 0xB1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAB, -0x37, 0x38, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x99, 0xE4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, -0x6A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x7B, 0x18, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x6D, -0x9E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x5D, 0x9D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x90, 0x50, -0x23, 0x38, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3E, 0xD0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x92, 0x31, -0x56, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x93, 0x20, 0x04, 0x48, 0x00, 0x00, 0x00, 0x00, 0x94, 0x12, -0x8A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x95, 0x01, 0x37, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x95, 0xF3, -0xBD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x96, 0xE3, 0xBC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x97, 0xD6, -0x42, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x98, 0xC4, 0xF0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x99, 0xB7, -0x76, 0x38, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xA6, 0x23, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x98, -0xA9, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x87, 0x57, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x79, -0xDD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x69, 0xDC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x5C, -0x62, 0x38, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x4B, 0x0F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x3D, -0x95, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x2C, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x1E, -0xC9, 0x38, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x0D, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, -0xFC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xEF, 0xFB, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xE2, -0x81, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xD1, 0x2F, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC3, -0xB5, 0x38, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xB2, 0x62, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA4, -0xE8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x93, 0x96, 0x48, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x86, -0x1C, 0x38, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x74, 0xC9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x67, -0x4F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x57, 0x4E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x49, -0xD4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x38, 0x82, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x2B, -0x08, 0x38, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x19, 0xB5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x0C, -0x3B, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFA, 0xE9, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xED, -0x6F, 0x38, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xDD, 0x6E, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xCF, -0xF4, 0x38, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xBE, 0xA1, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xB1, -0x27, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x9F, 0xD5, 0x48, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x92, -0x5B, 0x38, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x81, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x73, -0x8E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x63, 0x8D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x56, -0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x44, 0xC1, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x37, -0x47, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x25, 0xF4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x18, -0x7A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x07, 0x28, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xF9, -0xAE, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC5, 0xE9, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xDC, -0x33, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xCA, 0xE0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xBD, -0x66, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC9, 0xAC, 0x14, 0x48, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x9E, -0x9A, 0x38, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x8D, 0x47, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x7F, -0xCD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x6F, 0xCC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x62, -0x52, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x51, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x43, -0x86, 0x38, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x32, 0x33, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x24, -0xB9, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x13, 0x67, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x05, -0xED, 0x38, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xF5, 0xEC, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xE8, -0x72, 0x38, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD7, 0x1F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xC9, -0xA5, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xB8, 0x53, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xAA, -0xD9, 0x38, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x99, 0x86, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x8C, -0x0C, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x7C, 0x0B, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x6E, -0x91, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x5D, 0x3F, 0x48, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x4F, -0xC5, 0x38, 0x01, 0x02, 0x04, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x00, 0x00, 0x30, 0x38, -0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x00, 0x00, -0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x00, 0x12, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x16, -0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, -0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x34, 0x33, -0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x3C, -0x2B, 0x30, 0x34, 0x33, 0x30, 0x3E, 0x2C, 0x4A, 0x37, 0x39, 0x2F, 0x32, 0x34, 0x2C, 0x4A, 0x32, -0x36, 0x33, 0x2F, 0x32, 0x34, 0x0A, 0x00, 0xBF, 0xC0, 0x8A, 0x01, 0x61, 0x23, 0xA5, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x9A, 0x6C, 0x7D, 0xC8, +0xBF, 0x00, 0xCC, 0x48, 0x0D, 0x94, 0x44, 0x38, 0x0E, 0xAD, 0x13, 0xB8, 0x0F, 0x79, 0x73, 0x40, +0x10, 0x28, 0xCA, 0xC0, 0x10, 0xED, 0x3A, 0x40, 0x11, 0xAD, 0xBC, 0x48, 0x12, 0x45, 0x4A, 0xB8, +0x13, 0x37, 0xEC, 0xC8, 0x14, 0x2D, 0x15, 0xB8, 0x28, 0x20, 0x76, 0xC8, 0x28, 0xDB, 0x9D, 0xB8, +0x29, 0xCB, 0x9C, 0xC8, 0x2A, 0xBE, 0x22, 0xB8, 0x2B, 0xAC, 0xD0, 0x48, 0x2C, 0x9F, 0x56, 0x38, +0x2D, 0x8E, 0x03, 0xC8, 0x2E, 0x80, 0x89, 0xB8, 0x2F, 0x6F, 0x37, 0x48, 0x30, 0x61, 0xBD, 0x38, +0x31, 0x50, 0x6A, 0xC8, 0x32, 0x42, 0xF0, 0xB8, 0x33, 0x32, 0xEF, 0xC8, 0x34, 0x25, 0x75, 0xB8, +0x35, 0x14, 0x23, 0x48, 0x36, 0x06, 0xA9, 0x38, 0x36, 0xF5, 0x56, 0xC8, 0x37, 0xE7, 0xDC, 0xB8, +0x38, 0xD6, 0x8A, 0x48, 0x39, 0xC9, 0x10, 0x38, 0x3A, 0xB9, 0x0F, 0x48, 0x3B, 0xAB, 0x95, 0x38, +0x3C, 0x9A, 0x42, 0xC8, 0x3D, 0x8C, 0xC8, 0xB8, 0x3E, 0x7B, 0x76, 0x48, 0x3F, 0x6D, 0xFC, 0x38, +0x40, 0x5C, 0xA9, 0xC8, 0x41, 0x4F, 0x2F, 0xB8, 0x42, 0x3F, 0x2E, 0xC8, 0x43, 0x31, 0xB4, 0xB8, +0x47, 0xE2, 0xC9, 0x48, 0x48, 0xD5, 0x4F, 0x38, 0x49, 0xC5, 0x4E, 0x48, 0x4A, 0xB7, 0xD4, 0x38, +0x4B, 0xA6, 0x81, 0xC8, 0x4C, 0x99, 0x07, 0xB8, 0x4D, 0x87, 0xB5, 0x48, 0x4E, 0x7A, 0x3B, 0x38, +0x4F, 0x68, 0xE8, 0xC8, 0x50, 0x5B, 0x6E, 0xB8, 0x51, 0x4B, 0x6D, 0xC8, 0x52, 0x3D, 0xF3, 0xB8, +0x53, 0x2C, 0xA1, 0x48, 0x54, 0x1F, 0x27, 0x38, 0x55, 0x0D, 0xD4, 0xC8, 0x56, 0x00, 0x5A, 0xB8, +0x56, 0xEF, 0x08, 0x48, 0x57, 0xE1, 0x8E, 0x38, 0x58, 0xD1, 0x8D, 0x48, 0x59, 0xC4, 0x13, 0x38, +0x5A, 0xB2, 0xC0, 0xC8, 0x5B, 0xA5, 0x46, 0xB8, 0x5C, 0x93, 0xF4, 0x48, 0x5D, 0x86, 0x7A, 0x38, +0x5E, 0x75, 0x27, 0xC8, 0x5F, 0x67, 0xAD, 0xB8, 0x60, 0x57, 0xAC, 0xC8, 0x61, 0x4A, 0x32, 0xB8, +0x62, 0x38, 0xE0, 0x48, 0x63, 0x2B, 0x66, 0x38, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x05, +0x04, 0x05, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x03, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, +0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, 0x31, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x46, 0x50, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x00, 0x18, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, +0x31, 0x38, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x33, +0x30, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, +0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, +0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, +0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, +0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, 0x00, 0x00, 0x00, +0x10, 0xED, 0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, 0x00, 0x00, 0x00, +0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x2A, 0xBE, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, 0x00, 0x00, 0x00, +0x2C, 0x9F, 0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x2E, 0x80, 0x89, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, 0x00, 0x00, 0x00, +0x30, 0x61, 0xBD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x32, 0x42, 0xF0, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x34, 0x25, 0x75, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, +0x36, 0x06, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x37, 0xE7, 0xDC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, 0x00, 0x00, 0x00, +0x39, 0xC9, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, 0x00, 0x00, 0x00, +0x3B, 0xAB, 0x95, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x3D, 0x8C, 0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, 0x00, 0x00, 0x00, +0x3F, 0x6D, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x41, 0x4F, 0x2F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x43, 0x31, 0xB4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, 0x00, 0x00, 0x00, +0x48, 0xD5, 0x4F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, 0x00, 0x00, 0x00, +0x4A, 0xB7, 0xD4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x4C, 0x99, 0x07, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, 0x00, 0x00, 0x00, +0x4E, 0x7A, 0x3B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x50, 0x5B, 0x6E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x52, 0x3D, 0xF3, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, 0x00, 0x00, 0x00, +0x54, 0x1F, 0x27, 0x38, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x56, 0x00, 0x5A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, +0x57, 0xE1, 0x8E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, 0x00, 0x00, 0x00, +0x59, 0xC4, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x5B, 0xA5, 0x46, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, 0x00, 0x00, 0x00, +0x5D, 0x86, 0x7A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x5F, 0x67, 0xAD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x61, 0x4A, 0x32, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, 0x00, 0x00, 0x00, +0x63, 0x2B, 0x66, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x05, +0x04, 0x05, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x03, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, +0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, 0x31, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x46, 0x50, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x00, 0x18, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, +0x31, 0x38, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x33, +0x30, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, +0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x0A, 0x00, 0xBF, +0xC0, 0x8A, 0x01, 0x61, 0x23, 0xA5, 0x00, 0x00, 0x00, 0x00, /* Asia/Tel_Aviv */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -46697,18 +46262,25 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Asia/Vientiane */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4C, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, -0xA2, 0x6A, 0x67, 0xC4, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x02, 0x00, 0x00, 0x5E, 0x3C, 0x00, -0x00, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, 0x00, 0x08, 0x4C, 0x4D, 0x54, -0x00, 0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0x88, 0x8C, 0x47, 0x50, +0x91, 0xA3, 0x2B, 0x0A, 0xCD, 0x35, 0xE6, 0x80, 0xD1, 0x59, 0xCE, 0x70, 0xD2, 0x3B, 0x3E, 0xF0, +0xD5, 0x32, 0xBB, 0x10, 0xE4, 0x51, 0x61, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, +0x02, 0x03, 0x02, 0x02, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, +0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, +0x00, 0x11, 0x00, 0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, +0x00, 0x2B, 0x30, 0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x54, 0x5A, 0x69, +0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, -0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0x85, 0xC4, 0xFF, 0xFF, 0xFF, -0xFF, 0xA2, 0x6A, 0x67, 0xC4, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x02, -0x00, 0x00, 0x5E, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x3C, 0x00, 0x04, 0x00, 0x00, 0x62, 0x70, -0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x37, 0x00, 0x0A, 0x3C, -0x2B, 0x30, 0x37, 0x3E, 0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, 0x36, 0xA0, 0x00, -0x00, 0x00, 0x00, +0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x8C, 0x47, +0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xA3, 0x2B, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x35, 0xE6, +0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x59, 0xCE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x3B, 0x3E, +0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x32, 0xBB, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x51, 0x61, +0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x03, 0x04, 0x02, 0x03, 0x02, +0x02, 0x00, 0x00, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF6, 0x00, 0x04, 0x00, 0x00, 0x62, +0x70, 0x00, 0x09, 0x00, 0x00, 0x70, 0x80, 0x00, 0x0D, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x11, 0x00, +0x00, 0x62, 0x70, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x50, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, +0x37, 0x00, 0x2B, 0x30, 0x38, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x37, 0x3E, +0x2D, 0x37, 0x0A, 0x00, 0xA4, 0xBE, 0x7A, 0x01, 0xAF, 0x36, 0xA0, 0x00, 0x00, 0x00, 0x00, /* Asia/Vladivostok */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -48259,15 +47831,17 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Atlantic/St_Helena */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x53, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x92, 0xE6, 0x92, 0x48, -0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, -0x00, 0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, +0xDC, 0x42, 0x9B, 0x58, 0x01, 0x02, 0xFF, 0xFF, 0xFA, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0xA8, +0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4A, 0x4D, 0x54, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, -0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0xE6, 0x92, 0x48, 0x01, 0xFF, 0xFF, 0xFC, 0x38, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x0A, 0x47, -0x4D, 0x54, 0x30, 0x0A, 0x00, 0x71, 0x0A, 0xCD, 0x01, 0x09, 0xF5, 0xF0, 0x00, 0x00, 0x00, 0x00, - +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, +0xFF, 0xFF, 0xFF, 0xFF, 0x69, 0x86, 0xE0, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x42, 0x9B, 0x58, +0x01, 0x02, 0xFF, 0xFF, 0xFA, 0xA8, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0xA8, 0x00, 0x04, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x4A, 0x4D, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, +0x0A, 0x47, 0x4D, 0x54, 0x30, 0x0A, 0x00, 0x71, 0x0A, 0xCD, 0x01, 0x09, 0xF5, 0xF0, 0x00, 0x00, +0x00, 0x00, /* Atlantic/Stanley */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x46, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -52421,7 +51995,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xB0, 0x5E, 0x77, 0xC5, 0xB1, 0x77, 0x3D, 0x40, 0xB2, 0x41, 0x00, 0xD0, 0xB3, 0x58, 0x70, 0xC0, 0xB4, 0x22, 0x34, 0x50, 0xB5, 0x39, 0xA4, 0x40, 0xB6, 0x03, 0x67, 0xD0, 0xB7, 0x1A, 0xD7, 0xC0, 0xB7, 0xE4, 0x9B, 0x50, 0xB8, 0xFD, 0x5C, 0xC0, 0xB9, 0xC7, 0x20, 0x50, 0xCC, 0x1C, 0x6E, 0x40, -0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x1B, 0xC9, 0xB0, 0xD5, 0x33, 0x55, 0xC0, +0xCC, 0x6C, 0xE7, 0xD0, 0xD3, 0xDC, 0x8F, 0xC0, 0xD4, 0x17, 0xD5, 0x30, 0xD5, 0x33, 0x55, 0xC0, 0xD5, 0x76, 0x92, 0x40, 0xFD, 0xD1, 0x3C, 0x40, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x72, 0xDC, 0xB0, 0x01, 0x75, 0x50, 0xC0, 0x02, 0x40, 0x49, 0xB0, 0x03, 0x55, 0x32, 0xC0, 0x04, 0x20, 0x2B, 0xB0, 0x05, 0x3E, 0x4F, 0x40, 0x06, 0x00, 0x0D, 0xB0, 0x07, 0x0B, 0xBC, 0x40, @@ -52448,7 +52022,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x53, 0x5C, 0x72, 0xB0, 0x54, 0x0B, 0xD8, 0x40, 0x57, 0x37, 0xE6, 0x30, 0x57, 0xAF, 0xEC, 0xC0, 0x59, 0x17, 0xC8, 0x30, 0x59, 0x8F, 0xCE, 0xC0, 0x5A, 0xF7, 0xAA, 0x30, 0x5B, 0x6F, 0xB0, 0xC0, 0x5C, 0xA9, 0x67, 0xB0, 0x5D, 0x74, 0x7C, 0xC0, 0x5E, 0x89, 0x49, 0xB0, 0x5F, 0x54, 0x5E, 0xC0, -0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x14, 0x22, 0xC0, +0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x1D, 0x5D, 0x40, 0x64, 0x28, 0xEF, 0xB0, 0x64, 0xF4, 0x04, 0xC0, 0x66, 0x12, 0x0C, 0x30, 0x66, 0xDD, 0x21, 0x40, 0x67, 0xF1, 0xEE, 0x30, 0x68, 0xBD, 0x03, 0x40, 0x69, 0xD1, 0xD0, 0x30, 0x6A, 0x9C, 0xE5, 0x40, 0x6B, 0xB1, 0xB2, 0x30, 0x6C, 0x7C, 0xC7, 0x40, 0x6D, 0x91, 0x94, 0x30, 0x6E, 0x5C, 0xA9, 0x40, @@ -52457,7 +52031,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x76, 0xFA, 0x38, 0xB0, 0x77, 0xC5, 0x4D, 0xC0, 0x78, 0xDA, 0x1A, 0xB0, 0x79, 0xA5, 0x2F, 0xC0, 0x7A, 0xC3, 0x37, 0x30, 0x7B, 0x85, 0x11, 0xC0, 0x7C, 0xA3, 0x19, 0x30, 0x7D, 0x6E, 0x2E, 0x40, 0x7E, 0x82, 0xFB, 0x30, 0x7F, 0x4E, 0x10, 0x40, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, -0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x03, +0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x02, 0x03, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, @@ -52484,7 +52058,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xB7, 0x1A, 0xD7, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0xE4, 0x9B, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0xFD, 0x5C, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xC7, 0x20, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x1C, 0x6E, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0xE7, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, -0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x1B, 0xC9, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, +0xD3, 0xDC, 0x8F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x17, 0xD5, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x33, 0x55, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x76, 0x92, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD1, 0x3C, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x92, 0xFA, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xCD, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xDC, 0xB0, 0x00, 0x00, 0x00, 0x00, @@ -52539,7 +52113,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, 0x00, 0x00, 0x00, 0x00, -0x63, 0x14, 0x22, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, +0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x12, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x66, 0xDD, 0x21, 0x40, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xEE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBD, 0x03, 0x40, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0xD0, 0x30, 0x00, 0x00, 0x00, 0x00, @@ -52555,7 +52129,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x7B, 0x85, 0x11, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xA3, 0x19, 0x30, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x6E, 0x2E, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x82, 0xFB, 0x30, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x4E, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x03, -0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x03, +0x01, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x03, 0x02, 0x03, 0x05, 0x04, 0x02, 0x03, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, @@ -52604,7 +52178,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x53, 0x5C, 0x72, 0xB0, 0x54, 0x0B, 0xD8, 0x40, 0x57, 0x37, 0xE6, 0x30, 0x57, 0xAF, 0xEC, 0xC0, 0x59, 0x17, 0xC8, 0x30, 0x59, 0x8F, 0xCE, 0xC0, 0x5A, 0xF7, 0xAA, 0x30, 0x5B, 0x6F, 0xB0, 0xC0, 0x5C, 0xA9, 0x67, 0xB0, 0x5D, 0x74, 0x7C, 0xC0, 0x5E, 0x89, 0x49, 0xB0, 0x5F, 0x54, 0x5E, 0xC0, -0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x14, 0x22, 0xC0, +0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x1D, 0x5D, 0x40, 0x64, 0x28, 0xEF, 0xB0, 0x64, 0xF4, 0x04, 0xC0, 0x66, 0x12, 0x0C, 0x30, 0x66, 0xDD, 0x21, 0x40, 0x67, 0xF1, 0xEE, 0x30, 0x68, 0xBD, 0x03, 0x40, 0x69, 0xD1, 0xD0, 0x30, 0x6A, 0x9C, 0xE5, 0x40, 0x6B, 0xB1, 0xB2, 0x30, 0x6C, 0x7C, 0xC7, 0x40, 0x6D, 0x91, 0x94, 0x30, 0x6E, 0x5C, 0xA9, 0x40, @@ -52683,7 +52257,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x00, 0x00, 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, -0x00, 0x00, 0x00, 0x00, 0x63, 0x14, 0x22, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, +0x00, 0x00, 0x00, 0x00, 0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x12, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x66, 0xDD, 0x21, 0x40, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xEE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBD, 0x03, 0x40, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0xD0, 0x30, @@ -53342,7 +52916,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, +0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, @@ -53350,7 +52924,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, -0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xDC, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xB3, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x0B, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, @@ -53478,7 +53052,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0xFF, 0xFF, 0xFA, 0x24, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, @@ -54544,8 +54118,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Europe/Belfast */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, @@ -54606,169 +54180,170 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x7F, 0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x05, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, -0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, -0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, -0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, -0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, -0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, -0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, -0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, -0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, -0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, -0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, -0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, -0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, -0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, -0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, -0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, -0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, -0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, -0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, -0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, -0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, -0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, -0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, -0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, -0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, -0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, -0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, -0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, -0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, -0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, -0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, -0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, -0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, -0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, -0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, -0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, -0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, -0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, -0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, -0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, -0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, -0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, -0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, -0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, -0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, -0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, -0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, -0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, -0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, -0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, -0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, -0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, -0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, -0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, -0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, -0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, -0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, -0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, -0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, -0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, -0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, -0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, -0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, -0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, -0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, -0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, -0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, -0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, -0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, -0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, -0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, -0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, -0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, -0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, -0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, -0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, -0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, -0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, -0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, -0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, -0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, -0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, -0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, -0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, -0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, -0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, -0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, -0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, -0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, -0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, -0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, -0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, -0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, -0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, -0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, -0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, -0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, -0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, -0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, -0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, -0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, -0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, -0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, -0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, -0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, -0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, -0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, -0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, -0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, -0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, -0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, -0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, +0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, +0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, +0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, +0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, +0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, +0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, +0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, +0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, +0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, +0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, +0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, +0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, +0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, +0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, +0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, +0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, +0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, +0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, +0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, +0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, +0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, +0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, +0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, +0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, +0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, +0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, +0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, +0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, +0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, +0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, +0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, +0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, +0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, +0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, +0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, +0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, +0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, +0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, +0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, +0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, +0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, +0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, +0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, +0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, +0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, +0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, +0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, +0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, +0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, +0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, +0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, +0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, +0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, +0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, +0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, +0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, +0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, +0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, +0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, +0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, +0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, +0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, +0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, +0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, +0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, +0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, +0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, +0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, +0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, +0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, +0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, +0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, +0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, +0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, +0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, +0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, +0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, +0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, +0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, +0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, +0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, +0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, +0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, +0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, +0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, +0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, +0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, +0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, +0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, +0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, +0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, +0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, +0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, +0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, +0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, +0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, +0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, +0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, +0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, +0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, +0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, +0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, +0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, +0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, +0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, +0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, +0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, +0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, +0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, +0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, +0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, +0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, +0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, +0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, +0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, +0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, +0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, +0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, +0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, +0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, +0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, -0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, -0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, -0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, +0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, +0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -56157,7 +55732,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, +0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x44, 0x4D, 0x54, 0x00, 0x49, 0x53, @@ -56165,7 +55740,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, -0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xDC, +0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xB3, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x0B, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, @@ -56293,7 +55868,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0xFF, 0xFF, 0xFA, 0x24, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x00, 0xFF, 0xFF, 0xFA, 0x0F, 0x00, 0x04, 0x00, 0x00, 0x08, 0x1F, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, @@ -56306,8 +55881,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Europe/Gibraltar */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1A, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, @@ -56357,151 +55932,152 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x7F, 0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFA, 0xFC, 0x00, 0x00, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFA, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, -0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, -0x42, 0x44, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x01, -0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, -0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, -0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0x04, -0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, -0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, -0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, -0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, -0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, -0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, -0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, -0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, -0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, -0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, -0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, -0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, -0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, -0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, -0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, -0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, -0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, -0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, -0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, -0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, -0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, -0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, -0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, -0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, -0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, -0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, -0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, -0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, -0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, -0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, -0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, -0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, -0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, -0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, -0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, -0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, -0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, -0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, -0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, -0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, -0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, -0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, -0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, -0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, -0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, -0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, -0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, -0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, -0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, -0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, -0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, -0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, -0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, -0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, -0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, -0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, -0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, -0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, -0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x11, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, +0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, +0x45, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1A, +0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0xD1, 0x0A, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, +0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, +0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, +0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, +0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, +0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, +0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, +0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, +0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, +0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, +0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, +0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, +0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, +0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, +0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, +0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, +0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, +0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, +0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, +0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, +0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, +0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, +0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, +0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, +0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, +0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, +0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, +0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, +0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, +0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, +0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, +0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, +0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, +0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, +0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, +0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, +0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, +0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, +0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, +0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, +0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, +0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, +0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, +0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, +0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, +0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, +0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, +0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, +0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, +0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, +0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, +0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, +0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, +0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, +0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, +0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, +0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, +0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, +0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, -0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, -0xFA, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, -0x01, 0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, -0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, -0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, +0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFA, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x11, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, +0x00, 0x00, 0x0E, 0x10, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, +0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, +0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xC0, 0x76, 0xD5, 0x01, 0x0A, 0x7E, 0xA8, 0x00, 0x00, 0x00, 0x00, /* Europe/Guernsey */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0x95, 0xA6, 0x91, 0xE1, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, @@ -56514,220 +56090,226 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xBC, 0xDB, 0x57, 0x20, 0xBD, 0xB8, 0xD3, 0x20, 0xBE, 0xB1, 0xFE, 0xA0, 0xBF, 0x98, 0xB5, 0x20, 0xC0, 0x9B, 0x1B, 0x20, 0xC1, 0x78, 0x97, 0x20, 0xC2, 0x7A, 0xFD, 0x20, 0xC3, 0x58, 0x79, 0x20, 0xC4, 0x51, 0xA4, 0xA0, 0xC5, 0x38, 0x5B, 0x20, 0xC6, 0x3A, 0xC1, 0x20, 0xC7, 0x58, 0xD6, 0xA0, -0xC7, 0xDA, 0x09, 0xA0, 0xCA, 0x16, 0x26, 0x90, 0xCA, 0x97, 0x59, 0x90, 0xCB, 0xD1, 0x1E, 0x90, -0xCC, 0x77, 0x3B, 0x90, 0xCD, 0xB1, 0x00, 0x90, 0xCE, 0x60, 0x58, 0x10, 0xCF, 0x90, 0xE2, 0x90, -0xD0, 0x6E, 0x5E, 0x90, 0xD1, 0x72, 0x16, 0x10, 0xD1, 0xFB, 0x32, 0x10, 0xD2, 0x69, 0xFE, 0x20, -0xD3, 0x63, 0x29, 0xA0, 0xD4, 0x49, 0xE0, 0x20, 0xD5, 0x1E, 0x21, 0xA0, 0xD5, 0x42, 0xFD, 0x90, -0xD5, 0xDF, 0xE0, 0x10, 0xD6, 0x4E, 0xAC, 0x20, 0xD6, 0xFE, 0x03, 0xA0, 0xD8, 0x2E, 0x8E, 0x20, -0xD8, 0xF9, 0x95, 0x20, 0xDA, 0x0E, 0x70, 0x20, 0xDA, 0xEB, 0xEC, 0x20, 0xDB, 0xE5, 0x17, 0xA0, -0xDC, 0xCB, 0xCE, 0x20, 0xDD, 0xC4, 0xF9, 0xA0, 0xDE, 0xB4, 0xEA, 0xA0, 0xDF, 0xAE, 0x16, 0x20, -0xE0, 0x94, 0xCC, 0xA0, 0xE1, 0x72, 0x48, 0xA0, 0xE2, 0x6B, 0x74, 0x20, 0xE3, 0x52, 0x2A, 0xA0, -0xE4, 0x54, 0x90, 0xA0, 0xE5, 0x32, 0x0C, 0xA0, 0xE6, 0x3D, 0xAD, 0x20, 0xE7, 0x1B, 0x29, 0x20, -0xE8, 0x14, 0x54, 0xA0, 0xE8, 0xFB, 0x0B, 0x20, 0xE9, 0xFD, 0x71, 0x20, 0xEA, 0xDA, 0xED, 0x20, -0xEB, 0xDD, 0x53, 0x20, 0xEC, 0xBA, 0xCF, 0x20, 0xED, 0xB3, 0xFA, 0xA0, 0xEE, 0x9A, 0xB1, 0x20, -0xEF, 0x81, 0x67, 0xA0, 0xF0, 0x9F, 0x7D, 0x20, 0xF1, 0x61, 0x49, 0xA0, 0xF2, 0x7F, 0x5F, 0x20, -0xF3, 0x4A, 0x66, 0x20, 0xF4, 0x5F, 0x41, 0x20, 0xF5, 0x21, 0x0D, 0xA0, 0xF6, 0x3F, 0x23, 0x20, -0xF7, 0x00, 0xEF, 0xA0, 0xF8, 0x1F, 0x05, 0x20, 0xF8, 0xE0, 0xD1, 0xA0, 0xF9, 0xFE, 0xE7, 0x20, -0xFA, 0xC0, 0xB3, 0xA0, 0xFB, 0xE8, 0x03, 0xA0, 0xFC, 0x7B, 0xAB, 0xA0, 0xFD, 0xC7, 0xBB, 0x70, -0x03, 0x70, 0xC6, 0x20, 0x04, 0x29, 0x58, 0x20, 0x05, 0x50, 0xA8, 0x20, 0x06, 0x09, 0x3A, 0x20, -0x07, 0x30, 0x8A, 0x20, 0x07, 0xE9, 0x1C, 0x20, 0x09, 0x10, 0x6C, 0x20, 0x09, 0xC8, 0xFE, 0x20, -0x0A, 0xF0, 0x4E, 0x20, 0x0B, 0xB2, 0x1A, 0xA0, 0x0C, 0xD0, 0x30, 0x20, 0x0D, 0x91, 0xFC, 0xA0, -0x0E, 0xB0, 0x12, 0x20, 0x0F, 0x71, 0xDE, 0xA0, 0x10, 0x99, 0x2E, 0xA0, 0x11, 0x51, 0xC0, 0xA0, -0x12, 0x79, 0x10, 0xA0, 0x13, 0x31, 0xA2, 0xA0, 0x14, 0x58, 0xF2, 0xA0, 0x15, 0x23, 0xEB, 0x90, -0x16, 0x38, 0xC6, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x18, 0x18, 0xA8, 0x90, 0x18, 0xE3, 0xAF, 0x90, -0x19, 0xF8, 0x8A, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xE1, 0xA7, 0x10, 0x1C, 0xAC, 0xAE, 0x10, -0x1D, 0xC1, 0x89, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0xA1, 0x6B, 0x10, 0x20, 0x6C, 0x72, 0x10, -0x21, 0x81, 0x4D, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x61, 0x2F, 0x10, 0x24, 0x2C, 0x36, 0x10, -0x25, 0x4A, 0x4B, 0x90, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x2A, 0x2D, 0x90, 0x27, 0xF5, 0x34, 0x90, -0x29, 0x0A, 0x0F, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xE9, 0xF1, 0x90, 0x2B, 0xB4, 0xF8, 0x90, -0x2C, 0xC9, 0xD3, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0xA9, 0xB5, 0x90, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x89, 0x97, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, -0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, -0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, -0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, -0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, -0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, -0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, -0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, -0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, -0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, -0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, -0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, -0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, -0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, -0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, -0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, -0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, -0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, -0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, -0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, -0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, -0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0xC7, 0xDA, 0x09, 0xA0, 0xC8, 0x82, 0x9F, 0x70, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, +0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, +0xD1, 0xA1, 0x61, 0xE0, 0xD1, 0xFB, 0x32, 0x10, 0xD2, 0x69, 0xFE, 0x20, 0xD3, 0x63, 0x29, 0xA0, +0xD4, 0x49, 0xE0, 0x20, 0xD5, 0x1E, 0x21, 0xA0, 0xD5, 0x42, 0xFD, 0x90, 0xD5, 0xDF, 0xE0, 0x10, +0xD6, 0x4E, 0xAC, 0x20, 0xD6, 0xFE, 0x03, 0xA0, 0xD8, 0x2E, 0x8E, 0x20, 0xD8, 0xF9, 0x95, 0x20, +0xDA, 0x0E, 0x70, 0x20, 0xDA, 0xEB, 0xEC, 0x20, 0xDB, 0xE5, 0x17, 0xA0, 0xDC, 0xCB, 0xCE, 0x20, +0xDD, 0xC4, 0xF9, 0xA0, 0xDE, 0xB4, 0xEA, 0xA0, 0xDF, 0xAE, 0x16, 0x20, 0xE0, 0x94, 0xCC, 0xA0, +0xE1, 0x72, 0x48, 0xA0, 0xE2, 0x6B, 0x74, 0x20, 0xE3, 0x52, 0x2A, 0xA0, 0xE4, 0x54, 0x90, 0xA0, +0xE5, 0x32, 0x0C, 0xA0, 0xE6, 0x3D, 0xAD, 0x20, 0xE7, 0x1B, 0x29, 0x20, 0xE8, 0x14, 0x54, 0xA0, +0xE8, 0xFB, 0x0B, 0x20, 0xE9, 0xFD, 0x71, 0x20, 0xEA, 0xDA, 0xED, 0x20, 0xEB, 0xDD, 0x53, 0x20, +0xEC, 0xBA, 0xCF, 0x20, 0xED, 0xB3, 0xFA, 0xA0, 0xEE, 0x9A, 0xB1, 0x20, 0xEF, 0x81, 0x67, 0xA0, +0xF0, 0x9F, 0x7D, 0x20, 0xF1, 0x61, 0x49, 0xA0, 0xF2, 0x7F, 0x5F, 0x20, 0xF3, 0x4A, 0x66, 0x20, +0xF4, 0x5F, 0x41, 0x20, 0xF5, 0x21, 0x0D, 0xA0, 0xF6, 0x3F, 0x23, 0x20, 0xF7, 0x00, 0xEF, 0xA0, +0xF8, 0x1F, 0x05, 0x20, 0xF8, 0xE0, 0xD1, 0xA0, 0xF9, 0xFE, 0xE7, 0x20, 0xFA, 0xC0, 0xB3, 0xA0, +0xFB, 0xE8, 0x03, 0xA0, 0xFC, 0x7B, 0xAB, 0xA0, 0xFD, 0xC7, 0xBB, 0x70, 0x03, 0x70, 0xC6, 0x20, +0x04, 0x29, 0x58, 0x20, 0x05, 0x50, 0xA8, 0x20, 0x06, 0x09, 0x3A, 0x20, 0x07, 0x30, 0x8A, 0x20, +0x07, 0xE9, 0x1C, 0x20, 0x09, 0x10, 0x6C, 0x20, 0x09, 0xC8, 0xFE, 0x20, 0x0A, 0xF0, 0x4E, 0x20, +0x0B, 0xB2, 0x1A, 0xA0, 0x0C, 0xD0, 0x30, 0x20, 0x0D, 0x91, 0xFC, 0xA0, 0x0E, 0xB0, 0x12, 0x20, +0x0F, 0x71, 0xDE, 0xA0, 0x10, 0x99, 0x2E, 0xA0, 0x11, 0x51, 0xC0, 0xA0, 0x12, 0x79, 0x10, 0xA0, +0x13, 0x31, 0xA2, 0xA0, 0x14, 0x58, 0xF2, 0xA0, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x38, 0xC6, 0x90, +0x17, 0x03, 0xCD, 0x90, 0x18, 0x18, 0xA8, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xF8, 0x8A, 0x90, +0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xE1, 0xA7, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0xC1, 0x89, 0x10, +0x1E, 0x8C, 0x90, 0x10, 0x1F, 0xA1, 0x6B, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x81, 0x4D, 0x10, +0x22, 0x4C, 0x54, 0x10, 0x23, 0x61, 0x2F, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x4A, 0x4B, 0x90, +0x26, 0x0C, 0x18, 0x10, 0x27, 0x2A, 0x2D, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x29, 0x0A, 0x0F, 0x90, +0x29, 0xD5, 0x16, 0x90, 0x2A, 0xE9, 0xF1, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xC9, 0xD3, 0x90, +0x2D, 0x94, 0xDA, 0x90, 0x2E, 0xA9, 0xB5, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x89, 0x97, 0x90, +0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, +0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, +0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, +0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, +0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, +0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, +0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, +0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, +0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, +0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, +0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, +0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, +0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, +0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, +0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, +0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, +0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, +0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, +0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, +0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, +0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, +0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, -0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, -0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, -0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, -0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, -0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, -0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, -0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, -0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, -0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, -0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, -0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, -0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, -0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, -0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, -0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, -0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, -0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, -0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, -0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, -0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, -0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, -0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, -0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, -0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, -0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, -0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, -0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, -0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, -0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, -0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, -0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, -0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, -0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, -0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, -0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, -0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, -0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, -0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, -0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, -0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, -0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, -0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, -0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, -0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, -0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, -0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, -0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, -0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, -0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, -0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, -0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, -0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, -0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, -0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, -0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, -0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, -0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, -0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, -0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, -0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, -0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, -0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, -0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, -0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, -0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, -0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, -0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, -0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, -0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, -0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, -0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, -0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, -0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, -0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, -0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, -0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, -0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, -0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, -0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, -0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, -0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, -0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, -0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, -0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, -0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, -0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, -0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, -0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, -0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, -0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, -0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, -0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, -0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, -0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, -0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, -0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, -0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, -0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, -0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, -0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, -0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, -0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, -0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, -0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, -0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, -0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, -0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, -0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, -0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, -0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, -0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, +0x02, 0x01, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x08, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, -0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, -0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, -0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, -0x00, 0xD4, 0xCA, 0x80, 0x01, 0x0E, 0xC9, 0xD4, 0x00, 0x00, 0x00, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x09, 0x0B, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x0A, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, +0x0B, 0xFF, 0xFF, 0xFD, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, +0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, +0x15, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, +0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x42, 0x44, +0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x00, +0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x95, 0xA6, 0x91, 0xE1, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x82, 0x9F, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x61, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, +0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, +0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, +0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, +0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, +0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, +0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, +0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, +0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, +0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, +0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, +0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, +0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, +0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, +0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, +0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, +0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, +0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, +0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, +0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, +0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, +0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, +0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, +0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, +0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, +0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, +0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, +0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, +0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, +0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, +0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, +0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, +0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, +0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, +0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, +0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, +0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, +0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, +0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, +0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x03, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x08, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x09, 0x0B, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x0A, 0x0B, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x0B, +0xFF, 0xFF, 0xFD, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, +0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x42, 0x44, 0x53, +0x54, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, +0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, +0x35, 0x2E, 0x30, 0x0A, 0x00, 0xD4, 0xCA, 0x80, 0x01, 0x0E, 0xC9, 0xD4, 0x00, 0x00, 0x00, 0x00, + /* Europe/Helsinki */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -56930,371 +56512,15 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, -0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, -0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, -0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, -0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, -0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, -0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, -0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, -0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, -0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, -0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, -0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, -0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, -0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, -0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, -0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, -0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, -0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, -0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, -0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, -0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, -0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, -0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, -0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, -0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, -0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, -0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, -0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, -0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, -0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, -0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, -0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, -0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, -0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, -0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, -0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, -0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, -0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, -0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, -0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, -0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, -0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, -0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, -0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, -0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, -0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, -0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, -0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, -0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, -0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, -0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, -0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, -0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, -0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, -0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, -0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, -0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, -0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, -0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, -0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, -0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, -0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, -0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, -0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, -0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, -0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, -0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, -0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, -0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, -0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, -0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, -0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, -0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, -0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, -0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, -0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, -0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, -0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, -0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, -0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, -0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, -0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, -0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, -0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, -0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, -0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, -0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, -0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, -0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, -0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, -0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, -0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, -0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, -0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, -0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, -0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, -0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, -0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, -0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, -0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, -0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, -0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, -0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, -0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, -0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, -0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, -0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, -0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, -0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, -0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, -0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, -0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, -0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, -0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, -0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, -0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, -0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, -0x00, 0xDB, 0xF4, 0x98, 0x01, 0x0B, 0xD7, 0xB5, 0x00, 0x00, 0x00, 0x00, - -/* Europe/Istanbul */ -0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, 0x00, -0x90, 0x8B, 0xF5, 0x98, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xBE, 0xD0, 0xA2, 0x65, 0x63, 0xE0, -0xA3, 0x7B, 0x82, 0x50, 0xA4, 0x4E, 0x80, 0x60, 0xA5, 0x3F, 0xB4, 0xD0, 0xA6, 0x25, 0x27, 0xE0, -0xA7, 0x27, 0x7F, 0xD0, 0xAA, 0x28, 0x28, 0x60, 0xAA, 0xE1, 0xFD, 0xD0, 0xAB, 0xF9, 0x89, 0xE0, -0xAC, 0xC3, 0x31, 0x50, 0xC8, 0x81, 0x3F, 0xE0, 0xC9, 0x01, 0x13, 0x50, 0xC9, 0x4A, 0xF5, 0x60, -0xCA, 0xCE, 0x80, 0x50, 0xCB, 0xCB, 0xAE, 0x60, 0xD2, 0x6B, 0x09, 0x50, 0xD3, 0xA2, 0x39, 0x60, -0xD4, 0x43, 0x02, 0x50, 0xD5, 0x4C, 0x0D, 0xE0, 0xD6, 0x29, 0x7B, 0xD0, 0xD7, 0x2B, 0xEF, 0xE0, -0xD8, 0x09, 0x5D, 0xD0, 0xD9, 0x02, 0x97, 0x60, 0xD9, 0xE9, 0x3F, 0xD0, 0xDA, 0xEB, 0xB3, 0xE0, -0xDB, 0xD2, 0x5C, 0x50, 0xDC, 0xD4, 0xD0, 0x60, 0xDD, 0xB2, 0x3E, 0x50, 0xF1, 0xF4, 0xB9, 0x60, -0xF4, 0x62, 0xEF, 0x50, 0xF5, 0x68, 0x06, 0x60, 0xF6, 0x1F, 0x38, 0xD0, 0x06, 0x6E, 0x93, 0x70, -0x07, 0x39, 0x9A, 0x70, 0x07, 0xFB, 0x75, 0x00, 0x09, 0x19, 0x7C, 0x70, 0x09, 0xD0, 0xCB, 0x00, -0x0A, 0xF9, 0x5E, 0x70, 0x0B, 0xB1, 0xFE, 0x80, 0x0C, 0xD9, 0x40, 0x70, 0x0D, 0xA4, 0x55, 0x80, -0x0E, 0xA6, 0xAD, 0x70, 0x0F, 0x84, 0x37, 0x80, 0x0F, 0xF8, 0x11, 0x50, 0x19, 0x89, 0xB0, 0x70, -0x19, 0xDC, 0xB0, 0xE0, 0x1B, 0xE6, 0xD0, 0xF0, 0x1C, 0xC6, 0xEF, 0xF0, 0x1D, 0x9B, 0x31, 0x70, -0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, -0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, -0x26, 0x0B, 0xFB, 0xF0, 0x27, 0x05, 0x27, 0x70, 0x27, 0xF5, 0x18, 0x70, 0x28, 0xE5, 0x09, 0x70, -0x29, 0xD4, 0xFA, 0x70, 0x2A, 0xC4, 0xEB, 0x70, 0x2B, 0xB4, 0xDC, 0x70, 0x2C, 0xA4, 0xCD, 0x70, -0x2D, 0x8B, 0x83, 0xF0, 0x2E, 0x84, 0xAF, 0x70, 0x2F, 0x74, 0xA0, 0x70, 0x30, 0x64, 0x91, 0x70, -0x31, 0x5D, 0xBC, 0xF0, 0x32, 0x72, 0x97, 0xF0, 0x33, 0x3D, 0x9E, 0xF0, 0x34, 0x52, 0x79, 0xF0, -0x35, 0x1D, 0x80, 0xF0, 0x36, 0x32, 0x5B, 0xF0, 0x36, 0xFD, 0x62, 0xF0, 0x38, 0x1B, 0x78, 0x70, -0x38, 0xDD, 0x44, 0xF0, 0x39, 0xFB, 0x5A, 0x70, 0x3A, 0xBD, 0x26, 0xF0, 0x3B, 0xDB, 0x3C, 0x70, -0x3C, 0xA6, 0x43, 0x70, 0x3D, 0xBB, 0x1E, 0x70, 0x3E, 0x86, 0x25, 0x70, 0x3F, 0x9B, 0x00, 0x70, -0x40, 0x66, 0x07, 0x70, 0x41, 0x84, 0x1C, 0xF0, 0x42, 0x45, 0xE9, 0x70, 0x43, 0x63, 0xFE, 0xF0, -0x44, 0x25, 0xCB, 0x70, 0x45, 0x43, 0xE0, 0xF0, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, -0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, -0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8F, 0xDD, 0x90, 0x4E, 0xAC, 0xA1, 0x90, -0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, -0x53, 0x38, 0xBE, 0x10, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x3E, 0x9E, 0x90, -0x56, 0xF7, 0x30, 0x90, 0x57, 0xCF, 0x2E, 0x50, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, -0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x03, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, -0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x04, 0x04, -0x00, 0x00, 0x1B, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, -0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, -0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, -0x45, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, -0xFF, 0x56, 0xB6, 0xC8, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x8B, 0xF5, 0x98, 0xFF, 0xFF, 0xFF, -0xFF, 0x9B, 0x0C, 0x17, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD5, 0xBE, 0xD0, 0xFF, 0xFF, 0xFF, -0xFF, 0xA2, 0x65, 0x63, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0x82, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xA4, 0x4E, 0x80, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xB4, 0xD0, 0xFF, 0xFF, 0xFF, -0xFF, 0xA6, 0x25, 0x27, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, -0xFF, 0xAA, 0x28, 0x28, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xE1, 0xFD, 0xD0, 0xFF, 0xFF, 0xFF, -0xFF, 0xAB, 0xF9, 0x89, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC3, 0x31, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xC8, 0x81, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x01, 0x13, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xC9, 0x4A, 0xF5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCE, 0x80, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xCB, 0xCB, 0xAE, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x6B, 0x09, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xD3, 0xA2, 0x39, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x43, 0x02, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xD5, 0x4C, 0x0D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x29, 0x7B, 0xD0, 0xFF, 0xFF, 0xFF, -0xFF, 0xD7, 0x2B, 0xEF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x09, 0x5D, 0xD0, 0xFF, 0xFF, 0xFF, -0xFF, 0xD9, 0x02, 0x97, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE9, 0x3F, 0xD0, 0xFF, 0xFF, 0xFF, -0xFF, 0xDA, 0xEB, 0xB3, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xD2, 0x5C, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xDC, 0xD4, 0xD0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xB2, 0x3E, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xF1, 0xF4, 0xB9, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x62, 0xEF, 0x50, 0xFF, 0xFF, 0xFF, -0xFF, 0xF5, 0x68, 0x06, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x1F, 0x38, 0xD0, 0x00, 0x00, 0x00, -0x00, 0x06, 0x6E, 0x93, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x39, 0x9A, 0x70, 0x00, 0x00, 0x00, -0x00, 0x07, 0xFB, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x19, 0x7C, 0x70, 0x00, 0x00, 0x00, -0x00, 0x09, 0xD0, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF9, 0x5E, 0x70, 0x00, 0x00, 0x00, -0x00, 0x0B, 0xB1, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0x40, 0x70, 0x00, 0x00, 0x00, -0x00, 0x0D, 0xA4, 0x55, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xA6, 0xAD, 0x70, 0x00, 0x00, 0x00, -0x00, 0x0F, 0x84, 0x37, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x11, 0x50, 0x00, 0x00, 0x00, -0x00, 0x19, 0x89, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDC, 0xB0, 0xE0, 0x00, 0x00, 0x00, -0x00, 0x1B, 0xE6, 0xD0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xC6, 0xEF, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x1D, 0x9B, 0x31, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, 0x00, -0x00, 0x28, 0xE5, 0x09, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xFA, 0x70, 0x00, 0x00, 0x00, -0x00, 0x2A, 0xC4, 0xEB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xDC, 0x70, 0x00, 0x00, 0x00, -0x00, 0x2C, 0xA4, 0xCD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8B, 0x83, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x2E, 0x84, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xA0, 0x70, 0x00, 0x00, 0x00, -0x00, 0x30, 0x64, 0x91, 0x70, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xBC, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x32, 0x72, 0x97, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x9E, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x34, 0x52, 0x79, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x80, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x36, 0x32, 0x5B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x62, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x38, 0x1B, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x44, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x39, 0xFB, 0x5A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x26, 0xF0, 0x00, 0x00, 0x00, -0x00, 0x3B, 0xDB, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x43, 0x70, 0x00, 0x00, 0x00, -0x00, 0x3D, 0xBB, 0x1E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x25, 0x70, 0x00, 0x00, 0x00, -0x00, 0x3F, 0x9B, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x07, 0x70, 0x00, 0x00, 0x00, -0x00, 0x41, 0x84, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x42, 0x45, 0xE9, 0x70, 0x00, 0x00, 0x00, -0x00, 0x43, 0x63, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xCB, 0x70, 0x00, 0x00, 0x00, -0x00, 0x45, 0x43, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, -0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, -0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, -0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, -0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8F, 0xDD, 0x90, 0x00, 0x00, 0x00, -0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, -0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, -0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x38, 0xBE, 0x10, 0x00, 0x00, 0x00, -0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, -0x00, 0x56, 0x3E, 0x9E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, -0x00, 0x57, 0xCF, 0x2E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, -0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x03, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x04, -0x04, 0x00, 0x00, 0x1B, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x2A, -0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, -0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, -0x0D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, -0x45, 0x45, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x01, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xC7, 0xEA, 0x62, 0x01, -0x3E, 0xDB, 0x9A, 0x00, 0x00, 0x00, 0x00, - -/* Europe/Jersey */ -0x50, 0x48, 0x50, 0x32, 0x01, 0x4A, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, -0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, -0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, -0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, -0xA6, 0x25, 0x60, 0x20, 0xA7, 0x27, 0xC6, 0x20, 0xA8, 0x2A, 0x2C, 0x20, 0xA8, 0xEB, 0xF8, 0xA0, -0xAA, 0x00, 0xD3, 0xA0, 0xAA, 0xD5, 0x15, 0x20, 0xAB, 0xE9, 0xF0, 0x20, 0xAC, 0xC7, 0x6C, 0x20, -0xAD, 0xC9, 0xD2, 0x20, 0xAE, 0xA7, 0x4E, 0x20, 0xAF, 0xA0, 0x79, 0xA0, 0xB0, 0x87, 0x30, 0x20, -0xB1, 0x92, 0xD0, 0xA0, 0xB2, 0x70, 0x4C, 0xA0, 0xB3, 0x72, 0xB2, 0xA0, 0xB4, 0x50, 0x2E, 0xA0, -0xB5, 0x49, 0x5A, 0x20, 0xB6, 0x30, 0x10, 0xA0, 0xB7, 0x32, 0x76, 0xA0, 0xB8, 0x0F, 0xF2, 0xA0, -0xB9, 0x12, 0x58, 0xA0, 0xB9, 0xEF, 0xD4, 0xA0, 0xBA, 0xE9, 0x00, 0x20, 0xBB, 0xD8, 0xF1, 0x20, -0xBC, 0xDB, 0x57, 0x20, 0xBD, 0xB8, 0xD3, 0x20, 0xBE, 0xB1, 0xFE, 0xA0, 0xBF, 0x98, 0xB5, 0x20, -0xC0, 0x9B, 0x1B, 0x20, 0xC1, 0x78, 0x97, 0x20, 0xC2, 0x7A, 0xFD, 0x20, 0xC3, 0x58, 0x79, 0x20, -0xC4, 0x51, 0xA4, 0xA0, 0xC5, 0x38, 0x5B, 0x20, 0xC6, 0x3A, 0xC1, 0x20, 0xC7, 0x58, 0xD6, 0xA0, -0xC7, 0xDA, 0x09, 0xA0, 0xCA, 0x16, 0x26, 0x90, 0xCA, 0x97, 0x59, 0x90, 0xCB, 0xD1, 0x1E, 0x90, -0xCC, 0x77, 0x3B, 0x90, 0xCD, 0xB1, 0x00, 0x90, 0xCE, 0x60, 0x58, 0x10, 0xCF, 0x90, 0xE2, 0x90, -0xD0, 0x6E, 0x5E, 0x90, 0xD1, 0x72, 0x16, 0x10, 0xD1, 0xFB, 0x32, 0x10, 0xD2, 0x69, 0xFE, 0x20, -0xD3, 0x63, 0x29, 0xA0, 0xD4, 0x49, 0xE0, 0x20, 0xD5, 0x1E, 0x21, 0xA0, 0xD5, 0x42, 0xFD, 0x90, -0xD5, 0xDF, 0xE0, 0x10, 0xD6, 0x4E, 0xAC, 0x20, 0xD6, 0xFE, 0x03, 0xA0, 0xD8, 0x2E, 0x8E, 0x20, -0xD8, 0xF9, 0x95, 0x20, 0xDA, 0x0E, 0x70, 0x20, 0xDA, 0xEB, 0xEC, 0x20, 0xDB, 0xE5, 0x17, 0xA0, -0xDC, 0xCB, 0xCE, 0x20, 0xDD, 0xC4, 0xF9, 0xA0, 0xDE, 0xB4, 0xEA, 0xA0, 0xDF, 0xAE, 0x16, 0x20, -0xE0, 0x94, 0xCC, 0xA0, 0xE1, 0x72, 0x48, 0xA0, 0xE2, 0x6B, 0x74, 0x20, 0xE3, 0x52, 0x2A, 0xA0, -0xE4, 0x54, 0x90, 0xA0, 0xE5, 0x32, 0x0C, 0xA0, 0xE6, 0x3D, 0xAD, 0x20, 0xE7, 0x1B, 0x29, 0x20, -0xE8, 0x14, 0x54, 0xA0, 0xE8, 0xFB, 0x0B, 0x20, 0xE9, 0xFD, 0x71, 0x20, 0xEA, 0xDA, 0xED, 0x20, -0xEB, 0xDD, 0x53, 0x20, 0xEC, 0xBA, 0xCF, 0x20, 0xED, 0xB3, 0xFA, 0xA0, 0xEE, 0x9A, 0xB1, 0x20, -0xEF, 0x81, 0x67, 0xA0, 0xF0, 0x9F, 0x7D, 0x20, 0xF1, 0x61, 0x49, 0xA0, 0xF2, 0x7F, 0x5F, 0x20, -0xF3, 0x4A, 0x66, 0x20, 0xF4, 0x5F, 0x41, 0x20, 0xF5, 0x21, 0x0D, 0xA0, 0xF6, 0x3F, 0x23, 0x20, -0xF7, 0x00, 0xEF, 0xA0, 0xF8, 0x1F, 0x05, 0x20, 0xF8, 0xE0, 0xD1, 0xA0, 0xF9, 0xFE, 0xE7, 0x20, -0xFA, 0xC0, 0xB3, 0xA0, 0xFB, 0xE8, 0x03, 0xA0, 0xFC, 0x7B, 0xAB, 0xA0, 0xFD, 0xC7, 0xBB, 0x70, -0x03, 0x70, 0xC6, 0x20, 0x04, 0x29, 0x58, 0x20, 0x05, 0x50, 0xA8, 0x20, 0x06, 0x09, 0x3A, 0x20, -0x07, 0x30, 0x8A, 0x20, 0x07, 0xE9, 0x1C, 0x20, 0x09, 0x10, 0x6C, 0x20, 0x09, 0xC8, 0xFE, 0x20, -0x0A, 0xF0, 0x4E, 0x20, 0x0B, 0xB2, 0x1A, 0xA0, 0x0C, 0xD0, 0x30, 0x20, 0x0D, 0x91, 0xFC, 0xA0, -0x0E, 0xB0, 0x12, 0x20, 0x0F, 0x71, 0xDE, 0xA0, 0x10, 0x99, 0x2E, 0xA0, 0x11, 0x51, 0xC0, 0xA0, -0x12, 0x79, 0x10, 0xA0, 0x13, 0x31, 0xA2, 0xA0, 0x14, 0x58, 0xF2, 0xA0, 0x15, 0x23, 0xEB, 0x90, -0x16, 0x38, 0xC6, 0x90, 0x17, 0x03, 0xCD, 0x90, 0x18, 0x18, 0xA8, 0x90, 0x18, 0xE3, 0xAF, 0x90, -0x19, 0xF8, 0x8A, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xE1, 0xA7, 0x10, 0x1C, 0xAC, 0xAE, 0x10, -0x1D, 0xC1, 0x89, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0xA1, 0x6B, 0x10, 0x20, 0x6C, 0x72, 0x10, -0x21, 0x81, 0x4D, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x61, 0x2F, 0x10, 0x24, 0x2C, 0x36, 0x10, -0x25, 0x4A, 0x4B, 0x90, 0x26, 0x0C, 0x18, 0x10, 0x27, 0x2A, 0x2D, 0x90, 0x27, 0xF5, 0x34, 0x90, -0x29, 0x0A, 0x0F, 0x90, 0x29, 0xD5, 0x16, 0x90, 0x2A, 0xE9, 0xF1, 0x90, 0x2B, 0xB4, 0xF8, 0x90, -0x2C, 0xC9, 0xD3, 0x90, 0x2D, 0x94, 0xDA, 0x90, 0x2E, 0xA9, 0xB5, 0x90, 0x2F, 0x74, 0xBC, 0x90, -0x30, 0x89, 0x97, 0x90, 0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, -0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, -0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, -0x3B, 0xDB, 0x58, 0x90, 0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, -0x3F, 0x9B, 0x1C, 0x90, 0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, -0x43, 0x64, 0x1B, 0x10, 0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, -0x47, 0x23, 0xDF, 0x10, 0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, -0x4A, 0xE3, 0xA3, 0x10, 0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, -0x4E, 0xAC, 0xA1, 0x90, 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, -0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, -0x56, 0x2C, 0x29, 0x90, 0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, -0x59, 0xF5, 0x28, 0x10, 0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, -0x5D, 0xB4, 0xEC, 0x10, 0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, -0x61, 0x7D, 0xEA, 0x90, 0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, -0x65, 0x3D, 0xAE, 0x90, 0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, -0x68, 0xFD, 0x72, 0x90, 0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, -0x6C, 0xC6, 0x71, 0x10, 0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, -0x70, 0x86, 0x35, 0x10, 0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, -0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, -0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, -0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, -0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFB, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, -0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, +0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, +0xCF, 0xD8, 0x33, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, @@ -57429,14 +56655,376 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, -0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, +0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFB, +0xCD, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, -0x00, 0xD4, 0x60, 0x99, 0x01, 0x0F, 0x71, 0x95, 0x00, 0x00, 0x00, 0x00, +0x00, 0xDB, 0xF4, 0x98, 0x01, 0x0B, 0xD7, 0xB5, 0x00, 0x00, 0x00, 0x00, + +/* Europe/Istanbul */ +0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x19, 0x80, 0x00, 0x00, 0x00, +0x90, 0x8B, 0xF5, 0x98, 0x9B, 0x0C, 0x17, 0x60, 0x9B, 0xD5, 0xBE, 0xD0, 0xA2, 0x65, 0x63, 0xE0, +0xA3, 0x7B, 0x82, 0x50, 0xA4, 0x4E, 0x80, 0x60, 0xA5, 0x3F, 0xB4, 0xD0, 0xA6, 0x25, 0x27, 0xE0, +0xA7, 0x27, 0x7F, 0xD0, 0xAA, 0x28, 0x28, 0x60, 0xAA, 0xE1, 0xFD, 0xD0, 0xAB, 0xF9, 0x89, 0xE0, +0xAC, 0xC3, 0x31, 0x50, 0xC8, 0x81, 0x3F, 0xE0, 0xC9, 0x01, 0x13, 0x50, 0xC9, 0x4A, 0xF5, 0x60, +0xCA, 0xCE, 0x80, 0x50, 0xCB, 0xCB, 0xAE, 0x60, 0xD2, 0x6B, 0x09, 0x50, 0xD3, 0xA2, 0x39, 0x60, +0xD4, 0x43, 0x02, 0x50, 0xD5, 0x4C, 0x0D, 0xE0, 0xD6, 0x29, 0x7B, 0xD0, 0xD7, 0x2B, 0xEF, 0xE0, +0xD8, 0x09, 0x5D, 0xD0, 0xD9, 0x02, 0x97, 0x60, 0xD9, 0xE9, 0x3F, 0xD0, 0xDA, 0xEB, 0xB3, 0xE0, +0xDB, 0xD2, 0x5C, 0x50, 0xDC, 0xD4, 0xD0, 0x60, 0xDD, 0xB2, 0x3E, 0x50, 0xF1, 0xF4, 0xB9, 0x60, +0xF4, 0x62, 0xEF, 0x50, 0xF5, 0x68, 0x06, 0x60, 0xF6, 0x1F, 0x38, 0xD0, 0x06, 0x6E, 0x93, 0x70, +0x07, 0x39, 0x9A, 0x70, 0x07, 0xFB, 0x75, 0x00, 0x09, 0x19, 0x7C, 0x70, 0x09, 0xD0, 0xCB, 0x00, +0x0A, 0xF9, 0x5E, 0x70, 0x0B, 0xB1, 0xFE, 0x80, 0x0C, 0xD9, 0x40, 0x70, 0x0D, 0xA4, 0x55, 0x80, +0x0E, 0xA6, 0xAD, 0x70, 0x0F, 0x84, 0x37, 0x80, 0x0F, 0xF8, 0x11, 0x50, 0x19, 0x89, 0xB0, 0x70, +0x19, 0xDC, 0xB0, 0xE0, 0x1B, 0xE6, 0xD0, 0xF0, 0x1C, 0xC6, 0xEF, 0xF0, 0x1D, 0x9B, 0x31, 0x70, +0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, +0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, +0x26, 0x0B, 0xFB, 0xF0, 0x27, 0x05, 0x27, 0x70, 0x27, 0xF5, 0x18, 0x70, 0x28, 0xE5, 0x09, 0x70, +0x29, 0xD4, 0xFA, 0x70, 0x2A, 0xC4, 0xEB, 0x70, 0x2B, 0xB4, 0xDC, 0x70, 0x2C, 0xA4, 0xCD, 0x70, +0x2D, 0x8B, 0x83, 0xF0, 0x2E, 0x84, 0xAF, 0x70, 0x2F, 0x74, 0xA0, 0x70, 0x30, 0x64, 0x91, 0x70, +0x31, 0x5D, 0xBC, 0xF0, 0x32, 0x72, 0x97, 0xF0, 0x33, 0x3D, 0x9E, 0xF0, 0x34, 0x52, 0x79, 0xF0, +0x35, 0x1D, 0x80, 0xF0, 0x36, 0x32, 0x5B, 0xF0, 0x36, 0xFD, 0x62, 0xF0, 0x38, 0x1B, 0x78, 0x70, +0x38, 0xDD, 0x44, 0xF0, 0x39, 0xFB, 0x5A, 0x70, 0x3A, 0xBD, 0x26, 0xF0, 0x3B, 0xDB, 0x3C, 0x70, +0x3C, 0xA6, 0x43, 0x70, 0x3D, 0xBB, 0x1E, 0x70, 0x3E, 0x86, 0x25, 0x70, 0x3F, 0x9B, 0x00, 0x70, +0x40, 0x66, 0x07, 0x70, 0x41, 0x84, 0x1C, 0xF0, 0x42, 0x45, 0xE9, 0x70, 0x43, 0x63, 0xFE, 0xF0, +0x44, 0x25, 0xCB, 0x70, 0x45, 0x43, 0xE0, 0xF0, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, +0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, +0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8F, 0xDD, 0x90, 0x4E, 0xAC, 0xA1, 0x90, +0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, +0x53, 0x38, 0xBE, 0x10, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x3E, 0x9E, 0x90, +0x56, 0xF7, 0x30, 0x90, 0x57, 0xCF, 0x2E, 0x50, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, +0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x03, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x04, 0x04, +0x00, 0x00, 0x1B, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, 0x00, +0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, +0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, 0x30, +0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x45, +0x45, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, +0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, +0xFF, 0x56, 0xB6, 0xC8, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x8B, 0xF5, 0x98, 0xFF, 0xFF, 0xFF, +0xFF, 0x9B, 0x0C, 0x17, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD5, 0xBE, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xA2, 0x65, 0x63, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0x82, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xA4, 0x4E, 0x80, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xB4, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xA6, 0x25, 0x27, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0x7F, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xAA, 0x28, 0x28, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xE1, 0xFD, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xAB, 0xF9, 0x89, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC3, 0x31, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xC8, 0x81, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x01, 0x13, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xC9, 0x4A, 0xF5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCE, 0x80, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xCB, 0xCB, 0xAE, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x6B, 0x09, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xD3, 0xA2, 0x39, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x43, 0x02, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xD5, 0x4C, 0x0D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x29, 0x7B, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xD7, 0x2B, 0xEF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x09, 0x5D, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xD9, 0x02, 0x97, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE9, 0x3F, 0xD0, 0xFF, 0xFF, 0xFF, +0xFF, 0xDA, 0xEB, 0xB3, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xD2, 0x5C, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xDC, 0xD4, 0xD0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xB2, 0x3E, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xF1, 0xF4, 0xB9, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x62, 0xEF, 0x50, 0xFF, 0xFF, 0xFF, +0xFF, 0xF5, 0x68, 0x06, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x1F, 0x38, 0xD0, 0x00, 0x00, 0x00, +0x00, 0x06, 0x6E, 0x93, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x39, 0x9A, 0x70, 0x00, 0x00, 0x00, +0x00, 0x07, 0xFB, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x19, 0x7C, 0x70, 0x00, 0x00, 0x00, +0x00, 0x09, 0xD0, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF9, 0x5E, 0x70, 0x00, 0x00, 0x00, +0x00, 0x0B, 0xB1, 0xFE, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0x40, 0x70, 0x00, 0x00, 0x00, +0x00, 0x0D, 0xA4, 0x55, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xA6, 0xAD, 0x70, 0x00, 0x00, 0x00, +0x00, 0x0F, 0x84, 0x37, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x11, 0x50, 0x00, 0x00, 0x00, +0x00, 0x19, 0x89, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDC, 0xB0, 0xE0, 0x00, 0x00, 0x00, +0x00, 0x1B, 0xE6, 0xD0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xC6, 0xEF, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x1D, 0x9B, 0x31, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x27, 0x05, 0x27, 0x70, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x18, 0x70, 0x00, 0x00, 0x00, +0x00, 0x28, 0xE5, 0x09, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD4, 0xFA, 0x70, 0x00, 0x00, 0x00, +0x00, 0x2A, 0xC4, 0xEB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xDC, 0x70, 0x00, 0x00, 0x00, +0x00, 0x2C, 0xA4, 0xCD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8B, 0x83, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x2E, 0x84, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xA0, 0x70, 0x00, 0x00, 0x00, +0x00, 0x30, 0x64, 0x91, 0x70, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xBC, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x32, 0x72, 0x97, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x9E, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x34, 0x52, 0x79, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x80, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x36, 0x32, 0x5B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x62, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x38, 0x1B, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x44, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x39, 0xFB, 0x5A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x26, 0xF0, 0x00, 0x00, 0x00, +0x00, 0x3B, 0xDB, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x43, 0x70, 0x00, 0x00, 0x00, +0x00, 0x3D, 0xBB, 0x1E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x25, 0x70, 0x00, 0x00, 0x00, +0x00, 0x3F, 0x9B, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x07, 0x70, 0x00, 0x00, 0x00, +0x00, 0x41, 0x84, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x42, 0x45, 0xE9, 0x70, 0x00, 0x00, 0x00, +0x00, 0x43, 0x63, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xCB, 0x70, 0x00, 0x00, 0x00, +0x00, 0x45, 0x43, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, +0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, +0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, +0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, +0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8F, 0xDD, 0x90, 0x00, 0x00, 0x00, +0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, +0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, +0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x38, 0xBE, 0x10, 0x00, 0x00, 0x00, +0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, +0x00, 0x56, 0x3E, 0x9E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, +0x00, 0x57, 0xCF, 0x2E, 0x50, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x03, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x08, 0x09, 0x08, 0x09, +0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x04, +0x04, 0x00, 0x00, 0x1B, 0x28, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x68, 0x00, 0x04, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x11, 0x00, +0x00, 0x38, 0x40, 0x01, 0x15, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, +0x0D, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x0D, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x11, 0x4C, 0x4D, 0x54, 0x00, 0x49, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, +0x45, 0x45, 0x54, 0x00, 0x2B, 0x30, 0x33, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x3E, 0x2D, 0x33, 0x0A, 0x00, 0xC7, 0xEA, 0x62, 0x01, +0x3E, 0xDB, 0x9A, 0x00, 0x00, 0x00, 0x00, + +/* Europe/Jersey */ +0x50, 0x48, 0x50, 0x32, 0x01, 0x4A, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0x80, 0x00, 0x00, 0x00, +0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, +0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, +0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, +0xA6, 0x25, 0x60, 0x20, 0xA7, 0x27, 0xC6, 0x20, 0xA8, 0x2A, 0x2C, 0x20, 0xA8, 0xEB, 0xF8, 0xA0, +0xAA, 0x00, 0xD3, 0xA0, 0xAA, 0xD5, 0x15, 0x20, 0xAB, 0xE9, 0xF0, 0x20, 0xAC, 0xC7, 0x6C, 0x20, +0xAD, 0xC9, 0xD2, 0x20, 0xAE, 0xA7, 0x4E, 0x20, 0xAF, 0xA0, 0x79, 0xA0, 0xB0, 0x87, 0x30, 0x20, +0xB1, 0x92, 0xD0, 0xA0, 0xB2, 0x70, 0x4C, 0xA0, 0xB3, 0x72, 0xB2, 0xA0, 0xB4, 0x50, 0x2E, 0xA0, +0xB5, 0x49, 0x5A, 0x20, 0xB6, 0x30, 0x10, 0xA0, 0xB7, 0x32, 0x76, 0xA0, 0xB8, 0x0F, 0xF2, 0xA0, +0xB9, 0x12, 0x58, 0xA0, 0xB9, 0xEF, 0xD4, 0xA0, 0xBA, 0xE9, 0x00, 0x20, 0xBB, 0xD8, 0xF1, 0x20, +0xBC, 0xDB, 0x57, 0x20, 0xBD, 0xB8, 0xD3, 0x20, 0xBE, 0xB1, 0xFE, 0xA0, 0xBF, 0x98, 0xB5, 0x20, +0xC0, 0x9B, 0x1B, 0x20, 0xC1, 0x78, 0x97, 0x20, 0xC2, 0x7A, 0xFD, 0x20, 0xC3, 0x58, 0x79, 0x20, +0xC4, 0x51, 0xA4, 0xA0, 0xC5, 0x38, 0x5B, 0x20, 0xC6, 0x3A, 0xC1, 0x20, 0xC7, 0x58, 0xD6, 0xA0, +0xC7, 0xDA, 0x09, 0xA0, 0xC8, 0x82, 0x9F, 0x70, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, +0xCE, 0xA2, 0x43, 0x10, 0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, +0xD1, 0xA1, 0x61, 0xE0, 0xD1, 0xFB, 0x32, 0x10, 0xD2, 0x69, 0xFE, 0x20, 0xD3, 0x63, 0x29, 0xA0, +0xD4, 0x49, 0xE0, 0x20, 0xD5, 0x1E, 0x21, 0xA0, 0xD5, 0x42, 0xFD, 0x90, 0xD5, 0xDF, 0xE0, 0x10, +0xD6, 0x4E, 0xAC, 0x20, 0xD6, 0xFE, 0x03, 0xA0, 0xD8, 0x2E, 0x8E, 0x20, 0xD8, 0xF9, 0x95, 0x20, +0xDA, 0x0E, 0x70, 0x20, 0xDA, 0xEB, 0xEC, 0x20, 0xDB, 0xE5, 0x17, 0xA0, 0xDC, 0xCB, 0xCE, 0x20, +0xDD, 0xC4, 0xF9, 0xA0, 0xDE, 0xB4, 0xEA, 0xA0, 0xDF, 0xAE, 0x16, 0x20, 0xE0, 0x94, 0xCC, 0xA0, +0xE1, 0x72, 0x48, 0xA0, 0xE2, 0x6B, 0x74, 0x20, 0xE3, 0x52, 0x2A, 0xA0, 0xE4, 0x54, 0x90, 0xA0, +0xE5, 0x32, 0x0C, 0xA0, 0xE6, 0x3D, 0xAD, 0x20, 0xE7, 0x1B, 0x29, 0x20, 0xE8, 0x14, 0x54, 0xA0, +0xE8, 0xFB, 0x0B, 0x20, 0xE9, 0xFD, 0x71, 0x20, 0xEA, 0xDA, 0xED, 0x20, 0xEB, 0xDD, 0x53, 0x20, +0xEC, 0xBA, 0xCF, 0x20, 0xED, 0xB3, 0xFA, 0xA0, 0xEE, 0x9A, 0xB1, 0x20, 0xEF, 0x81, 0x67, 0xA0, +0xF0, 0x9F, 0x7D, 0x20, 0xF1, 0x61, 0x49, 0xA0, 0xF2, 0x7F, 0x5F, 0x20, 0xF3, 0x4A, 0x66, 0x20, +0xF4, 0x5F, 0x41, 0x20, 0xF5, 0x21, 0x0D, 0xA0, 0xF6, 0x3F, 0x23, 0x20, 0xF7, 0x00, 0xEF, 0xA0, +0xF8, 0x1F, 0x05, 0x20, 0xF8, 0xE0, 0xD1, 0xA0, 0xF9, 0xFE, 0xE7, 0x20, 0xFA, 0xC0, 0xB3, 0xA0, +0xFB, 0xE8, 0x03, 0xA0, 0xFC, 0x7B, 0xAB, 0xA0, 0xFD, 0xC7, 0xBB, 0x70, 0x03, 0x70, 0xC6, 0x20, +0x04, 0x29, 0x58, 0x20, 0x05, 0x50, 0xA8, 0x20, 0x06, 0x09, 0x3A, 0x20, 0x07, 0x30, 0x8A, 0x20, +0x07, 0xE9, 0x1C, 0x20, 0x09, 0x10, 0x6C, 0x20, 0x09, 0xC8, 0xFE, 0x20, 0x0A, 0xF0, 0x4E, 0x20, +0x0B, 0xB2, 0x1A, 0xA0, 0x0C, 0xD0, 0x30, 0x20, 0x0D, 0x91, 0xFC, 0xA0, 0x0E, 0xB0, 0x12, 0x20, +0x0F, 0x71, 0xDE, 0xA0, 0x10, 0x99, 0x2E, 0xA0, 0x11, 0x51, 0xC0, 0xA0, 0x12, 0x79, 0x10, 0xA0, +0x13, 0x31, 0xA2, 0xA0, 0x14, 0x58, 0xF2, 0xA0, 0x15, 0x23, 0xEB, 0x90, 0x16, 0x38, 0xC6, 0x90, +0x17, 0x03, 0xCD, 0x90, 0x18, 0x18, 0xA8, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xF8, 0x8A, 0x90, +0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xE1, 0xA7, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0xC1, 0x89, 0x10, +0x1E, 0x8C, 0x90, 0x10, 0x1F, 0xA1, 0x6B, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x81, 0x4D, 0x10, +0x22, 0x4C, 0x54, 0x10, 0x23, 0x61, 0x2F, 0x10, 0x24, 0x2C, 0x36, 0x10, 0x25, 0x4A, 0x4B, 0x90, +0x26, 0x0C, 0x18, 0x10, 0x27, 0x2A, 0x2D, 0x90, 0x27, 0xF5, 0x34, 0x90, 0x29, 0x0A, 0x0F, 0x90, +0x29, 0xD5, 0x16, 0x90, 0x2A, 0xE9, 0xF1, 0x90, 0x2B, 0xB4, 0xF8, 0x90, 0x2C, 0xC9, 0xD3, 0x90, +0x2D, 0x94, 0xDA, 0x90, 0x2E, 0xA9, 0xB5, 0x90, 0x2F, 0x74, 0xBC, 0x90, 0x30, 0x89, 0x97, 0x90, +0x31, 0x5D, 0xD9, 0x10, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, +0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, +0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, +0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, +0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, +0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, +0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, +0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, +0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, +0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, +0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, +0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, +0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, +0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, +0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, +0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, +0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, +0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, +0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, +0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, +0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, +0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x08, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x09, 0x03, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x0A, +0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, +0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, +0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, +0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, +0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, +0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, +0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, +0x03, 0xFF, 0xFF, 0xFE, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, +0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, +0x15, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, +0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, +0x00, 0x47, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x42, 0x44, +0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0x00, +0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x79, 0x68, 0x3D, 0x00, 0xFF, +0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x82, 0x9F, 0x70, 0xFF, +0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x61, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, +0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, +0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, +0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, +0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, +0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, +0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, +0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, +0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, +0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, +0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, +0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, +0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, +0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, +0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, +0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, +0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, +0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, +0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, +0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, +0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, +0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, +0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, +0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, +0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, +0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, +0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, +0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, +0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, +0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, +0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, +0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, +0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, +0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, +0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, +0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, +0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, +0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, +0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, +0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, +0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, +0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, +0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, +0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, +0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, +0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, +0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, +0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, +0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, +0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x03, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x06, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x08, 0x01, 0x02, 0x01, 0x02, 0x01, 0x07, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x09, 0x03, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x0A, 0x03, +0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, +0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, +0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, +0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, +0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, +0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, +0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, 0x0A, 0x03, +0xFF, 0xFF, 0xFE, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0C, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, +0x00, 0x00, 0x1C, 0x20, 0x01, 0x15, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, +0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, +0x47, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x42, 0x44, 0x53, +0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, +0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, +0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, +0x35, 0x2E, 0x30, 0x0A, 0x00, 0xD4, 0x60, 0x99, 0x01, 0x0F, 0x71, 0x95, 0x00, 0x00, 0x00, 0x00, + /* Europe/Kaliningrad */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -57537,7 +57125,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x6E, 0x67, 0x72, 0x61, 0x64, /* Europe/Kiev */ -0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0xAA, 0x19, 0xA7, 0x64, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xCD, 0x2E, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, @@ -57669,9 +57257,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, 0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, -0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, -0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, -0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, +0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, /* Europe/Kirov */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -57749,6 +57336,143 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x0A, 0x00, 0xE2, 0xBE, 0xE0, 0x01, 0x5E, 0x6B, 0x08, 0x00, 0x00, 0x00, 0x0E, 0x4D, 0x53, 0x4B, 0x2B, 0x30, 0x30, 0x20, 0x2D, 0x20, 0x4B, 0x69, 0x72, 0x6F, 0x76, +/* Europe/Kyiv */ +0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, +0xAA, 0x19, 0xA7, 0x64, 0xB5, 0xA4, 0x19, 0x60, 0xCA, 0xCD, 0x2E, 0xD0, 0xCC, 0xE7, 0x4B, 0x10, +0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, 0xCE, 0xCD, 0xA8, 0x70, 0x15, 0x27, 0xA7, 0xD0, +0x16, 0x18, 0xDC, 0x40, 0x17, 0x08, 0xDB, 0x50, 0x17, 0xFA, 0x0F, 0xC0, 0x18, 0xEA, 0x0E, 0xD0, +0x19, 0xDB, 0x43, 0x40, 0x1A, 0xCC, 0x93, 0xD0, 0x1B, 0xBC, 0xA0, 0xF0, 0x1C, 0xAC, 0x91, 0xF0, +0x1D, 0x9C, 0x82, 0xF0, 0x1E, 0x8C, 0x73, 0xF0, 0x1F, 0x7C, 0x64, 0xF0, 0x20, 0x6C, 0x55, 0xF0, +0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, +0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x0B, 0xFB, 0xF0, 0x26, 0x8D, 0x20, 0xE0, 0x28, 0xE5, 0x17, 0x80, +0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, +0x2D, 0x94, 0xCC, 0x80, 0x2E, 0x84, 0xBD, 0x80, 0x2F, 0x74, 0xAE, 0x80, 0x30, 0x64, 0x9F, 0x80, +0x31, 0x5D, 0xCB, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, +0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, +0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, +0x3C, 0xA6, 0x5F, 0x90, 0x3D, 0xBB, 0x3A, 0x90, 0x3E, 0x86, 0x41, 0x90, 0x3F, 0x9B, 0x1C, 0x90, +0x40, 0x66, 0x23, 0x90, 0x41, 0x84, 0x39, 0x10, 0x42, 0x46, 0x05, 0x90, 0x43, 0x64, 0x1B, 0x10, +0x44, 0x25, 0xE7, 0x90, 0x45, 0x43, 0xFD, 0x10, 0x46, 0x05, 0xC9, 0x90, 0x47, 0x23, 0xDF, 0x10, +0x47, 0xEE, 0xE6, 0x10, 0x49, 0x03, 0xC1, 0x10, 0x49, 0xCE, 0xC8, 0x10, 0x4A, 0xE3, 0xA3, 0x10, +0x4B, 0xAE, 0xAA, 0x10, 0x4C, 0xCC, 0xBF, 0x90, 0x4D, 0x8E, 0x8C, 0x10, 0x4E, 0xAC, 0xA1, 0x90, +0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, +0x53, 0x37, 0x6C, 0x90, 0x54, 0x4C, 0x47, 0x90, 0x55, 0x17, 0x4E, 0x90, 0x56, 0x2C, 0x29, 0x90, +0x56, 0xF7, 0x30, 0x90, 0x58, 0x15, 0x46, 0x10, 0x58, 0xD7, 0x12, 0x90, 0x59, 0xF5, 0x28, 0x10, +0x5A, 0xB6, 0xF4, 0x90, 0x5B, 0xD5, 0x0A, 0x10, 0x5C, 0xA0, 0x11, 0x10, 0x5D, 0xB4, 0xEC, 0x10, +0x5E, 0x7F, 0xF3, 0x10, 0x5F, 0x94, 0xCE, 0x10, 0x60, 0x5F, 0xD5, 0x10, 0x61, 0x7D, 0xEA, 0x90, +0x62, 0x3F, 0xB7, 0x10, 0x63, 0x5D, 0xCC, 0x90, 0x64, 0x1F, 0x99, 0x10, 0x65, 0x3D, 0xAE, 0x90, +0x66, 0x08, 0xB5, 0x90, 0x67, 0x1D, 0x90, 0x90, 0x67, 0xE8, 0x97, 0x90, 0x68, 0xFD, 0x72, 0x90, +0x69, 0xC8, 0x79, 0x90, 0x6A, 0xDD, 0x54, 0x90, 0x6B, 0xA8, 0x5B, 0x90, 0x6C, 0xC6, 0x71, 0x10, +0x6D, 0x88, 0x3D, 0x90, 0x6E, 0xA6, 0x53, 0x10, 0x6F, 0x68, 0x1F, 0x90, 0x70, 0x86, 0x35, 0x10, +0x71, 0x51, 0x3C, 0x10, 0x72, 0x66, 0x17, 0x10, 0x73, 0x31, 0x1E, 0x10, 0x74, 0x45, 0xF9, 0x10, +0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, +0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, +0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, +0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, +0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, +0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, +0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, +0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, +0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, +0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, +0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, +0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, 0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, +0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, +0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0F, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x22, 0xFF, +0xFF, 0xFF, 0xFF, 0x56, 0xB6, 0xC7, 0x64, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x19, 0xA7, 0x64, 0xFF, +0xFF, 0xFF, 0xFF, 0xB5, 0xA4, 0x19, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xCD, 0x2E, 0xD0, 0xFF, +0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xCD, 0xA8, 0x70, 0x00, +0x00, 0x00, 0x00, 0x15, 0x27, 0xA7, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x18, 0xDC, 0x40, 0x00, +0x00, 0x00, 0x00, 0x17, 0x08, 0xDB, 0x50, 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0x0F, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x18, 0xEA, 0x0E, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x19, 0xDB, 0x43, 0x40, 0x00, +0x00, 0x00, 0x00, 0x1A, 0xCC, 0x93, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xA0, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x1C, 0xAC, 0x91, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x82, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x1E, 0x8C, 0x73, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x64, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x20, 0x6C, 0x55, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x46, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x22, 0x4C, 0x37, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x28, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x24, 0x2C, 0x19, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x0A, 0xF0, 0x00, +0x00, 0x00, 0x00, 0x26, 0x0B, 0xFB, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x8D, 0x20, 0xE0, 0x00, +0x00, 0x00, 0x00, 0x28, 0xE5, 0x17, 0x80, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, +0x00, 0x00, 0x00, 0x2E, 0x84, 0xBD, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xAE, 0x80, 0x00, +0x00, 0x00, 0x00, 0x30, 0x64, 0x9F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xCB, 0x00, 0x00, +0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, +0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, +0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, +0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, +0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, +0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, +0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, +0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, +0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, +0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, +0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, +0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, +0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, +0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, +0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, +0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, +0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, +0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, +0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, +0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, +0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, +0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, +0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, +0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, +0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, +0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, +0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, +0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, +0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, +0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, +0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, +0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, +0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, +0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, +0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, +0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, +0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x03, 0x07, +0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, +0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0B, 0x0C, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, 0x0E, 0x0D, +0x00, 0x00, 0x1C, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x9C, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, +0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x10, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x40, 0x01, 0x19, 0x00, 0x00, 0x2A, 0x30, +0x01, 0x1D, 0x00, 0x00, 0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x00, 0x00, +0x1C, 0x20, 0x00, 0x08, 0x00, 0x00, 0x2A, 0x30, 0x01, 0x1D, 0x4C, 0x4D, 0x54, 0x00, 0x4B, 0x4D, +0x54, 0x00, 0x45, 0x45, 0x54, 0x00, 0x4D, 0x53, 0x4B, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, +0x53, 0x54, 0x00, 0x4D, 0x53, 0x44, 0x00, 0x45, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x45, 0x54, 0x2D, 0x32, +0x45, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x2C, 0x4D, 0x31, +0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x34, 0x0A, 0x00, 0xD6, 0x48, 0xC5, 0x01, 0x41, 0x39, 0x12, +0x00, 0x00, 0x00, 0x14, 0x55, 0x6B, 0x72, 0x61, 0x69, 0x6E, 0x65, 0x20, 0x28, 0x6D, 0x6F, 0x73, +0x74, 0x20, 0x61, 0x72, 0x65, 0x61, 0x73, 0x29, + /* Europe/Lisbon */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, @@ -57977,7 +57701,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, -0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, @@ -58013,17 +57737,17 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x0D, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, -0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF5, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, -0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, @@ -58087,7 +57811,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x0D, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, @@ -58097,8 +57821,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Europe/London */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x47, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, @@ -58159,169 +57883,170 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x7F, 0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x05, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, -0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, -0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, -0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, -0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, -0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, -0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, -0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, -0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, -0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, -0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, -0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, -0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, -0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, -0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, -0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, -0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, -0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, -0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, -0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, -0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, -0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, -0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, -0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, -0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, -0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, -0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, -0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, -0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, -0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, -0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, -0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, -0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, -0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, -0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, -0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, -0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, -0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, -0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, -0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, -0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, -0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, -0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, -0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, -0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, -0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, -0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, -0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, -0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, -0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, -0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, -0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, -0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, -0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, -0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, -0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, -0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, -0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, -0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, -0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, -0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, -0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, -0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, -0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, -0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, -0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, -0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, -0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, -0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, -0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, -0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, -0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, -0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, -0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, -0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, -0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, -0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, -0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, -0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, -0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, -0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, -0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, -0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, -0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, -0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, -0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, -0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, -0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, -0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, -0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, -0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, -0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, -0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, -0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, -0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, -0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, -0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, -0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, -0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, -0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, -0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, -0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, -0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, -0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, -0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, -0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, -0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, -0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, -0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, -0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, -0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, -0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, +0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, +0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, +0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, +0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, +0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, +0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, +0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, +0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, +0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, +0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, +0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, +0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, +0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, +0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, +0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, +0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, +0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, +0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, +0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, +0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, +0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, +0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, +0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, +0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, +0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, +0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, +0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, +0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, +0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, +0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, +0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, +0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, +0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, +0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, +0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, +0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, +0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, +0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, +0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, +0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, +0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, +0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, +0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, +0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, +0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, +0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, +0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, +0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, +0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, +0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, +0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, +0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, +0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, +0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, +0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, +0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, +0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, +0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, +0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, +0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, +0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, +0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, +0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, +0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, +0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, +0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, +0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, +0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, +0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, +0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, +0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, +0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, +0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, +0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, +0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, +0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, +0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, +0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, +0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, +0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, +0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, +0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, +0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, +0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, +0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, +0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, +0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, +0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, +0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, +0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, +0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, +0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, +0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, +0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, +0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, +0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, +0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, +0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, +0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, +0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, +0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, +0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, +0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, +0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, +0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, +0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, +0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, +0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, +0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, +0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, +0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, +0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, +0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, +0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, +0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, +0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, +0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, +0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, +0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, +0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, +0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, -0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, -0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, -0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, +0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, +0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, 0xD7, 0xEC, 0xB1, 0x01, 0x12, 0x77, 0x90, 0x00, 0x00, 0x00, 0x00, @@ -58573,8 +58298,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x1C, 0x20, 0x01, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x17, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x17, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, -0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, +0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, +0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1B, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x36, 0xB5, 0x00, 0xFF, 0xFF, 0xFF, @@ -58674,8 +58399,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x17, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x17, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x12, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x17, 0x4C, 0x4D, 0x54, 0x00, 0x57, 0x45, 0x53, 0x54, 0x00, 0x57, 0x45, 0x54, 0x00, 0x57, 0x45, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, -0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, +0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xC6, 0xF9, 0x80, 0x01, 0x0D, 0x09, 0xB2, 0x00, 0x00, 0x00, 0x10, 0x53, 0x70, 0x61, 0x69, 0x6E, 0x20, 0x28, 0x6D, 0x61, 0x69, 0x6E, 0x6C, 0x61, 0x6E, @@ -58727,7 +58452,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, -0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -58829,7 +58554,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, -0x7F, 0x90, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, +0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, @@ -60259,20 +59984,20 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, +0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, +0x03, 0x04, 0x03, 0x04, 0x03, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, -0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, +0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, +0x20, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -60361,21 +60086,21 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, -0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, +0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x06, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x04, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, @@ -60508,20 +60233,20 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, +0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, +0x03, 0x04, 0x03, 0x04, 0x03, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, -0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, +0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, +0x20, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -60610,21 +60335,21 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, -0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, +0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x06, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x04, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, @@ -60635,7 +60360,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, -0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, @@ -60671,17 +60396,17 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, -0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF2, 0x3C, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, -0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, @@ -60745,7 +60470,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x11, 0x44, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, @@ -60843,7 +60568,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x20, 0x6C, 0x55, 0xF0, 0x21, 0x5C, 0x46, 0xF0, 0x22, 0x4C, 0x37, 0xF0, 0x23, 0x3C, 0x28, 0xF0, 0x24, 0x2C, 0x19, 0xF0, 0x25, 0x1C, 0x0A, 0xF0, 0x26, 0x8D, 0x2E, 0xF0, 0x29, 0xD5, 0x08, 0x80, 0x2A, 0xC4, 0xF9, 0x80, 0x2B, 0xB4, 0xEA, 0x80, 0x2C, 0xA4, 0xDB, 0x80, 0x2D, 0x94, 0xCC, 0x80, -0x2D, 0xC2, 0xC6, 0xD0, 0x2E, 0x84, 0x85, 0x40, 0x2F, 0x74, 0x84, 0x50, 0x30, 0x64, 0x67, 0x40, +0x2D, 0xC2, 0xC6, 0xD0, 0x2E, 0x84, 0xAF, 0x70, 0x2F, 0x74, 0xA0, 0x70, 0x30, 0x64, 0x91, 0x70, 0x31, 0x5D, 0xA0, 0xD0, 0x32, 0x72, 0xA6, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x34, 0x52, 0x96, 0x10, 0x35, 0x1D, 0x9D, 0x10, 0x36, 0x32, 0x78, 0x10, 0x36, 0xFD, 0x7F, 0x10, 0x38, 0x1B, 0x94, 0x90, 0x38, 0xDD, 0x61, 0x10, 0x39, 0xFB, 0x76, 0x90, 0x3A, 0xBD, 0x43, 0x10, 0x3B, 0xDB, 0x58, 0x90, @@ -60855,7 +60580,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x4F, 0x6E, 0x6E, 0x10, 0x50, 0x8C, 0x83, 0x90, 0x51, 0x57, 0x8A, 0x90, 0x52, 0x6C, 0x65, 0x90, 0x53, 0x37, 0x5E, 0x80, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, -0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, 0x0C, +0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, 0x00, @@ -60888,8 +60613,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xF0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC4, 0xF9, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xEA, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xDB, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xCC, 0x80, 0x00, 0x00, 0x00, 0x00, 0x2D, 0xC2, 0xC6, -0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0x85, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0x84, -0x50, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x67, 0x40, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, +0xD0, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xAF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xA0, +0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0x91, 0x70, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xA0, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, @@ -60910,7 +60635,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x5E, 0x80, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x1D, 0x60, 0x01, 0x02, 0x03, 0x06, 0x04, 0x05, 0x04, 0x05, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x03, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x09, 0x08, -0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x03, 0x07, 0x03, 0x09, 0x08, +0x09, 0x08, 0x09, 0x08, 0x02, 0x0A, 0x0B, 0x0A, 0x0B, 0x0A, 0x07, 0x08, 0x09, 0x08, 0x09, 0x08, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0C, 0x0D, 0x0E, 0x08, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x04, @@ -60931,7 +60656,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, -0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, @@ -60967,17 +60692,17 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, -0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xEF, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, -0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, @@ -61041,7 +60766,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, @@ -61988,87 +61713,85 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x00, -0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x08, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x11, -0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0xF0, 0xEA, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0xD4, 0x06, 0x86, -0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x17, 0x6A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xE2, 0x71, 0x00, -0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF7, 0x4C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xC2, 0x53, 0x00, -0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC, 0x90, -0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, -0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, -0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, -0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, -0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, -0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, -0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, -0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, -0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, -0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, -0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, -0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, -0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, -0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, -0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, -0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, -0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, -0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, -0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, -0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, -0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, -0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, -0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, -0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, -0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, -0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, -0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, -0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, -0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, -0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, -0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, -0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, -0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, -0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, -0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, -0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, -0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, -0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, -0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, -0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, -0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, -0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, -0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, -0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, -0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, -0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, -0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, -0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, -0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, -0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, -0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, -0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, -0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, -0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, -0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, -0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, -0x01, 0x03, 0x02, 0x03, 0x02, 0x03, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, -0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, -0x06, 0xFA, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, -0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, -0x42, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, -0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, -0x2E, 0x30, 0x2F, 0x33, 0x0A, 0x00, 0xD1, 0x46, 0x38, 0x01, 0x21, 0x2D, 0xF2, 0x00, 0x00, 0x00, -0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0D, +0xFF, 0xFF, 0xFF, 0xFF, 0x71, 0xD4, 0x04, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x17, 0x6A, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xE2, 0x71, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xF7, 0x4C, 0x00, +0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xC2, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, +0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0xDC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, +0x00, 0x00, 0x00, 0x00, 0x17, 0xF3, 0xBE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, +0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, +0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, +0x00, 0x00, 0x00, 0x00, 0x1D, 0x9C, 0x9F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, +0x00, 0x00, 0x00, 0x00, 0x1F, 0x7C, 0x81, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, +0x00, 0x00, 0x00, 0x00, 0x21, 0x5C, 0x63, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, +0x00, 0x00, 0x00, 0x00, 0x23, 0x3C, 0x45, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, +0x00, 0x00, 0x00, 0x00, 0x25, 0x1C, 0x27, 0x10, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, +0x00, 0x00, 0x00, 0x00, 0x27, 0x05, 0x43, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, +0x00, 0x00, 0x00, 0x00, 0x28, 0xE5, 0x25, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, +0x00, 0x00, 0x00, 0x00, 0x2A, 0xC5, 0x07, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, +0x00, 0x00, 0x00, 0x00, 0x2C, 0xA4, 0xE9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, +0x00, 0x00, 0x00, 0x00, 0x2E, 0x84, 0xCB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, +0x00, 0x00, 0x00, 0x00, 0x30, 0x64, 0xAD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, +0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, +0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, +0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, +0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, +0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, +0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, +0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, +0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, +0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, +0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, +0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, +0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, +0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, +0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, +0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, +0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, +0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, +0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, +0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, +0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, +0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, +0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, +0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, +0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, +0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, +0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, +0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, +0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, +0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, +0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, +0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, +0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, +0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, +0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, +0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, +0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, +0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, +0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, +0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, +0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, +0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, +0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, +0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x00, +0x00, 0x08, 0xEC, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x4C, 0x4D, 0x54, +0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, +0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, 0x0A, +0x00, 0xD1, 0x46, 0x38, 0x01, 0x21, 0x2D, 0xF2, 0x00, 0x00, 0x00, 0x00, /* Europe/Vatican */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x56, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -62116,20 +61839,20 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, 0x7F, 0x8E, 0x7F, 0x90, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, +0x05, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x04, 0x03, 0x04, 0x03, 0x01, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x02, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, 0x03, 0x04, -0x03, 0x04, 0x03, 0x04, 0x03, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, +0x03, 0x04, 0x03, 0x04, 0x03, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, +0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x0E, 0x10, 0x00, -0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, -0x10, 0x00, 0x09, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, +0x09, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x09, 0x00, 0x00, 0x1C, +0x20, 0x01, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -62218,21 +61941,21 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, -0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03, +0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x01, 0x06, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x04, 0x05, 0x04, 0x05, 0x04, 0x02, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x03, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, -0x06, 0x07, 0x06, 0x07, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x04, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB4, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, 0x0E, 0x10, -0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x0D, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, +0x00, 0x0D, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x0D, 0x00, 0x00, +0x1C, 0x20, 0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x52, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x43, 0x45, 0x54, 0x2D, 0x31, 0x43, 0x45, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x33, @@ -62768,7 +62491,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x00, 0x00, 0x00, 0xCA, 0x02, 0x35, 0xE0, 0xCC, 0xE7, 0x4B, 0x10, 0xCD, 0xA9, 0x17, 0x90, 0xCE, 0xA2, 0x43, 0x10, -0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0xA1, 0x8C, 0x10, 0xD2, 0x4E, 0x40, 0x90, +0xCF, 0x92, 0x34, 0x10, 0xD0, 0x82, 0x25, 0x10, 0xD1, 0x72, 0x16, 0x10, 0xD2, 0x4E, 0x40, 0x90, 0x18, 0xE3, 0xAF, 0x90, 0x19, 0xD3, 0xA0, 0x90, 0x1A, 0xC3, 0x91, 0x90, 0x1B, 0xBC, 0xBD, 0x10, 0x1C, 0xAC, 0xAE, 0x10, 0x1D, 0x9C, 0x9F, 0x10, 0x1E, 0x8C, 0x90, 0x10, 0x1F, 0x7C, 0x81, 0x10, 0x20, 0x6C, 0x72, 0x10, 0x21, 0x5C, 0x63, 0x10, 0x22, 0x4C, 0x54, 0x10, 0x23, 0x3C, 0x45, 0x10, @@ -62804,17 +62527,17 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x0E, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0D, -0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF0, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x3C, 0xF4, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x02, 0x35, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0xE7, 0x4B, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xA9, 0x17, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xA2, 0x43, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x92, 0x34, 0x10, -0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xA1, 0x8C, 0x10, +0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x25, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x4E, 0x40, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD3, 0xA0, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xBD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, @@ -62878,7 +62601,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x00, -0x00, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, +0x00, 0x0E, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x43, 0x45, 0x54, 0x00, 0x43, 0x45, 0x53, 0x54, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, @@ -63161,8 +62884,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* GB */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, @@ -63223,177 +62946,178 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x7F, 0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x05, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, -0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, -0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, -0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, -0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, -0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, -0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, -0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, -0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, -0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, -0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, -0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, -0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, -0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, -0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, -0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, -0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, -0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, -0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, -0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, -0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, -0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, -0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, -0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, -0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, -0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, -0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, -0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, -0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, -0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, -0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, -0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, -0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, -0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, -0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, -0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, -0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, -0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, -0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, -0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, -0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, -0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, -0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, -0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, -0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, -0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, -0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, -0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, -0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, -0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, -0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, -0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, -0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, -0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, -0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, -0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, -0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, -0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, -0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, -0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, -0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, -0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, -0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, -0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, -0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, -0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, -0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, -0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, -0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, -0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, -0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, -0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, -0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, -0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, -0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, -0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, -0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, -0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, -0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, -0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, -0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, -0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, -0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, -0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, -0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, -0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, -0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, -0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, -0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, -0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, -0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, -0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, -0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, -0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, -0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, -0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, -0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, -0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, -0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, -0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, -0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, -0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, -0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, -0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, -0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, -0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, -0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, -0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, -0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, -0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, -0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, -0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, +0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, +0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, +0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, +0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, +0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, +0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, +0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, +0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, +0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, +0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, +0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, +0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, +0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, +0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, +0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, +0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, +0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, +0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, +0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, +0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, +0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, +0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, +0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, +0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, +0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, +0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, +0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, +0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, +0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, +0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, +0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, +0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, +0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, +0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, +0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, +0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, +0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, +0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, +0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, +0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, +0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, +0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, +0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, +0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, +0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, +0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, +0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, +0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, +0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, +0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, +0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, +0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, +0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, +0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, +0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, +0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, +0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, +0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, +0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, +0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, +0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, +0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, +0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, +0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, +0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, +0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, +0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, +0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, +0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, +0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, +0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, +0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, +0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, +0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, +0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, +0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, +0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, +0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, +0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, +0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, +0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, +0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, +0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, +0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, +0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, +0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, +0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, +0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, +0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, +0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, +0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, +0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, +0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, +0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, +0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, +0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, +0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, +0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, +0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, +0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, +0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, +0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, +0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, +0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, +0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, +0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, +0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, +0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, +0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, +0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, +0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, +0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, +0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, +0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, +0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, +0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, +0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, +0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, +0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, +0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, +0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, -0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, -0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, -0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, +0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, +0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* GB-Eire */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, 0x9B, 0x26, 0xAD, 0xA0, 0x9B, 0xD6, 0x05, 0x20, 0x9C, 0xCF, 0x30, 0xA0, 0x9D, 0xA4, 0xC3, 0xA0, 0x9E, 0x9C, 0x9D, 0xA0, 0x9F, 0x97, 0x1A, 0xA0, 0xA0, 0x85, 0xBA, 0x20, 0xA1, 0x76, 0xFC, 0xA0, 0xA2, 0x65, 0x9C, 0x20, 0xA3, 0x7B, 0xC8, 0xA0, 0xA4, 0x4E, 0xB8, 0xA0, 0xA5, 0x3F, 0xFB, 0x20, @@ -63454,169 +63178,170 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x74, 0x45, 0xF9, 0x10, 0x75, 0x11, 0x00, 0x10, 0x76, 0x2F, 0x15, 0x90, 0x76, 0xF0, 0xE2, 0x10, 0x78, 0x0E, 0xF7, 0x90, 0x78, 0xD0, 0xC4, 0x10, 0x79, 0xEE, 0xD9, 0x90, 0x7A, 0xB0, 0xA6, 0x10, 0x7B, 0xCE, 0xBB, 0x90, 0x7C, 0x99, 0xC2, 0x90, 0x7D, 0xAE, 0x9D, 0x90, 0x7E, 0x79, 0xA4, 0x90, -0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x7F, 0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, -0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, +0x05, 0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, +0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, -0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, -0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, -0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, -0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, -0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, -0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, -0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, -0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, -0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, -0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, -0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, -0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, -0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, -0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, -0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, -0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, -0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, -0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, -0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, -0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, -0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, -0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, 0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, -0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, -0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, -0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, -0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, -0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, -0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, -0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, -0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, -0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, -0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, -0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, -0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, -0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, -0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, -0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, -0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, -0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, -0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, -0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, -0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, -0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, -0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, -0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, -0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, -0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, -0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, -0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, -0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, -0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, -0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, -0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, -0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, -0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, -0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, -0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, -0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, -0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, -0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, -0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, -0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, -0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, -0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, -0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, -0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, -0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, -0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, 0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, -0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, -0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, -0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, -0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, -0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, -0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, -0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, 0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, -0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, -0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, -0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, -0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, -0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, -0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, -0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, 0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, -0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, -0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, -0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, -0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, -0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, -0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, -0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, -0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, -0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, -0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, -0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, 0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, -0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, 0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, -0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, -0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, -0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, -0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, -0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, 0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, -0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, 0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, -0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, 0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, -0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, -0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, 0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, -0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, 0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, -0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, -0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, -0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, -0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, -0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, 0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, -0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, 0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, -0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, -0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, -0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, -0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, -0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, -0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, 0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, -0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, 0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, -0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, 0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, -0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, 0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, -0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, -0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, -0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, -0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, -0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x8E, 0x7F, 0x90, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, +0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00, 0x08, 0x00, +0x00, 0x00, 0x11, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x5D, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, +0x26, 0xAD, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0xD6, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, +0xCF, 0x30, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xA4, 0xC3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, +0x9C, 0x9D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x97, 0x1A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, +0x85, 0xBA, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x76, 0xFC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, +0x65, 0x9C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x7B, 0xC8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, +0x4E, 0xB8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x3F, 0xFB, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, +0x25, 0x60, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x27, 0xC6, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, +0x2A, 0x2C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xEB, 0xF8, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, +0x00, 0xD3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xD5, 0x15, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, +0xE9, 0xF0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xC7, 0x6C, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, +0xC9, 0xD2, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0xA7, 0x4E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, +0xA0, 0x79, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x87, 0x30, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, +0x92, 0xD0, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x70, 0x4C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, +0x72, 0xB2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x50, 0x2E, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, +0x49, 0x5A, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x30, 0x10, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, +0x32, 0x76, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x0F, 0xF2, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, +0x12, 0x58, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xEF, 0xD4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBA, +0xE9, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xD8, 0xF1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, +0xDB, 0x57, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xB8, 0xD3, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, +0xB1, 0xFE, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x98, 0xB5, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, +0x9B, 0x1B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x78, 0x97, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, +0x7A, 0xFD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x58, 0x79, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, +0x51, 0xA4, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x38, 0x5B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, +0x3A, 0xC1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x58, 0xD6, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, +0xDA, 0x09, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x16, 0x26, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, +0x97, 0x59, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0xD1, 0x1E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, +0x77, 0x3B, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xB1, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, +0x60, 0x58, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x90, 0xE2, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, +0x6E, 0x5E, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x72, 0x16, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, +0xFB, 0x32, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x69, 0xFE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, +0x63, 0x29, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x49, 0xE0, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0x1E, 0x21, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xFD, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, +0xDF, 0xE0, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x4E, 0xAC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, +0xFE, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x8E, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, +0xF9, 0x95, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x70, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, +0xEB, 0xEC, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xE5, 0x17, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, +0xCB, 0xCE, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xC4, 0xF9, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, +0xB4, 0xEA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xAE, 0x16, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, +0x94, 0xCC, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x72, 0x48, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, +0x6B, 0x74, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x52, 0x2A, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, +0x54, 0x90, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x32, 0x0C, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, +0x3D, 0xAD, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1B, 0x29, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, +0x14, 0x54, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0xFB, 0x0B, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, +0xFD, 0x71, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xDA, 0xED, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, +0xDD, 0x53, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xBA, 0xCF, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, +0xB3, 0xFA, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x9A, 0xB1, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, +0x81, 0x67, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0x7D, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, +0x61, 0x49, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x5F, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, +0x4A, 0x66, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x41, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, +0x21, 0x0D, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x23, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, +0x00, 0xEF, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x1F, 0x05, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, +0xE0, 0xD1, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xFE, 0xE7, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, +0xC0, 0xB3, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x03, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, +0x7B, 0xAB, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC7, 0xBB, 0x70, 0x00, 0x00, 0x00, 0x00, 0x03, +0x70, 0xC6, 0x20, 0x00, 0x00, 0x00, 0x00, 0x04, 0x29, 0x58, 0x20, 0x00, 0x00, 0x00, 0x00, 0x05, +0x50, 0xA8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x3A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, +0x30, 0x8A, 0x20, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE9, 0x1C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, +0x10, 0x6C, 0x20, 0x00, 0x00, 0x00, 0x00, 0x09, 0xC8, 0xFE, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0A, +0xF0, 0x4E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xB2, 0x1A, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0C, +0xD0, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xFC, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x0E, +0xB0, 0x12, 0x20, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x71, 0xDE, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x10, +0x99, 0x2E, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x51, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x12, +0x79, 0x10, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x31, 0xA2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x14, +0x58, 0xF2, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x23, 0xEB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x16, +0x38, 0xC6, 0x90, 0x00, 0x00, 0x00, 0x00, 0x17, 0x03, 0xCD, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, +0x18, 0xA8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x18, 0xE3, 0xAF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x19, +0xF8, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xC3, 0x91, 0x90, 0x00, 0x00, 0x00, 0x00, 0x1B, +0xE1, 0xA7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xAC, 0xAE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1D, +0xC1, 0x89, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x8C, 0x90, 0x10, 0x00, 0x00, 0x00, 0x00, 0x1F, +0xA1, 0x6B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0x6C, 0x72, 0x10, 0x00, 0x00, 0x00, 0x00, 0x21, +0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x22, 0x4C, 0x54, 0x10, 0x00, 0x00, 0x00, 0x00, 0x23, +0x61, 0x2F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x24, 0x2C, 0x36, 0x10, 0x00, 0x00, 0x00, 0x00, 0x25, +0x4A, 0x4B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0C, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, 0x27, +0x2A, 0x2D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x27, 0xF5, 0x34, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, +0x0A, 0x0F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x29, 0xD5, 0x16, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, +0xE9, 0xF1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xB4, 0xF8, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2C, +0xC9, 0xD3, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x94, 0xDA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2E, +0xA9, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x74, 0xBC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x30, +0x89, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x31, 0x5D, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x32, +0x72, 0xB4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x33, 0x3D, 0xBB, 0x10, 0x00, 0x00, 0x00, 0x00, 0x34, +0x52, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x35, 0x1D, 0x9D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, +0x32, 0x78, 0x10, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFD, 0x7F, 0x10, 0x00, 0x00, 0x00, 0x00, 0x38, +0x1B, 0x94, 0x90, 0x00, 0x00, 0x00, 0x00, 0x38, 0xDD, 0x61, 0x10, 0x00, 0x00, 0x00, 0x00, 0x39, +0xFB, 0x76, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xBD, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0x3B, +0xDB, 0x58, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA6, 0x5F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3D, +0xBB, 0x3A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x86, 0x41, 0x90, 0x00, 0x00, 0x00, 0x00, 0x3F, +0x9B, 0x1C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x40, 0x66, 0x23, 0x90, 0x00, 0x00, 0x00, 0x00, 0x41, +0x84, 0x39, 0x10, 0x00, 0x00, 0x00, 0x00, 0x42, 0x46, 0x05, 0x90, 0x00, 0x00, 0x00, 0x00, 0x43, +0x64, 0x1B, 0x10, 0x00, 0x00, 0x00, 0x00, 0x44, 0x25, 0xE7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x45, +0x43, 0xFD, 0x10, 0x00, 0x00, 0x00, 0x00, 0x46, 0x05, 0xC9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x47, +0x23, 0xDF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x47, 0xEE, 0xE6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, +0x03, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0xCE, 0xC8, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4A, +0xE3, 0xA3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xAE, 0xAA, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4C, +0xCC, 0xBF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x8E, 0x8C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x4E, +0xAC, 0xA1, 0x90, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x6E, 0x6E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x50, +0x8C, 0x83, 0x90, 0x00, 0x00, 0x00, 0x00, 0x51, 0x57, 0x8A, 0x90, 0x00, 0x00, 0x00, 0x00, 0x52, +0x6C, 0x65, 0x90, 0x00, 0x00, 0x00, 0x00, 0x53, 0x37, 0x6C, 0x90, 0x00, 0x00, 0x00, 0x00, 0x54, +0x4C, 0x47, 0x90, 0x00, 0x00, 0x00, 0x00, 0x55, 0x17, 0x4E, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, +0x2C, 0x29, 0x90, 0x00, 0x00, 0x00, 0x00, 0x56, 0xF7, 0x30, 0x90, 0x00, 0x00, 0x00, 0x00, 0x58, +0x15, 0x46, 0x10, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD7, 0x12, 0x90, 0x00, 0x00, 0x00, 0x00, 0x59, +0xF5, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB6, 0xF4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x5B, +0xD5, 0x0A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xA0, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5D, +0xB4, 0xEC, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x7F, 0xF3, 0x10, 0x00, 0x00, 0x00, 0x00, 0x5F, +0x94, 0xCE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x60, 0x5F, 0xD5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, +0x7D, 0xEA, 0x90, 0x00, 0x00, 0x00, 0x00, 0x62, 0x3F, 0xB7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x63, +0x5D, 0xCC, 0x90, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1F, 0x99, 0x10, 0x00, 0x00, 0x00, 0x00, 0x65, +0x3D, 0xAE, 0x90, 0x00, 0x00, 0x00, 0x00, 0x66, 0x08, 0xB5, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, +0x1D, 0x90, 0x90, 0x00, 0x00, 0x00, 0x00, 0x67, 0xE8, 0x97, 0x90, 0x00, 0x00, 0x00, 0x00, 0x68, +0xFD, 0x72, 0x90, 0x00, 0x00, 0x00, 0x00, 0x69, 0xC8, 0x79, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6A, +0xDD, 0x54, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA8, 0x5B, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6C, +0xC6, 0x71, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x88, 0x3D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x6E, +0xA6, 0x53, 0x10, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x68, 0x1F, 0x90, 0x00, 0x00, 0x00, 0x00, 0x70, +0x86, 0x35, 0x10, 0x00, 0x00, 0x00, 0x00, 0x71, 0x51, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x72, +0x66, 0x17, 0x10, 0x00, 0x00, 0x00, 0x00, 0x73, 0x31, 0x1E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x74, +0x45, 0xF9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x75, 0x11, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x76, +0x2F, 0x15, 0x90, 0x00, 0x00, 0x00, 0x00, 0x76, 0xF0, 0xE2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x78, +0x0E, 0xF7, 0x90, 0x00, 0x00, 0x00, 0x00, 0x78, 0xD0, 0xC4, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, +0xEE, 0xD9, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xB0, 0xA6, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7B, +0xCE, 0xBB, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x99, 0xC2, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7D, +0xAE, 0x9D, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x79, 0xA4, 0x90, 0x00, 0x00, 0x00, 0x00, 0x7F, +0x8E, 0x7F, 0x90, 0x04, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, -0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x02, +0x01, 0x02, 0x01, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x04, 0x06, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, -0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0x05, 0x06, 0xFF, 0xFF, 0xFF, -0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, -0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, -0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, -0x4D, 0x54, 0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x05, +0x07, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, +0x07, 0x06, 0x07, 0x06, 0x07, 0xFF, 0xFF, 0xFF, 0xB5, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x10, 0x01, +0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x1C, 0x20, 0x01, 0x0C, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x0E, 0x10, 0x01, 0x04, 0x00, +0x00, 0x00, 0x00, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x42, 0x53, 0x54, 0x00, 0x47, 0x4D, 0x54, +0x00, 0x42, 0x44, 0x53, 0x54, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x47, 0x4D, 0x54, 0x30, 0x42, 0x53, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x35, 0x2E, 0x30, 0x2F, 0x31, 0x2C, 0x4D, 0x31, 0x30, 0x2E, 0x35, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -63673,8 +63398,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Hongkong */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0x85, 0x69, 0x63, 0x90, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x16, 0x85, 0x69, 0x63, 0x90, 0xCA, 0x4D, 0x31, 0x30, 0xCA, 0xDB, 0x93, 0x30, 0xCB, 0x4B, 0x71, 0x78, 0xD2, 0xA0, 0xDE, 0x90, 0xD3, 0x6B, 0xD7, 0x80, 0xD4, 0x93, 0x58, 0xB8, 0xD5, 0x42, 0xB0, 0x38, 0xD6, 0x73, 0x3A, 0xB8, 0xD7, 0x3E, 0x41, 0xB8, 0xD8, 0x2E, 0x32, 0xB8, 0xD8, 0xF9, 0x39, 0xB8, 0xDA, 0x0E, 0x14, 0xB8, @@ -63692,62 +63417,64 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x04, 0x4D, 0xE6, 0xB8, 0x05, 0x47, 0x04, 0x28, 0x06, 0x37, 0x03, 0x38, 0x07, 0x26, 0xE6, 0x28, 0x07, 0x83, 0x3D, 0x38, 0x09, 0x06, 0xC8, 0x28, 0x09, 0xF6, 0xC7, 0x38, 0x0A, 0xE6, 0xAA, 0x28, 0x0B, 0xD6, 0xA9, 0x38, 0x0C, 0xC6, 0x8C, 0x28, 0x11, 0x9B, 0x39, 0x38, 0x12, 0x6F, 0x6C, 0xA8, -0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, -0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, 0x77, 0x88, 0x01, 0x0D, 0x00, 0x00, 0x7E, -0x90, 0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x4C, -0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, 0x00, 0x48, 0x4B, 0x57, 0x54, -0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, -0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, -0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0x69, 0x63, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x4D, 0x31, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xDB, 0x93, 0x30, -0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x4B, 0x71, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA0, 0xDE, 0x90, -0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x6B, 0xD7, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x93, 0x58, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xB0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x73, 0x3A, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x3E, 0x41, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x32, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x39, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x14, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xD9, 0x1B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xED, 0xF6, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xB8, 0xFD, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xCD, 0xD8, 0xB8, -0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xA2, 0x1A, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xB6, 0xF5, 0x38, -0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x81, 0xFC, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x96, 0xC9, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x4F, 0x69, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x76, 0xAB, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x2F, 0x4B, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x5F, 0xC7, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x0F, 0x2D, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x3F, 0xA9, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xF8, 0x49, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x1F, 0x8B, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0xD8, 0x2B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xFF, 0x6D, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xB8, 0x0D, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xDF, 0x4F, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x97, 0xEF, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xC8, 0x6C, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x77, 0xD1, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xA8, 0x4E, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x57, 0xB3, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x88, 0x30, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x40, 0xD0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x68, 0x12, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x20, 0xB2, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x47, 0xF4, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x25, 0x7E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x15, 0x61, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x05, 0x60, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0x43, 0x28, -0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xE5, 0x42, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDE, 0x5F, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xCE, 0x5E, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBE, 0x41, 0xA8, -0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xAE, 0x40, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x23, 0xA8, -0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7E, 0x05, 0xA8, -0x00, 0x00, 0x00, 0x00, 0x02, 0x6E, 0x04, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5D, 0xE7, 0xA8, -0x00, 0x00, 0x00, 0x00, 0x04, 0x4D, 0xE6, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x05, 0x47, 0x04, 0x28, -0x00, 0x00, 0x00, 0x00, 0x06, 0x37, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x26, 0xE6, 0x28, -0x00, 0x00, 0x00, 0x00, 0x07, 0x83, 0x3D, 0x38, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0xC8, 0x28, -0x00, 0x00, 0x00, 0x00, 0x09, 0xF6, 0xC7, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xE6, 0xAA, 0x28, -0x00, 0x00, 0x00, 0x00, 0x0B, 0xD6, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC6, 0x8C, 0x28, -0x00, 0x00, 0x00, 0x00, 0x11, 0x9B, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x12, 0x6F, 0x6C, 0xA8, -0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, +0x01, 0x02, 0x03, 0x04, 0x07, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, +0x05, 0x02, 0x05, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, +0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, +0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, +0x07, 0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, 0x77, 0x88, 0x01, 0x0D, 0x00, 0x00, 0x7E, -0x90, 0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x4C, -0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, 0x00, 0x48, 0x4B, 0x57, 0x54, -0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x0A, 0x48, 0x4B, 0x54, -0x2D, 0x38, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x90, 0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, +0x00, 0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, +0x54, 0x00, 0x48, 0x4B, 0x57, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, +0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, +0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x16, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0x69, 0x63, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xCA, 0x4D, 0x31, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xDB, 0x93, 0x30, 0xFF, +0xFF, 0xFF, 0xFF, 0xCB, 0x4B, 0x71, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xA0, 0xDE, 0x90, 0xFF, +0xFF, 0xFF, 0xFF, 0xD3, 0x6B, 0xD7, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x93, 0x58, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xD5, 0x42, 0xB0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x73, 0x3A, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xD7, 0x3E, 0x41, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x2E, 0x32, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xD8, 0xF9, 0x39, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x0E, 0x14, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xDA, 0xD9, 0x1B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xED, 0xF6, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xDC, 0xB8, 0xFD, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xCD, 0xD8, 0xB8, 0xFF, +0xFF, 0xFF, 0xFF, 0xDE, 0xA2, 0x1A, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xB6, 0xF5, 0x38, 0xFF, +0xFF, 0xFF, 0xFF, 0xE0, 0x81, 0xFC, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x96, 0xC9, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xE2, 0x4F, 0x69, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x76, 0xAB, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xE4, 0x2F, 0x4B, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x5F, 0xC7, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xE6, 0x0F, 0x2D, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x3F, 0xA9, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xE7, 0xF8, 0x49, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x1F, 0x8B, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xE9, 0xD8, 0x2B, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xFF, 0x6D, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xEB, 0xB8, 0x0D, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xDF, 0x4F, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xED, 0x97, 0xEF, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xC8, 0x6C, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xEF, 0x77, 0xD1, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xA8, 0x4E, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF1, 0x57, 0xB3, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x88, 0x30, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF3, 0x40, 0xD0, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x68, 0x12, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF5, 0x20, 0xB2, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x47, 0xF4, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF7, 0x25, 0x7E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x15, 0x61, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xF9, 0x05, 0x60, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0xF5, 0x43, 0x28, 0xFF, +0xFF, 0xFF, 0xFF, 0xFA, 0xE5, 0x42, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xDE, 0x5F, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xFC, 0xCE, 0x5E, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xBE, 0x41, 0xA8, 0xFF, +0xFF, 0xFF, 0xFF, 0xFE, 0xAE, 0x40, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0x23, 0xA8, 0x00, +0x00, 0x00, 0x00, 0x00, 0x8E, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7E, 0x05, 0xA8, 0x00, +0x00, 0x00, 0x00, 0x02, 0x6E, 0x04, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5D, 0xE7, 0xA8, 0x00, +0x00, 0x00, 0x00, 0x04, 0x4D, 0xE6, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x05, 0x47, 0x04, 0x28, 0x00, +0x00, 0x00, 0x00, 0x06, 0x37, 0x03, 0x38, 0x00, 0x00, 0x00, 0x00, 0x07, 0x26, 0xE6, 0x28, 0x00, +0x00, 0x00, 0x00, 0x07, 0x83, 0x3D, 0x38, 0x00, 0x00, 0x00, 0x00, 0x09, 0x06, 0xC8, 0x28, 0x00, +0x00, 0x00, 0x00, 0x09, 0xF6, 0xC7, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xE6, 0xAA, 0x28, 0x00, +0x00, 0x00, 0x00, 0x0B, 0xD6, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC6, 0x8C, 0x28, 0x00, +0x00, 0x00, 0x00, 0x11, 0x9B, 0x39, 0x38, 0x00, 0x00, 0x00, 0x00, 0x12, 0x6F, 0x6C, 0xA8, 0x01, +0x02, 0x03, 0x04, 0x07, 0x02, 0x05, 0x06, 0x05, 0x06, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, +0x02, 0x05, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, 0x02, 0x07, +0x02, 0x07, 0x02, 0x07, 0x00, 0x00, 0x6B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, +0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, 0x77, 0x88, 0x01, 0x0D, 0x00, 0x00, 0x7E, 0x90, +0x00, 0x12, 0x00, 0x00, 0x70, 0x80, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, 0x01, 0x08, 0x00, 0x00, +0x70, 0x80, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x48, 0x4B, 0x54, 0x00, 0x48, 0x4B, 0x53, 0x54, +0x00, 0x48, 0x4B, 0x57, 0x54, 0x00, 0x4A, 0x53, 0x54, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x48, 0x4B, 0x54, 0x2D, 0x38, +0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* HST */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -63837,23 +63564,20 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Indian/Antananarivo */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x6C, 0x76, 0xED, 0x01, 0x5B, 0x29, -0xB2, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x91, 0xF3, 0xCD, 0xF4, +0xE2, 0x33, 0xC0, 0xC0, 0xE2, 0xAB, 0xB9, 0x40, 0x01, 0x02, 0x03, 0x00, 0x00, 0x2C, 0x8C, 0x00, +0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x45, 0x41, 0x53, 0x54, 0x00, +0x00, 0x00, 0x01, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0D, +0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xCD, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x33, 0xC0, 0xC0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0xAB, 0xB9, 0x40, 0x01, 0x02, 0x03, 0x00, 0x00, 0x2C, 0x8C, 0x00, +0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x00, 0x00, 0x38, 0x40, 0x01, 0x08, 0x00, 0x00, 0x2A, +0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x45, 0x41, 0x53, 0x54, 0x00, +0x00, 0x00, 0x01, 0x01, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x6C, 0x76, 0xED, 0x01, +0x5B, 0x29, 0xB2, 0x00, 0x00, 0x00, 0x00, /* Indian/Chagos */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x49, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -63902,22 +63626,15 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Indian/Comoro */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4B, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF3, 0xD1, 0xF0, +0x01, 0x00, 0x00, 0x28, 0x90, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x77, 0x80, 0x72, 0x01, 0x54, 0xAD, -0x8A, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xD1, 0xF0, 0x01, 0x00, 0x00, 0x28, 0x90, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, +0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x77, 0x80, 0x72, 0x01, 0x54, 0xAD, 0x8A, 0x00, 0x00, 0x00, +0x00, /* Indian/Kerguelen */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x54, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -63984,22 +63701,15 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Indian/Mayotte */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x59, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x8B, 0xFF, 0xD1, 0xFC, -0xB1, 0xEE, 0xDA, 0x58, 0xB4, 0xC7, 0xE0, 0xD0, 0xC1, 0xED, 0xAD, 0x58, 0xCC, 0x6C, 0x7A, 0xD4, -0x01, 0x02, 0x01, 0x03, 0x02, 0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, -0x04, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, -0x30, 0x00, 0x0A, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, -0x00, 0x2B, 0x30, 0x32, 0x34, 0x35, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x91, 0xF3, 0xD0, 0x18, +0x01, 0x00, 0x00, 0x2A, 0x68, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, +0x00, 0x45, 0x41, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, -0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0xD1, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, -0xEE, 0xDA, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0xC7, 0xE0, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, -0xED, 0xAD, 0x58, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x6C, 0x7A, 0xD4, 0x01, 0x02, 0x01, 0x03, 0x02, -0x00, 0x00, 0x22, 0x84, 0x00, 0x00, 0x00, 0x00, 0x23, 0x28, 0x00, 0x04, 0x00, 0x00, 0x2A, 0x30, -0x00, 0x0A, 0x00, 0x00, 0x26, 0xAC, 0x00, 0x0E, 0x00, 0x00, 0x2A, 0x30, 0x00, 0x0A, 0x4C, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x32, 0x33, 0x30, 0x00, 0x45, 0x41, 0x54, 0x00, 0x2B, 0x30, 0x32, 0x34, -0x35, 0x00, 0x0A, 0x45, 0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x75, 0xD2, 0xC2, 0x01, 0x57, 0xAD, -0xC5, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, +0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0xF3, 0xD0, 0x18, 0x01, 0x00, 0x00, 0x2A, 0x68, 0x00, 0x00, +0x00, 0x00, 0x2A, 0x30, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x41, 0x54, 0x00, 0x0A, 0x45, +0x41, 0x54, 0x2D, 0x33, 0x0A, 0x00, 0x75, 0xD2, 0xC2, 0x01, 0x57, 0xAD, 0xC5, 0x00, 0x00, 0x00, +0x00, /* Indian/Reunion */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x52, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -64018,167 +63728,84 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Iran */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1C, 0x9A, 0x6C, 0x7D, 0xC8, -0xD2, 0xDB, 0x12, 0xC8, 0x0E, 0xBB, 0xA2, 0x48, 0x0F, 0x74, 0x2D, 0x40, 0x10, 0x8E, 0x40, 0x30, -0x10, 0xED, 0x3A, 0x40, 0x11, 0x55, 0x67, 0xC8, 0x12, 0x45, 0x4A, 0xB8, 0x13, 0x37, 0xEC, 0xC8, -0x14, 0x2D, 0x15, 0xB8, 0x28, 0x20, 0x76, 0xC8, 0x28, 0xDB, 0x9D, 0xB8, 0x29, 0xCB, 0x9C, 0xC8, -0x2A, 0xBE, 0x22, 0xB8, 0x2B, 0xAC, 0xD0, 0x48, 0x2C, 0x9F, 0x56, 0x38, 0x2D, 0x8E, 0x03, 0xC8, -0x2E, 0x80, 0x89, 0xB8, 0x2F, 0x6F, 0x37, 0x48, 0x30, 0x61, 0xBD, 0x38, 0x31, 0x50, 0x6A, 0xC8, -0x32, 0x42, 0xF0, 0xB8, 0x33, 0x32, 0xEF, 0xC8, 0x34, 0x25, 0x75, 0xB8, 0x35, 0x14, 0x23, 0x48, -0x36, 0x06, 0xA9, 0x38, 0x36, 0xF5, 0x56, 0xC8, 0x37, 0xE7, 0xDC, 0xB8, 0x38, 0xD6, 0x8A, 0x48, -0x39, 0xC9, 0x10, 0x38, 0x3A, 0xB9, 0x0F, 0x48, 0x3B, 0xAB, 0x95, 0x38, 0x3C, 0x9A, 0x42, 0xC8, -0x3D, 0x8C, 0xC8, 0xB8, 0x3E, 0x7B, 0x76, 0x48, 0x3F, 0x6D, 0xFC, 0x38, 0x40, 0x5C, 0xA9, 0xC8, -0x41, 0x4F, 0x2F, 0xB8, 0x42, 0x3F, 0x2E, 0xC8, 0x43, 0x31, 0xB4, 0xB8, 0x47, 0xE2, 0xC9, 0x48, -0x48, 0xD5, 0x4F, 0x38, 0x49, 0xC5, 0x4E, 0x48, 0x4A, 0xB7, 0xD4, 0x38, 0x4B, 0xA6, 0x81, 0xC8, -0x4C, 0x99, 0x07, 0xB8, 0x4D, 0x87, 0xB5, 0x48, 0x4E, 0x7A, 0x3B, 0x38, 0x4F, 0x68, 0xE8, 0xC8, -0x50, 0x5B, 0x6E, 0xB8, 0x51, 0x4B, 0x6D, 0xC8, 0x52, 0x3D, 0xF3, 0xB8, 0x53, 0x2C, 0xA1, 0x48, -0x54, 0x1F, 0x27, 0x38, 0x55, 0x0D, 0xD4, 0xC8, 0x56, 0x00, 0x5A, 0xB8, 0x56, 0xEF, 0x08, 0x48, -0x57, 0xE1, 0x8E, 0x38, 0x58, 0xD1, 0x8D, 0x48, 0x59, 0xC4, 0x13, 0x38, 0x5A, 0xB2, 0xC0, 0xC8, -0x5B, 0xA5, 0x46, 0xB8, 0x5C, 0x93, 0xF4, 0x48, 0x5D, 0x86, 0x7A, 0x38, 0x5E, 0x75, 0x27, 0xC8, -0x5F, 0x67, 0xAD, 0xB8, 0x60, 0x57, 0xAC, 0xC8, 0x61, 0x4A, 0x32, 0xB8, 0x62, 0x38, 0xE0, 0x48, -0x63, 0x2B, 0x66, 0x38, 0x64, 0x1A, 0x13, 0xC8, 0x65, 0x0C, 0x99, 0xB8, 0x65, 0xFB, 0x47, 0x48, -0x66, 0xED, 0xCD, 0x38, 0x67, 0xDD, 0xCC, 0x48, 0x68, 0xD0, 0x52, 0x38, 0x69, 0xBE, 0xFF, 0xC8, -0x6A, 0xB1, 0x85, 0xB8, 0x6B, 0xA0, 0x33, 0x48, 0x6C, 0x92, 0xB9, 0x38, 0x6D, 0x81, 0x66, 0xC8, -0x6E, 0x73, 0xEC, 0xB8, 0x6F, 0x62, 0x9A, 0x48, 0x70, 0x55, 0x20, 0x38, 0x71, 0x45, 0x1F, 0x48, -0x72, 0x37, 0xA5, 0x38, 0x73, 0x26, 0x52, 0xC8, 0x74, 0x18, 0xD8, 0xB8, 0x75, 0x07, 0x86, 0x48, -0x75, 0xFA, 0x0C, 0x38, 0x76, 0xE8, 0xB9, 0xC8, 0x77, 0xDB, 0x3F, 0xB8, 0x78, 0xCB, 0x3E, 0xC8, -0x79, 0xBD, 0xC4, 0xB8, 0x7A, 0xAC, 0x72, 0x48, 0x7B, 0x9E, 0xF8, 0x38, 0x7C, 0x8D, 0xA5, 0xC8, -0x7D, 0x80, 0x2B, 0xB8, 0x7E, 0x6E, 0xD9, 0x48, 0x7F, 0x61, 0x5F, 0x38, 0x01, 0x02, 0x04, 0x03, -0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, -0x00, 0x08, 0x00, 0x00, 0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x00, 0x12, 0x00, 0x00, -0x3F, 0x48, 0x01, 0x16, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, -0x54, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, -0x2B, 0x30, 0x34, 0x33, 0x30, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, -0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0xDB, -0x12, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xBB, 0xA2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x74, -0x2D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x8E, 0x40, 0x30, 0x00, 0x00, 0x00, 0x00, 0x10, 0xED, -0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0x55, 0x67, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x12, 0x45, -0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x14, 0x2D, -0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x28, 0xDB, -0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xBE, -0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x9F, -0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x80, -0x89, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, 0x00, 0x00, 0x00, 0x30, 0x61, -0xBD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x32, 0x42, -0xF0, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x34, 0x25, -0x75, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, 0x36, 0x06, -0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x37, 0xE7, -0xDC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC9, -0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xAB, -0x95, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x8C, -0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x6D, -0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x41, 0x4F, -0x2F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x43, 0x31, -0xB4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x48, 0xD5, -0x4F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xB7, -0xD4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x99, -0x07, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x7A, -0x3B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x50, 0x5B, -0x6E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x52, 0x3D, -0xF3, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x54, 0x1F, -0x27, 0x38, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, -0x5A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, 0x57, 0xE1, -0x8E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x59, 0xC4, -0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xA5, -0x46, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x86, -0x7A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x67, -0xAD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x61, 0x4A, -0x32, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x63, 0x2B, -0x66, 0x38, 0x00, 0x00, 0x00, 0x00, 0x64, 0x1A, 0x13, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0C, -0x99, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x65, 0xFB, 0x47, 0x48, 0x00, 0x00, 0x00, 0x00, 0x66, 0xED, -0xCD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x67, 0xDD, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x68, 0xD0, -0x52, 0x38, 0x00, 0x00, 0x00, 0x00, 0x69, 0xBE, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xB1, -0x85, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xA0, 0x33, 0x48, 0x00, 0x00, 0x00, 0x00, 0x6C, 0x92, -0xB9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x81, 0x66, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x6E, 0x73, -0xEC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x62, 0x9A, 0x48, 0x00, 0x00, 0x00, 0x00, 0x70, 0x55, -0x20, 0x38, 0x00, 0x00, 0x00, 0x00, 0x71, 0x45, 0x1F, 0x48, 0x00, 0x00, 0x00, 0x00, 0x72, 0x37, -0xA5, 0x38, 0x00, 0x00, 0x00, 0x00, 0x73, 0x26, 0x52, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x74, 0x18, -0xD8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x75, 0x07, 0x86, 0x48, 0x00, 0x00, 0x00, 0x00, 0x75, 0xFA, -0x0C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x76, 0xE8, 0xB9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x77, 0xDB, -0x3F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x78, 0xCB, 0x3E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x79, 0xBD, -0xC4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xAC, 0x72, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x9E, -0xF8, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x8D, 0xA5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x80, -0x2B, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x6E, 0xD9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x61, -0x5F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x80, 0x51, 0x5E, 0x48, 0x00, 0x00, 0x00, 0x00, 0x81, 0x43, -0xE4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x82, 0x32, 0x91, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x25, -0x17, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x84, 0x13, 0xC5, 0x48, 0x00, 0x00, 0x00, 0x00, 0x85, 0x06, -0x4B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x85, 0xF4, 0xF8, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x86, 0xE7, -0x7E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x87, 0xD7, 0x7D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x88, 0xCA, -0x03, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x89, 0xB8, 0xB1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xAB, -0x37, 0x38, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x99, 0xE4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x8C, -0x6A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x8D, 0x7B, 0x18, 0x48, 0x00, 0x00, 0x00, 0x00, 0x8E, 0x6D, -0x9E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x5D, 0x9D, 0x48, 0x00, 0x00, 0x00, 0x00, 0x90, 0x50, -0x23, 0x38, 0x00, 0x00, 0x00, 0x00, 0x91, 0x3E, 0xD0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x92, 0x31, -0x56, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x93, 0x20, 0x04, 0x48, 0x00, 0x00, 0x00, 0x00, 0x94, 0x12, -0x8A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x95, 0x01, 0x37, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x95, 0xF3, -0xBD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x96, 0xE3, 0xBC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x97, 0xD6, -0x42, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x98, 0xC4, 0xF0, 0x48, 0x00, 0x00, 0x00, 0x00, 0x99, 0xB7, -0x76, 0x38, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xA6, 0x23, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x98, -0xA9, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x87, 0x57, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x79, -0xDD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x9E, 0x69, 0xDC, 0x48, 0x00, 0x00, 0x00, 0x00, 0x9F, 0x5C, -0x62, 0x38, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x4B, 0x0F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x3D, -0x95, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x2C, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA3, 0x1E, -0xC9, 0x38, 0x00, 0x00, 0x00, 0x00, 0xA4, 0x0D, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, -0xFC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xEF, 0xFB, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xE2, -0x81, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xA7, 0xD1, 0x2F, 0x48, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xC3, -0xB5, 0x38, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xB2, 0x62, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xA4, -0xE8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xAB, 0x93, 0x96, 0x48, 0x00, 0x00, 0x00, 0x00, 0xAC, 0x86, -0x1C, 0x38, 0x00, 0x00, 0x00, 0x00, 0xAD, 0x74, 0xC9, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xAE, 0x67, -0x4F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xAF, 0x57, 0x4E, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x49, -0xD4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xB1, 0x38, 0x82, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x2B, -0x08, 0x38, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x19, 0xB5, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB4, 0x0C, -0x3B, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFA, 0xE9, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xED, -0x6F, 0x38, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xDD, 0x6E, 0x48, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xCF, -0xF4, 0x38, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xBE, 0xA1, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xB1, -0x27, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xBA, 0x9F, 0xD5, 0x48, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x92, -0x5B, 0x38, 0x00, 0x00, 0x00, 0x00, 0xBC, 0x81, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x73, -0x8E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x63, 0x8D, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x56, -0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x44, 0xC1, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x37, -0x47, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x25, 0xF4, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x18, -0x7A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC4, 0x07, 0x28, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xF9, -0xAE, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC5, 0xE9, 0xAD, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xDC, -0x33, 0x38, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xCA, 0xE0, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xBD, -0x66, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xC9, 0xAC, 0x14, 0x48, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x9E, -0x9A, 0x38, 0x00, 0x00, 0x00, 0x00, 0xCB, 0x8D, 0x47, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x7F, -0xCD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xCD, 0x6F, 0xCC, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x62, -0x52, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x51, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x43, -0x86, 0x38, 0x00, 0x00, 0x00, 0x00, 0xD1, 0x32, 0x33, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD2, 0x24, -0xB9, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xD3, 0x13, 0x67, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x05, -0xED, 0x38, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xF5, 0xEC, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD5, 0xE8, -0x72, 0x38, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD7, 0x1F, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xC9, -0xA5, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xB8, 0x53, 0x48, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xAA, -0xD9, 0x38, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x99, 0x86, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x8C, -0x0C, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xDC, 0x7C, 0x0B, 0xC8, 0x00, 0x00, 0x00, 0x00, 0xDD, 0x6E, -0x91, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xDE, 0x5D, 0x3F, 0x48, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x4F, -0xC5, 0x38, 0x01, 0x02, 0x04, 0x03, 0x04, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, -0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x05, 0x02, 0x00, 0x00, 0x30, 0x38, -0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, 0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x00, 0x00, -0x46, 0x50, 0x01, 0x0E, 0x00, 0x00, 0x38, 0x40, 0x00, 0x12, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x16, -0x00, 0x00, 0x31, 0x38, 0x00, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, -0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, 0x2B, 0x30, 0x34, 0x33, -0x30, 0x00, 0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x3C, -0x2B, 0x30, 0x34, 0x33, 0x30, 0x3E, 0x2C, 0x4A, 0x37, 0x39, 0x2F, 0x32, 0x34, 0x2C, 0x4A, 0x32, -0x36, 0x33, 0x2F, 0x32, 0x34, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, +0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0x9A, 0x6C, 0x7D, 0xC8, +0xBF, 0x00, 0xCC, 0x48, 0x0D, 0x94, 0x44, 0x38, 0x0E, 0xAD, 0x13, 0xB8, 0x0F, 0x79, 0x73, 0x40, +0x10, 0x28, 0xCA, 0xC0, 0x10, 0xED, 0x3A, 0x40, 0x11, 0xAD, 0xBC, 0x48, 0x12, 0x45, 0x4A, 0xB8, +0x13, 0x37, 0xEC, 0xC8, 0x14, 0x2D, 0x15, 0xB8, 0x28, 0x20, 0x76, 0xC8, 0x28, 0xDB, 0x9D, 0xB8, +0x29, 0xCB, 0x9C, 0xC8, 0x2A, 0xBE, 0x22, 0xB8, 0x2B, 0xAC, 0xD0, 0x48, 0x2C, 0x9F, 0x56, 0x38, +0x2D, 0x8E, 0x03, 0xC8, 0x2E, 0x80, 0x89, 0xB8, 0x2F, 0x6F, 0x37, 0x48, 0x30, 0x61, 0xBD, 0x38, +0x31, 0x50, 0x6A, 0xC8, 0x32, 0x42, 0xF0, 0xB8, 0x33, 0x32, 0xEF, 0xC8, 0x34, 0x25, 0x75, 0xB8, +0x35, 0x14, 0x23, 0x48, 0x36, 0x06, 0xA9, 0x38, 0x36, 0xF5, 0x56, 0xC8, 0x37, 0xE7, 0xDC, 0xB8, +0x38, 0xD6, 0x8A, 0x48, 0x39, 0xC9, 0x10, 0x38, 0x3A, 0xB9, 0x0F, 0x48, 0x3B, 0xAB, 0x95, 0x38, +0x3C, 0x9A, 0x42, 0xC8, 0x3D, 0x8C, 0xC8, 0xB8, 0x3E, 0x7B, 0x76, 0x48, 0x3F, 0x6D, 0xFC, 0x38, +0x40, 0x5C, 0xA9, 0xC8, 0x41, 0x4F, 0x2F, 0xB8, 0x42, 0x3F, 0x2E, 0xC8, 0x43, 0x31, 0xB4, 0xB8, +0x47, 0xE2, 0xC9, 0x48, 0x48, 0xD5, 0x4F, 0x38, 0x49, 0xC5, 0x4E, 0x48, 0x4A, 0xB7, 0xD4, 0x38, +0x4B, 0xA6, 0x81, 0xC8, 0x4C, 0x99, 0x07, 0xB8, 0x4D, 0x87, 0xB5, 0x48, 0x4E, 0x7A, 0x3B, 0x38, +0x4F, 0x68, 0xE8, 0xC8, 0x50, 0x5B, 0x6E, 0xB8, 0x51, 0x4B, 0x6D, 0xC8, 0x52, 0x3D, 0xF3, 0xB8, +0x53, 0x2C, 0xA1, 0x48, 0x54, 0x1F, 0x27, 0x38, 0x55, 0x0D, 0xD4, 0xC8, 0x56, 0x00, 0x5A, 0xB8, +0x56, 0xEF, 0x08, 0x48, 0x57, 0xE1, 0x8E, 0x38, 0x58, 0xD1, 0x8D, 0x48, 0x59, 0xC4, 0x13, 0x38, +0x5A, 0xB2, 0xC0, 0xC8, 0x5B, 0xA5, 0x46, 0xB8, 0x5C, 0x93, 0xF4, 0x48, 0x5D, 0x86, 0x7A, 0x38, +0x5E, 0x75, 0x27, 0xC8, 0x5F, 0x67, 0xAD, 0xB8, 0x60, 0x57, 0xAC, 0xC8, 0x61, 0x4A, 0x32, 0xB8, +0x62, 0x38, 0xE0, 0x48, 0x63, 0x2B, 0x66, 0x38, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x05, +0x04, 0x05, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x03, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, +0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, 0x31, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x46, 0x50, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x00, 0x18, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, +0x31, 0x38, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x33, +0x30, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, +0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, +0x9A, 0x6C, 0x7D, 0xC8, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0xCC, 0x48, 0x00, 0x00, 0x00, 0x00, +0x0D, 0x94, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xAD, 0x13, 0xB8, 0x00, 0x00, 0x00, 0x00, +0x0F, 0x79, 0x73, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0xCA, 0xC0, 0x00, 0x00, 0x00, 0x00, +0x10, 0xED, 0x3A, 0x40, 0x00, 0x00, 0x00, 0x00, 0x11, 0xAD, 0xBC, 0x48, 0x00, 0x00, 0x00, 0x00, +0x12, 0x45, 0x4A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x13, 0x37, 0xEC, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x14, 0x2D, 0x15, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x28, 0x20, 0x76, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x28, 0xDB, 0x9D, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xCB, 0x9C, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x2A, 0xBE, 0x22, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xAC, 0xD0, 0x48, 0x00, 0x00, 0x00, 0x00, +0x2C, 0x9F, 0x56, 0x38, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x8E, 0x03, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x2E, 0x80, 0x89, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x6F, 0x37, 0x48, 0x00, 0x00, 0x00, 0x00, +0x30, 0x61, 0xBD, 0x38, 0x00, 0x00, 0x00, 0x00, 0x31, 0x50, 0x6A, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x32, 0x42, 0xF0, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x33, 0x32, 0xEF, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x34, 0x25, 0x75, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x35, 0x14, 0x23, 0x48, 0x00, 0x00, 0x00, 0x00, +0x36, 0x06, 0xA9, 0x38, 0x00, 0x00, 0x00, 0x00, 0x36, 0xF5, 0x56, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x37, 0xE7, 0xDC, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x38, 0xD6, 0x8A, 0x48, 0x00, 0x00, 0x00, 0x00, +0x39, 0xC9, 0x10, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xB9, 0x0F, 0x48, 0x00, 0x00, 0x00, 0x00, +0x3B, 0xAB, 0x95, 0x38, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x9A, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x3D, 0x8C, 0xC8, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7B, 0x76, 0x48, 0x00, 0x00, 0x00, 0x00, +0x3F, 0x6D, 0xFC, 0x38, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5C, 0xA9, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x41, 0x4F, 0x2F, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3F, 0x2E, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x43, 0x31, 0xB4, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x47, 0xE2, 0xC9, 0x48, 0x00, 0x00, 0x00, 0x00, +0x48, 0xD5, 0x4F, 0x38, 0x00, 0x00, 0x00, 0x00, 0x49, 0xC5, 0x4E, 0x48, 0x00, 0x00, 0x00, 0x00, +0x4A, 0xB7, 0xD4, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xA6, 0x81, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x4C, 0x99, 0x07, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x87, 0xB5, 0x48, 0x00, 0x00, 0x00, 0x00, +0x4E, 0x7A, 0x3B, 0x38, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x68, 0xE8, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x50, 0x5B, 0x6E, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x51, 0x4B, 0x6D, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x52, 0x3D, 0xF3, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x53, 0x2C, 0xA1, 0x48, 0x00, 0x00, 0x00, 0x00, +0x54, 0x1F, 0x27, 0x38, 0x00, 0x00, 0x00, 0x00, 0x55, 0x0D, 0xD4, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x56, 0x00, 0x5A, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x56, 0xEF, 0x08, 0x48, 0x00, 0x00, 0x00, 0x00, +0x57, 0xE1, 0x8E, 0x38, 0x00, 0x00, 0x00, 0x00, 0x58, 0xD1, 0x8D, 0x48, 0x00, 0x00, 0x00, 0x00, +0x59, 0xC4, 0x13, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xB2, 0xC0, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x5B, 0xA5, 0x46, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x93, 0xF4, 0x48, 0x00, 0x00, 0x00, 0x00, +0x5D, 0x86, 0x7A, 0x38, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x75, 0x27, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x5F, 0x67, 0xAD, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x60, 0x57, 0xAC, 0xC8, 0x00, 0x00, 0x00, 0x00, +0x61, 0x4A, 0x32, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x62, 0x38, 0xE0, 0x48, 0x00, 0x00, 0x00, 0x00, +0x63, 0x2B, 0x66, 0x38, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x03, 0x02, 0x05, +0x04, 0x05, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, 0x03, 0x02, +0x03, 0x02, 0x03, 0x03, 0x00, 0x00, 0x30, 0x38, 0x00, 0x00, 0x00, 0x00, 0x30, 0x38, 0x00, 0x04, +0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, 0x31, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x46, 0x50, +0x01, 0x14, 0x00, 0x00, 0x38, 0x40, 0x00, 0x18, 0x00, 0x00, 0x3F, 0x48, 0x01, 0x08, 0x00, 0x00, +0x31, 0x38, 0x00, 0x0E, 0x4C, 0x4D, 0x54, 0x00, 0x54, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x34, 0x33, +0x30, 0x00, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x00, 0x2B, 0x30, 0x35, 0x00, 0x2B, 0x30, 0x34, 0x00, +0x0A, 0x3C, 0x2B, 0x30, 0x33, 0x33, 0x30, 0x3E, 0x2D, 0x33, 0x3A, 0x33, 0x30, 0x0A, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* Israel */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -65946,7 +65573,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x53, 0x5C, 0x72, 0xB0, 0x54, 0x0B, 0xD8, 0x40, 0x57, 0x37, 0xE6, 0x30, 0x57, 0xAF, 0xEC, 0xC0, 0x59, 0x17, 0xC8, 0x30, 0x59, 0x8F, 0xCE, 0xC0, 0x5A, 0xF7, 0xAA, 0x30, 0x5B, 0x6F, 0xB0, 0xC0, 0x5C, 0xA9, 0x67, 0xB0, 0x5D, 0x74, 0x7C, 0xC0, 0x5E, 0x89, 0x49, 0xB0, 0x5F, 0x54, 0x5E, 0xC0, -0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x14, 0x22, 0xC0, +0x60, 0x69, 0x2B, 0xB0, 0x61, 0x34, 0x40, 0xC0, 0x62, 0x49, 0x0D, 0xB0, 0x63, 0x1D, 0x5D, 0x40, 0x64, 0x28, 0xEF, 0xB0, 0x64, 0xF4, 0x04, 0xC0, 0x66, 0x12, 0x0C, 0x30, 0x66, 0xDD, 0x21, 0x40, 0x67, 0xF1, 0xEE, 0x30, 0x68, 0xBD, 0x03, 0x40, 0x69, 0xD1, 0xD0, 0x30, 0x6A, 0x9C, 0xE5, 0x40, 0x6B, 0xB1, 0xB2, 0x30, 0x6C, 0x7C, 0xC7, 0x40, 0x6D, 0x91, 0x94, 0x30, 0x6E, 0x5C, 0xA9, 0x40, @@ -66025,7 +65652,7 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x00, 0x00, 0x00, 0x00, 0x5D, 0x74, 0x7C, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x89, 0x49, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x54, 0x5E, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x69, 0x2B, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x61, 0x34, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x62, 0x49, 0x0D, 0xB0, -0x00, 0x00, 0x00, 0x00, 0x63, 0x14, 0x22, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, +0x00, 0x00, 0x00, 0x00, 0x63, 0x1D, 0x5D, 0x40, 0x00, 0x00, 0x00, 0x00, 0x64, 0x28, 0xEF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x64, 0xF4, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x66, 0x12, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x66, 0xDD, 0x21, 0x40, 0x00, 0x00, 0x00, 0x00, 0x67, 0xF1, 0xEE, 0x30, 0x00, 0x00, 0x00, 0x00, 0x68, 0xBD, 0x03, 0x40, 0x00, 0x00, 0x00, 0x00, 0x69, 0xD1, 0xD0, 0x30, @@ -66473,17 +66100,19 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Pacific/Midway */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x55, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, -0x91, 0x05, 0xFB, 0x08, 0x01, 0x02, 0x00, 0x00, 0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xF8, -0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0x4C, 0x4D, 0x54, 0x00, 0x53, 0x53, 0x54, 0x00, -0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x80, 0x00, 0x00, 0x00, +0xE6, 0x75, 0x8A, 0xB0, 0xE6, 0xED, 0x75, 0x20, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x01, +0xFF, 0xFF, 0x59, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0xFF, 0xFF, 0x73, 0x60, +0x01, 0x08, 0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x31, 0x31, 0x00, 0x2D, 0x31, 0x30, 0x00, 0x54, 0x5A, +0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, -0x6E, 0x3D, 0xC8, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x05, 0xFB, 0x08, 0x01, 0x02, 0x00, 0x00, -0xB1, 0x78, 0x00, 0x00, 0xFF, 0xFF, 0x5F, 0xF8, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, -0x4C, 0x4D, 0x54, 0x00, 0x53, 0x53, 0x54, 0x00, 0x0A, 0x53, 0x53, 0x54, 0x31, 0x31, 0x0A, 0x00, -0xB4, 0x62, 0x62, 0x00, 0x04, 0x04, 0xA5, 0x00, 0x00, 0x00, 0x0E, 0x4D, 0x69, 0x64, 0x77, 0x61, -0x79, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, +0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x37, +0x5B, 0x48, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x75, 0x8A, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0xED, +0x75, 0x20, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x02, 0x01, 0x01, 0xFF, 0xFF, +0x59, 0xB8, 0x00, 0x00, 0xFF, 0xFF, 0x65, 0x50, 0x00, 0x04, 0xFF, 0xFF, 0x73, 0x60, 0x01, 0x08, +0x4C, 0x4D, 0x54, 0x00, 0x2D, 0x31, 0x31, 0x00, 0x2D, 0x31, 0x30, 0x00, 0x0A, 0x3C, 0x2D, 0x31, +0x31, 0x3E, 0x31, 0x31, 0x0A, 0x00, 0xB4, 0x62, 0x62, 0x00, 0x04, 0x04, 0xA5, 0x00, 0x00, 0x00, +0x0E, 0x4D, 0x69, 0x64, 0x77, 0x61, 0x79, 0x20, 0x49, 0x73, 0x6C, 0x61, 0x6E, 0x64, 0x73, /* Pacific/Nauru */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4E, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -66751,36 +66380,20 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* Pacific/Saipan */ 0x50, 0x48, 0x50, 0x32, 0x01, 0x4D, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x15, 0x80, 0x00, 0x00, 0x00, -0xCB, 0x37, 0x95, 0xE0, 0xD0, 0x2E, 0x89, 0xF0, 0xEC, 0x37, 0xBE, 0x00, 0xEF, 0x36, 0xF8, 0xF0, -0xFB, 0x9B, 0x00, 0x00, 0xFE, 0x3F, 0x27, 0x8C, 0xFF, 0x01, 0x1E, 0x00, 0xFF, 0x5D, 0x58, 0xF0, -0x00, 0x97, 0x2C, 0x00, 0x01, 0x46, 0x75, 0x70, 0x02, 0x77, 0x0E, 0x00, 0x03, 0x26, 0x57, 0x70, -0x07, 0x70, 0x97, 0x00, 0x07, 0xCC, 0xD1, 0xF0, 0x0C, 0x08, 0x91, 0x00, 0x0C, 0x7C, 0x87, 0x2C, -0x0D, 0xBF, 0x94, 0x80, 0x0E, 0x65, 0xA3, 0x70, 0x3A, 0x43, 0x5E, 0x60, 0x01, 0x02, 0x01, 0x03, -0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x04, -0xFF, 0xFF, 0x36, 0x34, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, 0x7E, 0x90, -0x00, 0x08, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x0C, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x10, 0x4C, 0x4D, -0x54, 0x00, 0x47, 0x53, 0x54, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x47, 0x44, 0x54, 0x00, 0x43, 0x68, -0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x15, 0xFF, -0xFF, 0xFF, 0xFF, 0x14, 0xE1, 0xC5, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x36, 0x2D, 0x4C, 0xFF, -0xFF, 0xFF, 0xFF, 0xCB, 0x37, 0x95, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x2E, 0x89, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xEC, 0x37, 0xBE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x36, 0xF8, 0xF0, 0xFF, -0xFF, 0xFF, 0xFF, 0xFB, 0x9B, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3F, 0x27, 0x8C, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x1E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x58, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x97, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x46, 0x75, 0x70, 0x00, -0x00, 0x00, 0x00, 0x02, 0x77, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x26, 0x57, 0x70, 0x00, -0x00, 0x00, 0x00, 0x07, 0x70, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCC, 0xD1, 0xF0, 0x00, -0x00, 0x00, 0x00, 0x0C, 0x08, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7C, 0x87, 0x2C, 0x00, -0x00, 0x00, 0x00, 0x0D, 0xBF, 0x94, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x65, 0xA3, 0x70, 0x00, -0x00, 0x00, 0x00, 0x3A, 0x43, 0x5E, 0x60, 0x01, 0x02, 0x03, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, -0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x05, 0xFF, 0xFF, 0x36, 0x34, -0x00, 0x00, 0x00, 0x00, 0x87, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x04, 0x00, 0x00, -0x7E, 0x90, 0x00, 0x08, 0x00, 0x00, 0x9A, 0xB0, 0x01, 0x0C, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x10, -0x4C, 0x4D, 0x54, 0x00, 0x47, 0x53, 0x54, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x47, 0x44, 0x54, 0x00, -0x43, 0x68, 0x53, 0x54, 0x00, 0x0A, 0x43, 0x68, 0x53, 0x54, 0x2D, 0x31, 0x30, 0x0A, 0x00, 0xA0, -0x85, 0xC0, 0x01, 0xF1, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x00, 0x00, +0xFF, 0x86, 0x37, 0x70, 0x3A, 0x43, 0x5E, 0x60, 0x01, 0x02, 0x03, 0xFF, 0xFF, 0x37, 0x24, 0x00, +0x00, 0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x08, 0x00, 0x00, 0x8C, +0xA0, 0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x2B, 0x31, 0x30, 0x00, 0x43, +0x68, 0x53, 0x54, 0x00, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x11, +0xFF, 0xFF, 0xFF, 0xFF, 0x14, 0xE1, 0xC4, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x36, 0x2C, 0x5C, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x86, 0x37, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x43, 0x5E, 0x60, +0x01, 0x02, 0x03, 0x04, 0xFF, 0xFF, 0x37, 0x24, 0x00, 0x00, 0x00, 0x00, 0x88, 0xA4, 0x00, 0x00, +0x00, 0x00, 0x7E, 0x90, 0x00, 0x04, 0x00, 0x00, 0x8C, 0xA0, 0x00, 0x08, 0x00, 0x00, 0x8C, 0xA0, +0x00, 0x0C, 0x4C, 0x4D, 0x54, 0x00, 0x2B, 0x30, 0x39, 0x00, 0x2B, 0x31, 0x30, 0x00, 0x43, 0x68, +0x53, 0x54, 0x00, 0x0A, 0x43, 0x68, 0x53, 0x54, 0x2D, 0x31, 0x30, 0x0A, 0x00, 0xA0, 0x85, 0xC0, +0x01, 0xF1, 0x0E, 0x18, 0x00, 0x00, 0x00, 0x00, /* Pacific/Samoa */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -68425,8 +68038,8 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { /* US/Eastern */ 0x50, 0x48, 0x50, 0x32, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x80, 0x00, 0x00, 0x00, 0x9E, 0xA6, 0x1E, 0x70, 0x9F, 0xBA, 0xEB, 0x60, 0xA0, 0x86, 0x00, 0x70, 0xA1, 0x9A, 0xCD, 0x60, 0xA2, 0x65, 0xE2, 0x70, 0xA3, 0x83, 0xE9, 0xE0, 0xA4, 0x6A, 0xAE, 0x70, 0xA5, 0x35, 0xA7, 0x60, 0xA6, 0x53, 0xCA, 0xF0, 0xA7, 0x15, 0x89, 0x60, 0xA8, 0x33, 0xAC, 0xF0, 0xA8, 0xFE, 0xA5, 0xE0, @@ -68485,10 +68098,10 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x72, 0x6F, 0x97, 0xE0, 0x73, 0x15, 0xC2, 0xF0, 0x74, 0x4F, 0x79, 0xE0, 0x74, 0xFE, 0xDF, 0x70, 0x76, 0x38, 0x96, 0x60, 0x76, 0xDE, 0xC1, 0x70, 0x78, 0x18, 0x78, 0x60, 0x78, 0xBE, 0xA3, 0x70, 0x79, 0xF8, 0x5A, 0x60, 0x7A, 0x9E, 0x85, 0x70, 0x7B, 0xD8, 0x3C, 0x60, 0x7C, 0x7E, 0x67, 0x70, -0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x02, 0x01, 0x02, 0x01, +0x7D, 0xB8, 0x1E, 0x60, 0x7E, 0x5E, 0x49, 0x70, 0x7F, 0x98, 0x00, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x03, 0x04, 0x02, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, @@ -68501,149 +68114,150 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, -0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, -0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, 0x45, 0x53, -0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x14, -0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, -0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, -0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, -0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, -0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, -0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, 0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, -0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, -0x00, 0x00, 0x00, 0x00, 0x07, 0x8D, 0x19, 0x70, 0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, -0x00, 0x00, 0x00, 0x00, 0x09, 0xAD, 0x94, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, -0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, -0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, -0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, -0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, -0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, -0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, -0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, -0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, -0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, -0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, 0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, -0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, 0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, -0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, 0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, -0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x8A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x6C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x89, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, -0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x6B, 0x70, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, -0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x4D, 0x70, 0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x04, 0x60, -0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, 0x70, 0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, -0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, 0x70, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, -0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, -0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, 0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, -0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, 0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, -0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, -0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, 0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x11, 0x60, -0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, -0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, -0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, -0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0x96, 0x60, -0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x78, 0x60, -0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, 0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, -0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, -0x02, 0x03, 0x04, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, -0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, -0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, -0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, -0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, +0xC7, 0xC0, 0x01, 0x04, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, +0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, +0x45, 0x44, 0x54, 0x00, 0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, +0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x54, 0x5A, 0x69, 0x66, +0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, +0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x03, 0xF0, 0x90, +0xFF, 0xFF, 0xFF, 0xFF, 0x9E, 0xA6, 0x1E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xBA, 0xEB, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x86, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x9A, 0xCD, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x65, 0xE2, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x83, 0xE9, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x6A, 0xAE, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x35, 0xA7, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x53, 0xCA, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x15, 0x89, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x33, 0xAC, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0xFE, 0xA5, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x13, 0x8E, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0xDE, 0x87, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAB, 0xF3, 0x70, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0xBE, 0x69, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAD, 0xD3, 0x52, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x9E, 0x4B, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0xB3, 0x34, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xB0, 0x7E, 0x2D, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xB1, 0x9C, 0x51, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x67, 0x4A, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB3, 0x7C, 0x33, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x47, 0x2C, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB5, 0x5C, 0x15, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x27, 0x0E, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB7, 0x3B, 0xF7, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x06, 0xF0, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0x1B, 0xD9, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xB9, 0xE6, 0xD2, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x04, 0xF5, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0xC6, 0xB4, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0xE4, 0xD7, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBD, 0xAF, 0xD0, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xC4, 0xB9, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x8F, 0xB2, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xA4, 0x9B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x6F, 0x94, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x84, 0x7D, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x4F, 0x76, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC4, 0x64, 0x5F, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x2F, 0x58, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x4D, 0x7C, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x0F, 0x3A, 0xE0, +0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0x2D, 0x5E, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xC8, 0xF8, 0x57, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x0D, 0x40, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0xD8, 0x39, 0x60, +0xFF, 0xFF, 0xFF, 0xFF, 0xCB, 0x88, 0xF0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x23, 0xF4, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x60, 0xFB, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD3, 0x75, 0xE4, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x40, 0xDD, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD5, 0x55, 0xC6, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x20, 0xBF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x35, 0xA8, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0xA1, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0x15, 0x8A, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xD9, 0xE0, 0x83, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0xFE, 0xA7, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0xC0, 0x65, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0xDE, 0x89, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0xA9, 0x82, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xBE, 0x6B, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x89, 0x64, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x9E, 0x4D, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x69, 0x46, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x7E, 0x2F, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x49, 0x28, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xE4, 0x5E, 0x11, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x57, 0x2E, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE6, 0x47, 0x2D, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x37, 0x10, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x27, 0x0F, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x16, 0xF2, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x06, 0xF1, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xF6, 0xD4, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE6, 0xD3, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xEC, 0xD6, 0xB6, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0xC6, 0xB5, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0xBF, 0xD3, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAF, 0xD2, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x9F, 0xB5, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x8F, 0xB4, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x7F, 0x97, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x6F, 0x96, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x5F, 0x79, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x4F, 0x78, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3F, 0x5B, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x2F, 0x5A, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x28, 0x77, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF9, 0x0F, 0x3C, 0x70, +0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x08, 0x59, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0xF8, 0x58, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xE8, 0x3B, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xD8, 0x3A, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xC8, 0x1D, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB8, 0x1C, 0xF0, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xFE, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x01, 0x87, 0xE1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x77, 0xE0, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x03, 0x70, 0xFE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x60, 0xFD, 0x70, +0x00, 0x00, 0x00, 0x00, 0x05, 0x50, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x06, 0x40, 0xDF, 0x70, +0x00, 0x00, 0x00, 0x00, 0x07, 0x30, 0xC2, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x8D, 0x19, 0x70, +0x00, 0x00, 0x00, 0x00, 0x09, 0x10, 0xA4, 0x60, 0x00, 0x00, 0x00, 0x00, 0x09, 0xAD, 0x94, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x0A, 0xF0, 0x86, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0x85, 0x70, +0x00, 0x00, 0x00, 0x00, 0x0C, 0xD9, 0xA2, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0, 0x67, 0x70, +0x00, 0x00, 0x00, 0x00, 0x0E, 0xB9, 0x84, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xA9, 0x83, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x10, 0x99, 0x66, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x11, 0x89, 0x65, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x12, 0x79, 0x48, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0x47, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x14, 0x59, 0x2A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x15, 0x49, 0x29, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x16, 0x39, 0x0C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x17, 0x29, 0x0B, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x18, 0x22, 0x29, 0x60, 0x00, 0x00, 0x00, 0x00, 0x19, 0x08, 0xED, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x0B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xF2, 0x0A, 0x70, +0x00, 0x00, 0x00, 0x00, 0x1B, 0xE1, 0xED, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD1, 0xEC, 0x70, +0x00, 0x00, 0x00, 0x00, 0x1D, 0xC1, 0xCF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xB1, 0xCE, 0x70, +0x00, 0x00, 0x00, 0x00, 0x1F, 0xA1, 0xB1, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x76, 0x00, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x21, 0x81, 0x93, 0x60, 0x00, 0x00, 0x00, 0x00, 0x22, 0x55, 0xE2, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x23, 0x6A, 0xAF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x24, 0x35, 0xC4, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x25, 0x4A, 0x91, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x26, 0x15, 0xA6, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x27, 0x2A, 0x73, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFE, 0xC3, 0x70, +0x00, 0x00, 0x00, 0x00, 0x29, 0x0A, 0x55, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x29, 0xDE, 0xA5, 0x70, +0x00, 0x00, 0x00, 0x00, 0x2A, 0xEA, 0x37, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xBE, 0x87, 0x70, +0x00, 0x00, 0x00, 0x00, 0x2C, 0xD3, 0x54, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x9E, 0x69, 0x70, +0x00, 0x00, 0x00, 0x00, 0x2E, 0xB3, 0x36, 0x60, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x7E, 0x4B, 0x70, +0x00, 0x00, 0x00, 0x00, 0x30, 0x93, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00, 0x31, 0x67, 0x67, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x32, 0x72, 0xFA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x33, 0x47, 0x49, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x34, 0x52, 0xDC, 0x60, 0x00, 0x00, 0x00, 0x00, 0x35, 0x27, 0x2B, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x36, 0x32, 0xBE, 0x60, 0x00, 0x00, 0x00, 0x00, 0x37, 0x07, 0x0D, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x38, 0x1B, 0xDA, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x38, 0xE6, 0xEF, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x39, 0xFB, 0xBC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xC6, 0xD1, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x3B, 0xDB, 0x9E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xAF, 0xEE, 0x70, +0x00, 0x00, 0x00, 0x00, 0x3D, 0xBB, 0x80, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x8F, 0xD0, 0x70, +0x00, 0x00, 0x00, 0x00, 0x3F, 0x9B, 0x62, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x6F, 0xB2, 0x70, +0x00, 0x00, 0x00, 0x00, 0x41, 0x84, 0x7F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x94, 0x70, +0x00, 0x00, 0x00, 0x00, 0x43, 0x64, 0x61, 0x60, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x76, 0x70, +0x00, 0x00, 0x00, 0x00, 0x45, 0x44, 0x43, 0x60, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF3, 0xA8, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x47, 0x2D, 0x5F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x47, 0xD3, 0x8A, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x49, 0x0D, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x49, 0xB3, 0x6C, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x4A, 0xED, 0x23, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x9C, 0x89, 0x70, +0x00, 0x00, 0x00, 0x00, 0x4C, 0xD6, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x7C, 0x6B, 0x70, +0x00, 0x00, 0x00, 0x00, 0x4E, 0xB6, 0x22, 0x60, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x5C, 0x4D, 0x70, +0x00, 0x00, 0x00, 0x00, 0x50, 0x96, 0x04, 0x60, 0x00, 0x00, 0x00, 0x00, 0x51, 0x3C, 0x2F, 0x70, +0x00, 0x00, 0x00, 0x00, 0x52, 0x75, 0xE6, 0x60, 0x00, 0x00, 0x00, 0x00, 0x53, 0x1C, 0x11, 0x70, +0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0xC8, 0x60, 0x00, 0x00, 0x00, 0x00, 0x54, 0xFB, 0xF3, 0x70, +0x00, 0x00, 0x00, 0x00, 0x56, 0x35, 0xAA, 0x60, 0x00, 0x00, 0x00, 0x00, 0x56, 0xE5, 0x0F, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x58, 0x1E, 0xC6, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x58, 0xC4, 0xF1, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x59, 0xFE, 0xA8, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA4, 0xD3, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x5B, 0xDE, 0x8A, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x84, 0xB5, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x5D, 0xBE, 0x6C, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x5E, 0x64, 0x97, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x5F, 0x9E, 0x4E, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x4D, 0xB4, 0x70, +0x00, 0x00, 0x00, 0x00, 0x61, 0x87, 0x6B, 0x60, 0x00, 0x00, 0x00, 0x00, 0x62, 0x2D, 0x96, 0x70, +0x00, 0x00, 0x00, 0x00, 0x63, 0x67, 0x4D, 0x60, 0x00, 0x00, 0x00, 0x00, 0x64, 0x0D, 0x78, 0x70, +0x00, 0x00, 0x00, 0x00, 0x65, 0x47, 0x2F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x65, 0xED, 0x5A, 0x70, +0x00, 0x00, 0x00, 0x00, 0x67, 0x27, 0x11, 0x60, 0x00, 0x00, 0x00, 0x00, 0x67, 0xCD, 0x3C, 0x70, +0x00, 0x00, 0x00, 0x00, 0x69, 0x06, 0xF3, 0x60, 0x00, 0x00, 0x00, 0x00, 0x69, 0xAD, 0x1E, 0x70, +0x00, 0x00, 0x00, 0x00, 0x6A, 0xE6, 0xD5, 0x60, 0x00, 0x00, 0x00, 0x00, 0x6B, 0x96, 0x3A, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x6C, 0xCF, 0xF1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x76, 0x1C, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x6E, 0xAF, 0xD3, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x6F, 0x55, 0xFE, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x70, 0x8F, 0xB5, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x71, 0x35, 0xE0, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x97, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x73, 0x15, 0xC2, 0xF0, +0x00, 0x00, 0x00, 0x00, 0x74, 0x4F, 0x79, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFE, 0xDF, 0x70, +0x00, 0x00, 0x00, 0x00, 0x76, 0x38, 0x96, 0x60, 0x00, 0x00, 0x00, 0x00, 0x76, 0xDE, 0xC1, 0x70, +0x00, 0x00, 0x00, 0x00, 0x78, 0x18, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0xBE, 0xA3, 0x70, +0x00, 0x00, 0x00, 0x00, 0x79, 0xF8, 0x5A, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x9E, 0x85, 0x70, +0x00, 0x00, 0x00, 0x00, 0x7B, 0xD8, 0x3C, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x67, 0x70, +0x00, 0x00, 0x00, 0x00, 0x7D, 0xB8, 0x1E, 0x60, 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5E, 0x49, 0x70, +0x00, 0x00, 0x00, 0x00, 0x7F, 0x98, 0x00, 0x60, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, +0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x04, 0x05, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, +0x01, 0x02, 0x01, 0x02, 0xFF, 0xFF, 0xBA, 0x9E, 0x00, 0x00, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x04, +0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xB9, 0xB0, 0x00, 0x08, 0xFF, 0xFF, 0xC7, 0xC0, +0x01, 0x0C, 0xFF, 0xFF, 0xC7, 0xC0, 0x01, 0x10, 0x4C, 0x4D, 0x54, 0x00, 0x45, 0x44, 0x54, 0x00, +0x45, 0x53, 0x54, 0x00, 0x45, 0x57, 0x54, 0x00, 0x45, 0x50, 0x54, 0x00, 0x00, 0x00, 0x00, 0x01, +0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x0A, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, 0x2C, 0x4D, 0x33, 0x2E, 0x32, 0x2E, 0x30, 0x2C, 0x4D, 0x31, 0x31, 0x2E, 0x31, 0x2E, 0x30, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -69563,4 +69177,4 @@ const unsigned char timelib_timezone_db_data_builtin[703832] = { }; #endif -const timelib_tzdb timezonedb_builtin = { "2022.1", 595, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; +const timelib_tzdb timezonedb_builtin = { "2022.2", 596, timezonedb_idx_builtin, timelib_timezone_db_data_builtin }; diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 869349fd808fa..c64ef6afe112a 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -1722,6 +1722,7 @@ static void date_register_classes(void) /* {{{ */ date_ce_date = register_class_DateTime(date_ce_interface); date_ce_date->create_object = date_object_new_date; + date_ce_date->default_object_handlers = &date_object_handlers_date; memcpy(&date_object_handlers_date, &std_object_handlers, sizeof(zend_object_handlers)); date_object_handlers_date.offset = XtOffsetOf(php_date_obj, std); date_object_handlers_date.free_obj = date_object_free_storage_date; @@ -1732,6 +1733,7 @@ static void date_register_classes(void) /* {{{ */ date_ce_immutable = register_class_DateTimeImmutable(date_ce_interface); date_ce_immutable->create_object = date_object_new_date; + date_ce_immutable->default_object_handlers = &date_object_handlers_date; memcpy(&date_object_handlers_immutable, &std_object_handlers, sizeof(zend_object_handlers)); date_object_handlers_immutable.clone_obj = date_object_clone_date; date_object_handlers_immutable.compare = date_object_compare_date; @@ -1740,6 +1742,7 @@ static void date_register_classes(void) /* {{{ */ date_ce_timezone = register_class_DateTimeZone(); date_ce_timezone->create_object = date_object_new_timezone; + date_ce_timezone->default_object_handlers = &date_object_handlers_timezone; memcpy(&date_object_handlers_timezone, &std_object_handlers, sizeof(zend_object_handlers)); date_object_handlers_timezone.offset = XtOffsetOf(php_timezone_obj, std); date_object_handlers_timezone.free_obj = date_object_free_storage_timezone; @@ -1751,6 +1754,7 @@ static void date_register_classes(void) /* {{{ */ date_ce_interval = register_class_DateInterval(); date_ce_interval->create_object = date_object_new_interval; + date_ce_interval->default_object_handlers = &date_object_handlers_interval; memcpy(&date_object_handlers_interval, &std_object_handlers, sizeof(zend_object_handlers)); date_object_handlers_interval.offset = XtOffsetOf(php_interval_obj, std); date_object_handlers_interval.free_obj = date_object_free_storage_interval; @@ -1765,6 +1769,7 @@ static void date_register_classes(void) /* {{{ */ date_ce_period = register_class_DatePeriod(zend_ce_aggregate); date_ce_period->create_object = date_object_new_period; + date_ce_period->default_object_handlers = &date_object_handlers_period; date_ce_period->get_iterator = date_object_period_get_iterator; memcpy(&date_object_handlers_period, &std_object_handlers, sizeof(zend_object_handlers)); date_object_handlers_period.offset = XtOffsetOf(php_period_obj, std); @@ -1782,7 +1787,6 @@ static zend_object *date_object_new_date(zend_class_entry *class_type) /* {{{ */ zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &date_object_handlers_date; return &intern->std; } /* }}} */ @@ -1923,7 +1927,6 @@ static zend_object *date_object_new_timezone(zend_class_entry *class_type) /* {{ zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &date_object_handlers_timezone; return &intern->std; } /* }}} */ @@ -2076,7 +2079,6 @@ static zend_object *date_object_new_interval(zend_class_entry *class_type) /* {{ zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &date_object_handlers_interval; return &intern->std; } /* }}} */ @@ -2169,8 +2171,6 @@ static zend_object *date_object_new_period(zend_class_entry *class_type) /* {{{ zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &date_object_handlers_period; - return &intern->std; } /* }}} */ @@ -2269,7 +2269,11 @@ static void update_errors_warnings(timelib_error_container *last_errors) /* {{{ timelib_error_container_dtor(DATEG(last_errors)); DATEG(last_errors) = NULL; } - DATEG(last_errors) = last_errors; + if (last_errors->warning_count || last_errors->error_count) { + DATEG(last_errors) = last_errors; + } else { + timelib_error_container_dtor(last_errors); + } } /* }}} */ static void php_date_set_time_fraction(timelib_time *time, int microseconds) diff --git a/ext/date/php_date_arginfo.h b/ext/date/php_date_arginfo.h index dab0380169059..cdd31ee7189bc 100644 --- a/ext/date/php_date_arginfo.h +++ b/ext/date/php_date_arginfo.h @@ -750,35 +750,35 @@ static const zend_function_entry class_DatePeriod_methods[] = { static void register_php_date_symbols(int module_number) { - REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_RFC3339, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC3339, "Y-m-d\\TH:i:sP") == 0); - REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_COOKIE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_COOKIE, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_COOKIE, "l, d-M-Y H:i:s T") == 0); - REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_ISO8601, "Y-m-d\\TH:i:sO") == 0); - REGISTER_STRING_CONSTANT("DATE_ISO8601_EXPANDED", DATE_FORMAT_ISO8601_EXPANDED, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_ISO8601_EXPANDED", DATE_FORMAT_ISO8601_EXPANDED, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_ISO8601_EXPANDED, "X-m-d\\TH:i:sP") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC822, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC822, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC822, "D, d M y H:i:s O") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC850", DATE_FORMAT_RFC850, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC850", DATE_FORMAT_RFC850, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC850, "l, d-M-y H:i:s T") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC1036", DATE_FORMAT_RFC1036, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC1036", DATE_FORMAT_RFC1036, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC1036, "D, d M y H:i:s O") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC1123", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC1123", DATE_FORMAT_RFC1123, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC1123, "D, d M Y H:i:s O") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC7231", DATE_FORMAT_RFC7231, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC7231", DATE_FORMAT_RFC7231, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC7231, "D, d M Y H:i:s \\G\\M\\T") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC2822", DATE_FORMAT_RFC2822, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC2822", DATE_FORMAT_RFC2822, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC2822, "D, d M Y H:i:s O") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC3339", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC3339", DATE_FORMAT_RFC3339, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC3339, "Y-m-d\\TH:i:sP") == 0); - REGISTER_STRING_CONSTANT("DATE_RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC3339_EXTENDED", DATE_FORMAT_RFC3339_EXTENDED, CONST_PERSISTENT); ZEND_ASSERT(strcmp(DATE_FORMAT_RFC3339_EXTENDED, "Y-m-d\\TH:i:s.vP") == 0); - REGISTER_STRING_CONSTANT("DATE_RSS", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("DATE_W3C", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SUNFUNCS_RET_TIMESTAMP", SUNFUNCS_RET_TIMESTAMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SUNFUNCS_RET_STRING", SUNFUNCS_RET_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SUNFUNCS_RET_DOUBLE", SUNFUNCS_RET_DOUBLE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RSS", DATE_FORMAT_RFC1123, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_W3C", DATE_FORMAT_RFC3339, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SUNFUNCS_RET_TIMESTAMP", SUNFUNCS_RET_TIMESTAMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SUNFUNCS_RET_STRING", SUNFUNCS_RET_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SUNFUNCS_RET_DOUBLE", SUNFUNCS_RET_DOUBLE, CONST_PERSISTENT); } static zend_class_entry *register_class_DateTimeInterface(void) diff --git a/ext/date/tests/bug33415-2.phpt b/ext/date/tests/bug33415-2.phpt index 9c265851a7f3e..fb28c4878385b 100644 --- a/ext/date/tests/bug33415-2.phpt +++ b/ext/date/tests/bug33415-2.phpt @@ -95,7 +95,7 @@ $tStamp = mktime (17, 17, 17, 1, 2855, 1970); print "tStamp=". date("l Y-m-d H:i:s T I", $tStamp). "\n"; $strtotime_tstamp = strtotime("next Tuesday", $tStamp); print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n"; -print "wanted=Tuesday 00:30:00\n\n"; +print "wanted=Tuesday 00:00:00\n\n"; print "TZ=Pacific/Tarawa - Is it OK for this to be Midday? Note: does not appear to have a DST or timezone transition.\n"; @@ -250,9 +250,9 @@ result=Sunday 1981-03-29 02:00:00 +00 1 wanted=Sunday 02:00:00 TZ=Asia/Tehran - Is it OK for this to be 0:30 AM? yes -tStamp=Tuesday 1977-10-25 17:17:17 +0330 0 -result=Tuesday 1977-11-01 00:30:00 +04 0 -wanted=Tuesday 00:30:00 +tStamp=Tuesday 1977-10-25 17:17:17 +04 0 +result=Tuesday 1977-11-01 00:00:00 +04 0 +wanted=Tuesday 00:00:00 TZ=Pacific/Tarawa - Is it OK for this to be Midday? Note: does not appear to have a DST or timezone transition. diff --git a/ext/date/tests/bug51866.phpt b/ext/date/tests/bug51866.phpt index 921a9392932f7..c73f6b0cb9e8d 100644 --- a/ext/date/tests/bug51866.phpt +++ b/ext/date/tests/bug51866.phpt @@ -105,18 +105,7 @@ object(DateTime)#%d (3) { ["timezone"]=> string(%d) "%s" } -array(4) { - ["warning_count"]=> - int(0) - ["warnings"]=> - array(0) { - } - ["error_count"]=> - int(0) - ["errors"]=> - array(0) { - } -} +bool(false) string(7) "Y-m-d +" @@ -148,15 +137,4 @@ object(DateTime)#%d (3) { ["timezone"]=> string(%d) "%s" } -array(4) { - ["warning_count"]=> - int(0) - ["warnings"]=> - array(0) { - } - ["error_count"]=> - int(0) - ["errors"]=> - array(0) { - } -} +bool(false) diff --git a/ext/date/tests/date-lenient-create.phpt b/ext/date/tests/date-lenient-create.phpt index 2d59ceba79c87..0168238a96d8b 100644 --- a/ext/date/tests/date-lenient-create.phpt +++ b/ext/date/tests/date-lenient-create.phpt @@ -113,19 +113,6 @@ DateTime Object [timezone_type] => 3 [timezone] => UTC ) -Array -( - [warning_count] => 0 - [warnings] => Array - ( - ) - - [error_count] => 0 - [errors] => Array - ( - ) - -) == DateTime Object ( @@ -133,17 +120,4 @@ DateTime Object [timezone_type] => 3 [timezone] => UTC ) -Array -( - [warning_count] => 0 - [warnings] => Array - ( - ) - - [error_count] => 0 - [errors] => Array - ( - ) - -) == diff --git a/ext/dba/dba_arginfo.h b/ext/dba/dba_arginfo.h index 63f845e192be5..447f1ff3cc2ee 100644 --- a/ext/dba/dba_arginfo.h +++ b/ext/dba/dba_arginfo.h @@ -100,9 +100,9 @@ static const zend_function_entry ext_functions[] = { static void register_dba_symbols(int module_number) { #if defined(DBA_LMDB) - REGISTER_LONG_CONSTANT("DBA_LMDB_USE_SUB_DIR", 0, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DBA_LMDB_USE_SUB_DIR", 0, CONST_PERSISTENT); #endif #if defined(DBA_LMDB) - REGISTER_LONG_CONSTANT("DBA_LMDB_NO_SUB_DIR", MDB_NOSUBDIR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DBA_LMDB_NO_SUB_DIR", MDB_NOSUBDIR, CONST_PERSISTENT); #endif } diff --git a/ext/dba/tests/dba_optimize.phpt b/ext/dba/tests/dba_optimize.phpt index 8798d20ae6fb6..d3193dd309e1d 100644 --- a/ext/dba/tests/dba_optimize.phpt +++ b/ext/dba/tests/dba_optimize.phpt @@ -2,6 +2,8 @@ DBA Optimize Test --EXTENSIONS-- dba +--CONFLICTS-- +dba --SKIPIF-- doc, newchild); } } else if (oldchild != newchild) { + xmlDtdPtr intSubset = xmlGetIntSubset(nodep->doc); + replacedoctype = (intSubset == (xmlDtd *) oldchild); + if (newchild->doc == NULL && nodep->doc != NULL) { xmlSetTreeDoc(newchild, nodep->doc); newchildobj->document = intern->document; @@ -1066,6 +1070,10 @@ PHP_METHOD(DOMNode, replaceChild) } xmlReplaceNode(oldchild, newchild); dom_reconcile_ns(nodep->doc, newchild); + + if (replacedoctype) { + nodep->doc->intSubset = (xmlDtd *) newchild; + } } DOM_RET_OBJ(oldchild, &ret, intern); } diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c index 18b0bce90d3b8..d9463012f146b 100644 --- a/ext/dom/php_dom.c +++ b/ext/dom/php_dom.c @@ -660,6 +660,7 @@ PHP_MINIT_FUNCTION(dom) dom_nodelist_class_entry = register_class_DOMNodeList(zend_ce_aggregate, zend_ce_countable); dom_nodelist_class_entry->create_object = dom_nnodemap_objects_new; + dom_nodelist_class_entry->default_object_handlers = &dom_nnodemap_object_handlers; dom_nodelist_class_entry->get_iterator = php_dom_get_iterator; zend_hash_init(&dom_nodelist_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1); @@ -668,6 +669,7 @@ PHP_MINIT_FUNCTION(dom) dom_namednodemap_class_entry = register_class_DOMNamedNodeMap(zend_ce_aggregate, zend_ce_countable); dom_namednodemap_class_entry->create_object = dom_nnodemap_objects_new; + dom_namednodemap_class_entry->default_object_handlers = &dom_nnodemap_object_handlers; dom_namednodemap_class_entry->get_iterator = php_dom_get_iterator; zend_hash_init(&dom_namednodemap_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1); @@ -782,6 +784,7 @@ PHP_MINIT_FUNCTION(dom) dom_xpath_class_entry = register_class_DOMXPath(); dom_xpath_class_entry->create_object = dom_xpath_objects_new; + dom_xpath_class_entry->default_object_handlers = &dom_xpath_object_handlers; zend_hash_init(&dom_xpath_prop_handlers, 0, NULL, dom_dtor_prop_handler, 1); dom_register_prop_handler(&dom_xpath_prop_handlers, "document", sizeof("document")-1, dom_xpath_document_read, NULL); @@ -989,7 +992,6 @@ zend_object *dom_xpath_objects_new(zend_class_entry *class_type) intern->register_node_ns = 1; intern->dom.prop_handler = &dom_xpath_prop_handlers; - intern->dom.std.handlers = &dom_xpath_object_handlers; zend_object_std_init(&intern->dom.std, class_type); object_properties_init(&intern->dom.std, class_type); @@ -1039,8 +1041,6 @@ zend_object *dom_nnodemap_objects_new(zend_class_entry *class_type) /* {{{ */ objmap->local = NULL; objmap->ns = NULL; - intern->std.handlers = &dom_nnodemap_object_handlers; - return &intern->std; } /* }}} */ diff --git a/ext/dom/php_dom_arginfo.h b/ext/dom/php_dom_arginfo.h index f33b8be46ff7b..4edb4cf2bb15c 100644 --- a/ext/dom/php_dom_arginfo.h +++ b/ext/dom/php_dom_arginfo.h @@ -889,54 +889,54 @@ static const zend_function_entry class_DOMXPath_methods[] = { static void register_php_dom_symbols(int module_number) { - REGISTER_LONG_CONSTANT("XML_ELEMENT_NODE", XML_ELEMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NODE", XML_ATTRIBUTE_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_TEXT_NODE", XML_TEXT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_CDATA_SECTION_NODE", XML_CDATA_SECTION_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ENTITY_REF_NODE", XML_ENTITY_REF_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ENTITY_NODE", XML_ENTITY_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_PI_NODE", XML_PI_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_COMMENT_NODE", XML_COMMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DOCUMENT_NODE", XML_DOCUMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DOCUMENT_TYPE_NODE", XML_DOCUMENT_TYPE_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DOCUMENT_FRAG_NODE", XML_DOCUMENT_FRAG_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_NOTATION_NODE", XML_NOTATION_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_HTML_DOCUMENT_NODE", XML_HTML_DOCUMENT_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_DTD_NODE", XML_DTD_NODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ELEMENT_DECL_NODE", XML_ELEMENT_DECL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_DECL_NODE", XML_ATTRIBUTE_DECL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ENTITY_DECL_NODE", XML_ENTITY_DECL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_NAMESPACE_DECL_NODE", XML_NAMESPACE_DECL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ELEMENT_NODE", XML_ELEMENT_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NODE", XML_ATTRIBUTE_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_TEXT_NODE", XML_TEXT_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_CDATA_SECTION_NODE", XML_CDATA_SECTION_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ENTITY_REF_NODE", XML_ENTITY_REF_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ENTITY_NODE", XML_ENTITY_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_PI_NODE", XML_PI_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_COMMENT_NODE", XML_COMMENT_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DOCUMENT_NODE", XML_DOCUMENT_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DOCUMENT_TYPE_NODE", XML_DOCUMENT_TYPE_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DOCUMENT_FRAG_NODE", XML_DOCUMENT_FRAG_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_NOTATION_NODE", XML_NOTATION_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_HTML_DOCUMENT_NODE", XML_HTML_DOCUMENT_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_DTD_NODE", XML_DTD_NODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ELEMENT_DECL_NODE", XML_ELEMENT_DECL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_DECL_NODE", XML_ATTRIBUTE_DECL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ENTITY_DECL_NODE", XML_ENTITY_DECL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_NAMESPACE_DECL_NODE", XML_NAMESPACE_DECL, CONST_PERSISTENT); #if defined(XML_GLOBAL_NAMESPACE) - REGISTER_LONG_CONSTANT("XML_GLOBAL_NAMESPACE", XML_GLOBAL_NAMESPACE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_GLOBAL_NAMESPACE", XML_GLOBAL_NAMESPACE, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("XML_LOCAL_NAMESPACE", XML_LOCAL_NAMESPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_CDATA", XML_ATTRIBUTE_CDATA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ID", XML_ATTRIBUTE_ID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREF", XML_ATTRIBUTE_IDREF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREFS", XML_ATTRIBUTE_IDREFS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENTITY", XML_ATTRIBUTE_ENTITIES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKEN", XML_ATTRIBUTE_NMTOKEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKENS", XML_ATTRIBUTE_NMTOKENS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENUMERATION", XML_ATTRIBUTE_ENUMERATION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NOTATION", XML_ATTRIBUTE_NOTATION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_PHP_ERR", PHP_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_INDEX_SIZE_ERR", INDEX_SIZE_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOMSTRING_SIZE_ERR", DOMSTRING_SIZE_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_HIERARCHY_REQUEST_ERR", HIERARCHY_REQUEST_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_WRONG_DOCUMENT_ERR", WRONG_DOCUMENT_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_INVALID_CHARACTER_ERR", INVALID_CHARACTER_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_NO_DATA_ALLOWED_ERR", NO_DATA_ALLOWED_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_NO_MODIFICATION_ALLOWED_ERR", NO_MODIFICATION_ALLOWED_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_NOT_FOUND_ERR", NOT_FOUND_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_NOT_SUPPORTED_ERR", NOT_SUPPORTED_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_INUSE_ATTRIBUTE_ERR", INUSE_ATTRIBUTE_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_INVALID_STATE_ERR", INVALID_STATE_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_SYNTAX_ERR", SYNTAX_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_INVALID_MODIFICATION_ERR", INVALID_MODIFICATION_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_NAMESPACE_ERR", NAMESPACE_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_INVALID_ACCESS_ERR", INVALID_ACCESS_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DOM_VALIDATION_ERR", VALIDATION_ERR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_LOCAL_NAMESPACE", XML_LOCAL_NAMESPACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_CDATA", XML_ATTRIBUTE_CDATA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ID", XML_ATTRIBUTE_ID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREF", XML_ATTRIBUTE_IDREF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_IDREFS", XML_ATTRIBUTE_IDREFS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENTITY", XML_ATTRIBUTE_ENTITIES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKEN", XML_ATTRIBUTE_NMTOKEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NMTOKENS", XML_ATTRIBUTE_NMTOKENS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_ENUMERATION", XML_ATTRIBUTE_ENUMERATION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ATTRIBUTE_NOTATION", XML_ATTRIBUTE_NOTATION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_PHP_ERR", PHP_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_INDEX_SIZE_ERR", INDEX_SIZE_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOMSTRING_SIZE_ERR", DOMSTRING_SIZE_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_HIERARCHY_REQUEST_ERR", HIERARCHY_REQUEST_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_WRONG_DOCUMENT_ERR", WRONG_DOCUMENT_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_INVALID_CHARACTER_ERR", INVALID_CHARACTER_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_NO_DATA_ALLOWED_ERR", NO_DATA_ALLOWED_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_NO_MODIFICATION_ALLOWED_ERR", NO_MODIFICATION_ALLOWED_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_NOT_FOUND_ERR", NOT_FOUND_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_NOT_SUPPORTED_ERR", NOT_SUPPORTED_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_INUSE_ATTRIBUTE_ERR", INUSE_ATTRIBUTE_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_INVALID_STATE_ERR", INVALID_STATE_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_SYNTAX_ERR", SYNTAX_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_INVALID_MODIFICATION_ERR", INVALID_MODIFICATION_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_NAMESPACE_ERR", NAMESPACE_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_INVALID_ACCESS_ERR", INVALID_ACCESS_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("DOM_VALIDATION_ERR", VALIDATION_ERR, CONST_PERSISTENT); } static zend_class_entry *register_class_DOMDocumentType(zend_class_entry *class_entry_DOMNode) diff --git a/ext/dom/tests/bug79451.phpt b/ext/dom/tests/bug79451.phpt new file mode 100644 index 0000000000000..f2c238a91903b --- /dev/null +++ b/ext/dom/tests/bug79451.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #79451 (Using DOMDocument->replaceChild on doctype causes double free) +--EXTENSIONS-- +dom +--FILE-- +loadHTML("

hello

"); +$impl = new \DOMImplementation(); +$dt = $impl->createDocumentType("html_replace", "", ""); +$dom->replaceChild($dt, $dom->doctype); + +var_dump($dom->doctype->name); +echo $dom->saveXML(); +?> +--EXPECTF-- +string(12) "html_replace" + + +

hello

diff --git a/ext/enchant/enchant.c b/ext/enchant/enchant.c index 2ddf5f041003e..5c209705d776b 100644 --- a/ext/enchant/enchant.c +++ b/ext/enchant/enchant.c @@ -61,7 +61,6 @@ static zend_object *enchant_broker_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &enchant_broker_handlers; return &intern->std; } @@ -80,7 +79,6 @@ static zend_object *enchant_dict_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &enchant_dict_handlers; return &intern->std; } @@ -191,6 +189,7 @@ PHP_MINIT_FUNCTION(enchant) { enchant_broker_ce = register_class_EnchantBroker(); enchant_broker_ce->create_object = enchant_broker_create_object; + enchant_broker_ce->default_object_handlers = &enchant_broker_handlers; memcpy(&enchant_broker_handlers, &std_object_handlers, sizeof(zend_object_handlers)); enchant_broker_handlers.offset = XtOffsetOf(enchant_broker, std); @@ -200,6 +199,7 @@ PHP_MINIT_FUNCTION(enchant) enchant_dict_ce = register_class_EnchantDictionary(); enchant_dict_ce->create_object = enchant_dict_create_object; + enchant_dict_ce->default_object_handlers = &enchant_dict_handlers; memcpy(&enchant_dict_handlers, &std_object_handlers, sizeof(zend_object_handlers)); enchant_dict_handlers.offset = XtOffsetOf(enchant_dict, std); diff --git a/ext/enchant/enchant_arginfo.h b/ext/enchant/enchant_arginfo.h index 3a2fa5b90d83a..65e9c461cf605 100644 --- a/ext/enchant/enchant_arginfo.h +++ b/ext/enchant/enchant_arginfo.h @@ -160,10 +160,10 @@ static const zend_function_entry class_EnchantDictionary_methods[] = { static void register_enchant_symbols(int module_number) { - REGISTER_LONG_CONSTANT("ENCHANT_MYSPELL", PHP_ENCHANT_MYSPELL, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("ENCHANT_ISPELL", PHP_ENCHANT_ISPELL, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("ENCHANT_MYSPELL", PHP_ENCHANT_MYSPELL, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("ENCHANT_ISPELL", PHP_ENCHANT_ISPELL, CONST_PERSISTENT | CONST_DEPRECATED); #if defined(HAVE_ENCHANT_GET_VERSION) - REGISTER_STRING_CONSTANT("LIBENCHANT_VERSION", PHP_ENCHANT_GET_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LIBENCHANT_VERSION", PHP_ENCHANT_GET_VERSION, CONST_PERSISTENT); #endif } diff --git a/ext/exif/exif_arginfo.h b/ext/exif/exif_arginfo.h index dca9535a48667..da463404cdabd 100644 --- a/ext/exif/exif_arginfo.h +++ b/ext/exif/exif_arginfo.h @@ -40,5 +40,5 @@ static const zend_function_entry ext_functions[] = { static void register_exif_symbols(int module_number) { - REGISTER_LONG_CONSTANT("EXIF_USE_MBSTRING", USE_MBSTRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXIF_USE_MBSTRING", USE_MBSTRING, CONST_PERSISTENT); } diff --git a/ext/ffi/ffi.c b/ext/ffi/ffi.c index 76e67d06adfe7..30f7fd9f6b197 100644 --- a/ext/ffi/ffi.c +++ b/ext/ffi/ffi.c @@ -234,6 +234,7 @@ static zend_always_inline void zend_ffi_object_init(zend_object *object, zend_cl GC_SET_REFCOUNT(object, 1); GC_TYPE_INFO(object) = GC_OBJECT | (IS_OBJ_DESTRUCTOR_CALLED << GC_FLAGS_SHIFT); object->ce = ce; + object->handlers = ce->default_object_handlers; object->properties = NULL; zend_objects_store_put(object); } @@ -246,7 +247,6 @@ static zend_object *zend_ffi_cdata_new(zend_class_entry *class_type) /* {{{ */ cdata = emalloc(sizeof(zend_ffi_cdata)); zend_ffi_object_init(&cdata->std, class_type); - cdata->std.handlers = &zend_ffi_cdata_handlers; cdata->type = NULL; cdata->ptr = NULL; @@ -495,7 +495,6 @@ static zend_never_inline zend_ffi_cdata *zend_ffi_cdata_to_zval_slow_ptr(void *p zend_ffi_cdata *cdata = emalloc(sizeof(zend_ffi_cdata)); zend_ffi_object_init(&cdata->std, zend_ffi_cdata_ce); - cdata->std.handlers = &zend_ffi_cdata_handlers; cdata->type = type; cdata->flags = flags; cdata->ptr = (void*)&cdata->ptr_holder; @@ -1215,20 +1214,10 @@ static zval *zend_ffi_cdata_read_field(zend_object *obj, zend_string *field_name if (cache_slot && *cache_slot == type) { field = *(cache_slot + 1); } else { + if (type->kind == ZEND_FFI_TYPE_POINTER) { + type = ZEND_FFI_TYPE(type->pointer.type); + } if (UNEXPECTED(type->kind != ZEND_FFI_TYPE_STRUCT)) { - if (type->kind == ZEND_FFI_TYPE_POINTER) { - /* transparently dereference the pointer */ - if (UNEXPECTED(!ptr)) { - zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); - return &EG(uninitialized_zval); - } - ptr = (void*)(*(char**)ptr); - if (UNEXPECTED(!ptr)) { - zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); - return &EG(uninitialized_zval); - } - type = ZEND_FFI_TYPE(type->pointer.type); - } if (UNEXPECTED(type->kind != ZEND_FFI_TYPE_STRUCT)) { zend_throw_error(zend_ffi_exception_ce, "Attempt to read field '%s' of non C struct/union", ZSTR_VAL(field_name)); return &EG(uninitialized_zval); @@ -1247,6 +1236,20 @@ static zval *zend_ffi_cdata_read_field(zend_object *obj, zend_string *field_name } } + if (ZEND_FFI_TYPE(cdata->type)->kind == ZEND_FFI_TYPE_POINTER) { + /* transparently dereference the pointer */ + if (UNEXPECTED(!ptr)) { + zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); + return &EG(uninitialized_zval); + } + ptr = (void*)(*(char**)ptr); + if (UNEXPECTED(!ptr)) { + zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); + return &EG(uninitialized_zval); + } + type = ZEND_FFI_TYPE(type->pointer.type); + } + #if 0 if (UNEXPECTED(!ptr)) { zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); @@ -1284,20 +1287,10 @@ static zval *zend_ffi_cdata_write_field(zend_object *obj, zend_string *field_nam if (cache_slot && *cache_slot == type) { field = *(cache_slot + 1); } else { + if (type->kind == ZEND_FFI_TYPE_POINTER) { + type = ZEND_FFI_TYPE(type->pointer.type); + } if (UNEXPECTED(type->kind != ZEND_FFI_TYPE_STRUCT)) { - if (type->kind == ZEND_FFI_TYPE_POINTER) { - /* transparently dereference the pointer */ - if (UNEXPECTED(!ptr)) { - zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); - return value; - } - ptr = (void*)(*(char**)ptr); - if (UNEXPECTED(!ptr)) { - zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); - return value; - } - type = ZEND_FFI_TYPE(type->pointer.type); - } if (UNEXPECTED(type->kind != ZEND_FFI_TYPE_STRUCT)) { zend_throw_error(zend_ffi_exception_ce, "Attempt to assign field '%s' of non C struct/union", ZSTR_VAL(field_name)); return value; @@ -1316,6 +1309,19 @@ static zval *zend_ffi_cdata_write_field(zend_object *obj, zend_string *field_nam } } + if (ZEND_FFI_TYPE(cdata->type)->kind == ZEND_FFI_TYPE_POINTER) { + /* transparently dereference the pointer */ + if (UNEXPECTED(!ptr)) { + zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); + return value; + } + ptr = (void*)(*(char**)ptr); + if (UNEXPECTED(!ptr)) { + zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); + return value; + } + } + #if 0 if (UNEXPECTED(!ptr)) { zend_throw_error(zend_ffi_exception_ce, "NULL pointer dereference"); @@ -2167,7 +2173,6 @@ static zend_object *zend_ffi_ctype_new(zend_class_entry *class_type) /* {{{ */ ctype = emalloc(sizeof(zend_ffi_ctype)); zend_ffi_object_init(&ctype->std, class_type); - ctype->std.handlers = &zend_ffi_ctype_handlers; ctype->type = NULL; @@ -2254,7 +2259,6 @@ static zend_object *zend_ffi_new(zend_class_entry *class_type) /* {{{ */ ffi = emalloc(sizeof(zend_ffi)); zend_ffi_object_init(&ffi->std, class_type); - ffi->std.handlers = &zend_ffi_handlers; ffi->lib = NULL; ffi->symbols = NULL; @@ -2466,7 +2470,6 @@ static zval *zend_ffi_read_var(zend_object *obj, zend_string *var_name, int read cdata = emalloc(sizeof(zend_ffi_cdata)); zend_ffi_object_init(&cdata->std, zend_ffi_cdata_ce); - cdata->std.handlers = &zend_ffi_cdata_handlers; cdata->type = ZEND_FFI_TYPE_MAKE_OWNED(new_type); cdata->flags = ZEND_FFI_FLAG_CONST; cdata->ptr_holder = sym->addr; @@ -5176,7 +5179,7 @@ static ZEND_INI_DISP(zend_ffi_enable_displayer_cb) /* {{{ */ /* }}} */ ZEND_INI_BEGIN() - ZEND_INI_ENTRY3_EX("ffi.enable", "preload", ZEND_INI_SYSTEM, OnUpdateFFIEnable, NULL, NULL, NULL, zend_ffi_enable_displayer_cb) + ZEND_INI_ENTRY_EX("ffi.enable", "preload", ZEND_INI_SYSTEM, OnUpdateFFIEnable, zend_ffi_enable_displayer_cb) STD_ZEND_INI_ENTRY("ffi.preload", NULL, ZEND_INI_SYSTEM, OnUpdateString, preload, zend_ffi_globals, ffi_globals) ZEND_INI_END() @@ -5298,6 +5301,7 @@ ZEND_MINIT_FUNCTION(ffi) zend_ffi_ce = register_class_FFI(); zend_ffi_ce->create_object = zend_ffi_new; + zend_ffi_ce->default_object_handlers = &zend_ffi_handlers; memcpy(&zend_ffi_new_fn, zend_hash_str_find_ptr(&zend_ffi_ce->function_table, "new", sizeof("new")-1), sizeof(zend_internal_function)); zend_ffi_new_fn.fn_flags &= ~ZEND_ACC_STATIC; @@ -5329,6 +5333,7 @@ ZEND_MINIT_FUNCTION(ffi) zend_ffi_cdata_ce = register_class_FFI_CData(); zend_ffi_cdata_ce->create_object = zend_ffi_cdata_new; + zend_ffi_cdata_ce->default_object_handlers = &zend_ffi_cdata_handlers; zend_ffi_cdata_ce->get_iterator = zend_ffi_cdata_get_iterator; memcpy(&zend_ffi_cdata_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); @@ -5403,6 +5408,7 @@ ZEND_MINIT_FUNCTION(ffi) zend_ffi_ctype_ce = register_class_FFI_CType(); zend_ffi_ctype_ce->create_object = zend_ffi_ctype_new; + zend_ffi_ctype_ce->default_object_handlers = &zend_ffi_ctype_handlers; memcpy(&zend_ffi_ctype_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); zend_ffi_ctype_handlers.get_constructor = zend_fake_get_constructor; @@ -5459,7 +5465,7 @@ ZEND_RSHUTDOWN_FUNCTION(ffi) ZEND_MINFO_FUNCTION(ffi) { php_info_print_table_start(); - php_info_print_table_header(2, "FFI support", "enabled"); + php_info_print_table_row(2, "FFI support", "enabled"); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); diff --git a/ext/ffi/tests/047.phpt b/ext/ffi/tests/047.phpt new file mode 100644 index 0000000000000..8bd83320b5066 --- /dev/null +++ b/ext/ffi/tests/047.phpt @@ -0,0 +1,38 @@ +--TEST-- +FFI 047: FFI::CData->cdata meaning +--EXTENSIONS-- +ffi +--INI-- +ffi.enable=1 +--FILE-- +cdata = 42; +var_dump($x); + +$x = FFI::new("int*"); +try { + $x->cdata = 42; + var_dump($x); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} + +$x = FFI::new("struct {int cdata;}"); +try { + $x->cdata = 42; + var_dump($x); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECTF-- +object(FFI\CData:int32_t)#%d (1) { + ["cdata"]=> + int(42) +} +Attempt to assign field 'cdata' of non C struct/union +object(FFI\CData:struct )#%d (1) { + ["cdata"]=> + int(42) +} diff --git a/ext/fileinfo/fileinfo.c b/ext/fileinfo/fileinfo.c index 8163884577ad6..90af9baa3d08a 100644 --- a/ext/fileinfo/fileinfo.c +++ b/ext/fileinfo/fileinfo.c @@ -89,7 +89,6 @@ PHP_FILEINFO_API zend_object *finfo_objects_new(zend_class_entry *class_type) zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); - intern->zo.handlers = &finfo_object_handlers; return &intern->zo; } @@ -108,6 +107,7 @@ PHP_MINIT_FUNCTION(finfo) { finfo_class_entry = register_class_finfo(); finfo_class_entry->create_object = finfo_objects_new; + finfo_class_entry->default_object_handlers = &finfo_object_handlers; /* copy the standard object handlers to you handler table */ memcpy(&finfo_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); diff --git a/ext/fileinfo/fileinfo_arginfo.h b/ext/fileinfo/fileinfo_arginfo.h index 8906643939fe3..0d2dff82bb40c 100644 --- a/ext/fileinfo/fileinfo_arginfo.h +++ b/ext/fileinfo/fileinfo_arginfo.h @@ -84,21 +84,21 @@ static const zend_function_entry class_finfo_methods[] = { static void register_fileinfo_symbols(int module_number) { - REGISTER_LONG_CONSTANT("FILEINFO_NONE", MAGIC_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILEINFO_SYMLINK", MAGIC_SYMLINK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILEINFO_MIME", MAGIC_MIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILEINFO_MIME_TYPE", MAGIC_MIME_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILEINFO_MIME_ENCODING", MAGIC_MIME_ENCODING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILEINFO_DEVICES", MAGIC_DEVICES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILEINFO_CONTINUE", MAGIC_CONTINUE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_NONE", MAGIC_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_SYMLINK", MAGIC_SYMLINK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_MIME", MAGIC_MIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_MIME_TYPE", MAGIC_MIME_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_MIME_ENCODING", MAGIC_MIME_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_DEVICES", MAGIC_DEVICES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_CONTINUE", MAGIC_CONTINUE, CONST_PERSISTENT); #if defined(MAGIC_PRESERVE_ATIME) - REGISTER_LONG_CONSTANT("FILEINFO_PRESERVE_ATIME", MAGIC_PRESERVE_ATIME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_PRESERVE_ATIME", MAGIC_PRESERVE_ATIME, CONST_PERSISTENT); #endif #if defined(MAGIC_RAW) - REGISTER_LONG_CONSTANT("FILEINFO_RAW", MAGIC_RAW, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_RAW", MAGIC_RAW, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("FILEINFO_APPLE", MAGIC_APPLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILEINFO_EXTENSION", MAGIC_EXTENSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_APPLE", MAGIC_APPLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILEINFO_EXTENSION", MAGIC_EXTENSION, CONST_PERSISTENT); } static zend_class_entry *register_class_finfo(void) diff --git a/ext/filter/filter_arginfo.h b/ext/filter/filter_arginfo.h index f79b7112f601c..6eb5912182d09 100644 --- a/ext/filter/filter_arginfo.h +++ b/ext/filter/filter_arginfo.h @@ -61,59 +61,59 @@ static const zend_function_entry ext_functions[] = { static void register_filter_symbols(int module_number) { - REGISTER_LONG_CONSTANT("INPUT_POST", PARSE_POST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INPUT_GET", PARSE_GET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INPUT_COOKIE", PARSE_COOKIE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INPUT_ENV", PARSE_ENV, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INPUT_SERVER", PARSE_SERVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_NONE", FILTER_FLAG_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_REQUIRE_SCALAR", FILTER_REQUIRE_SCALAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_REQUIRE_ARRAY", FILTER_REQUIRE_ARRAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FORCE_ARRAY", FILTER_FORCE_ARRAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_NULL_ON_FAILURE", FILTER_NULL_ON_FAILURE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_INT", FILTER_VALIDATE_INT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_BOOLEAN", FILTER_VALIDATE_BOOL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_BOOL", FILTER_VALIDATE_BOOL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_FLOAT", FILTER_VALIDATE_FLOAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_REGEXP", FILTER_VALIDATE_REGEXP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_DOMAIN", FILTER_VALIDATE_DOMAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_URL", FILTER_VALIDATE_URL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_EMAIL", FILTER_VALIDATE_EMAIL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_IP", FILTER_VALIDATE_IP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_VALIDATE_MAC", FILTER_VALIDATE_MAC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_DEFAULT", FILTER_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_UNSAFE_RAW", FILTER_UNSAFE_RAW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_STRING", FILTER_SANITIZE_STRING, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_STRIPPED", FILTER_SANITIZE_STRING, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_ENCODED", FILTER_SANITIZE_ENCODED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_SPECIAL_CHARS", FILTER_SANITIZE_SPECIAL_CHARS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_FULL_SPECIAL_CHARS", FILTER_SANITIZE_FULL_SPECIAL_CHARS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_EMAIL", FILTER_SANITIZE_EMAIL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_URL", FILTER_SANITIZE_URL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_NUMBER_INT", FILTER_SANITIZE_NUMBER_INT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_NUMBER_FLOAT", FILTER_SANITIZE_NUMBER_FLOAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_SANITIZE_ADD_SLASHES", FILTER_SANITIZE_ADD_SLASHES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_CALLBACK", FILTER_CALLBACK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_OCTAL", FILTER_FLAG_ALLOW_OCTAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_HEX", FILTER_FLAG_ALLOW_HEX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_STRIP_LOW", FILTER_FLAG_STRIP_LOW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_STRIP_HIGH", FILTER_FLAG_STRIP_HIGH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_STRIP_BACKTICK", FILTER_FLAG_STRIP_BACKTICK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ENCODE_LOW", FILTER_FLAG_ENCODE_LOW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ENCODE_HIGH", FILTER_FLAG_ENCODE_HIGH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ENCODE_AMP", FILTER_FLAG_ENCODE_AMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_ENCODE_QUOTES", FILTER_FLAG_NO_ENCODE_QUOTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_EMPTY_STRING_NULL", FILTER_FLAG_EMPTY_STRING_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_FRACTION", FILTER_FLAG_ALLOW_FRACTION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_THOUSAND", FILTER_FLAG_ALLOW_THOUSAND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_SCIENTIFIC", FILTER_FLAG_ALLOW_SCIENTIFIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_PATH_REQUIRED", FILTER_FLAG_PATH_REQUIRED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_QUERY_REQUIRED", FILTER_FLAG_QUERY_REQUIRED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_IPV4", FILTER_FLAG_IPV4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_IPV6", FILTER_FLAG_IPV6, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_RES_RANGE", FILTER_FLAG_NO_RES_RANGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_PRIV_RANGE", FILTER_FLAG_NO_PRIV_RANGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_GLOBAL_RANGE", FILTER_FLAG_GLOBAL_RANGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_HOSTNAME", FILTER_FLAG_HOSTNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILTER_FLAG_EMAIL_UNICODE", FILTER_FLAG_EMAIL_UNICODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INPUT_POST", PARSE_POST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INPUT_GET", PARSE_GET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INPUT_COOKIE", PARSE_COOKIE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INPUT_ENV", PARSE_ENV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INPUT_SERVER", PARSE_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_NONE", FILTER_FLAG_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_REQUIRE_SCALAR", FILTER_REQUIRE_SCALAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_REQUIRE_ARRAY", FILTER_REQUIRE_ARRAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FORCE_ARRAY", FILTER_FORCE_ARRAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_NULL_ON_FAILURE", FILTER_NULL_ON_FAILURE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_INT", FILTER_VALIDATE_INT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_BOOLEAN", FILTER_VALIDATE_BOOL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_BOOL", FILTER_VALIDATE_BOOL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_FLOAT", FILTER_VALIDATE_FLOAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_REGEXP", FILTER_VALIDATE_REGEXP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_DOMAIN", FILTER_VALIDATE_DOMAIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_URL", FILTER_VALIDATE_URL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_EMAIL", FILTER_VALIDATE_EMAIL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_IP", FILTER_VALIDATE_IP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_VALIDATE_MAC", FILTER_VALIDATE_MAC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_DEFAULT", FILTER_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_UNSAFE_RAW", FILTER_UNSAFE_RAW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_STRING", FILTER_SANITIZE_STRING, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_STRIPPED", FILTER_SANITIZE_STRING, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_ENCODED", FILTER_SANITIZE_ENCODED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_SPECIAL_CHARS", FILTER_SANITIZE_SPECIAL_CHARS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_FULL_SPECIAL_CHARS", FILTER_SANITIZE_FULL_SPECIAL_CHARS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_EMAIL", FILTER_SANITIZE_EMAIL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_URL", FILTER_SANITIZE_URL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_NUMBER_INT", FILTER_SANITIZE_NUMBER_INT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_NUMBER_FLOAT", FILTER_SANITIZE_NUMBER_FLOAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_SANITIZE_ADD_SLASHES", FILTER_SANITIZE_ADD_SLASHES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_CALLBACK", FILTER_CALLBACK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_OCTAL", FILTER_FLAG_ALLOW_OCTAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_HEX", FILTER_FLAG_ALLOW_HEX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_STRIP_LOW", FILTER_FLAG_STRIP_LOW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_STRIP_HIGH", FILTER_FLAG_STRIP_HIGH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_STRIP_BACKTICK", FILTER_FLAG_STRIP_BACKTICK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ENCODE_LOW", FILTER_FLAG_ENCODE_LOW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ENCODE_HIGH", FILTER_FLAG_ENCODE_HIGH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ENCODE_AMP", FILTER_FLAG_ENCODE_AMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_ENCODE_QUOTES", FILTER_FLAG_NO_ENCODE_QUOTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_EMPTY_STRING_NULL", FILTER_FLAG_EMPTY_STRING_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_FRACTION", FILTER_FLAG_ALLOW_FRACTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_THOUSAND", FILTER_FLAG_ALLOW_THOUSAND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_ALLOW_SCIENTIFIC", FILTER_FLAG_ALLOW_SCIENTIFIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_PATH_REQUIRED", FILTER_FLAG_PATH_REQUIRED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_QUERY_REQUIRED", FILTER_FLAG_QUERY_REQUIRED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_IPV4", FILTER_FLAG_IPV4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_IPV6", FILTER_FLAG_IPV6, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_RES_RANGE", FILTER_FLAG_NO_RES_RANGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_NO_PRIV_RANGE", FILTER_FLAG_NO_PRIV_RANGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_GLOBAL_RANGE", FILTER_FLAG_GLOBAL_RANGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_HOSTNAME", FILTER_FLAG_HOSTNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FILTER_FLAG_EMAIL_UNICODE", FILTER_FLAG_EMAIL_UNICODE, CONST_PERSISTENT); } diff --git a/ext/ftp/ftp_arginfo.h b/ext/ftp/ftp_arginfo.h index a3c1cea469e24..6df8aecc3d73a 100644 --- a/ext/ftp/ftp_arginfo.h +++ b/ext/ftp/ftp_arginfo.h @@ -282,17 +282,17 @@ static const zend_function_entry class_FTP_Connection_methods[] = { static void register_ftp_symbols(int module_number) { - REGISTER_LONG_CONSTANT("FTP_ASCII", FTPTYPE_ASCII, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_TEXT", FTPTYPE_ASCII, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_BINARY", FTPTYPE_IMAGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_IMAGE", FTPTYPE_IMAGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_AUTORESUME", PHP_FTP_AUTORESUME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_TIMEOUT_SEC", PHP_FTP_OPT_TIMEOUT_SEC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_AUTOSEEK", PHP_FTP_OPT_AUTOSEEK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_USEPASVADDRESS", PHP_FTP_OPT_USEPASVADDRESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_FAILED", PHP_FTP_FAILED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_FINISHED", PHP_FTP_FINISHED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FTP_MOREDATA", PHP_FTP_MOREDATA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_ASCII", FTPTYPE_ASCII, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_TEXT", FTPTYPE_ASCII, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_BINARY", FTPTYPE_IMAGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_IMAGE", FTPTYPE_IMAGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_AUTORESUME", PHP_FTP_AUTORESUME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_TIMEOUT_SEC", PHP_FTP_OPT_TIMEOUT_SEC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_AUTOSEEK", PHP_FTP_OPT_AUTOSEEK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_USEPASVADDRESS", PHP_FTP_OPT_USEPASVADDRESS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_FAILED", PHP_FTP_FAILED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_FINISHED", PHP_FTP_FINISHED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FTP_MOREDATA", PHP_FTP_MOREDATA, CONST_PERSISTENT); zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "ftp_login", sizeof("ftp_login") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); diff --git a/ext/gd/gd.c b/ext/gd/gd.c index cdfaaeedaeb7f..97c8d360a2155 100644 --- a/ext/gd/gd.c +++ b/ext/gd/gd.c @@ -177,7 +177,6 @@ zend_object *php_gd_image_object_create(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &php_gd_image_object_handlers; return &intern->std; } @@ -207,6 +206,7 @@ static void php_gd_object_minit_helper(void) { gd_image_ce = register_class_GdImage(); gd_image_ce->create_object = php_gd_image_object_create; + gd_image_ce->default_object_handlers = &php_gd_image_object_handlers; /* setting up the object handlers for the GdImage class */ memcpy(&php_gd_image_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); @@ -307,7 +307,7 @@ ZEND_GET_MODULE(gd) /* {{{ PHP_INI_BEGIN */ PHP_INI_BEGIN() - PHP_INI_ENTRY("gd.jpeg_ignore_warning", "1", PHP_INI_ALL, NULL) + PHP_INI_ENTRY_EX("gd.jpeg_ignore_warning", "1", PHP_INI_ALL, NULL, zend_ini_boolean_displayer_cb) PHP_INI_END() /* }}} */ diff --git a/ext/gd/gd_arginfo.h b/ext/gd/gd_arginfo.h index 9e644c19f9a50..9e4ac86455928 100644 --- a/ext/gd/gd_arginfo.h +++ b/ext/gd/gd_arginfo.h @@ -877,122 +877,122 @@ static const zend_function_entry class_GdFont_methods[] = { static void register_gd_symbols(int module_number) { - REGISTER_LONG_CONSTANT("IMG_AVIF", PHP_IMG_AVIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GIF", PHP_IMG_GIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_JPG", PHP_IMG_JPG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_JPEG", PHP_IMG_JPEG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_PNG", PHP_IMG_PNG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_WBMP", PHP_IMG_WBMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_XPM", PHP_IMG_XPM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_WEBP", PHP_IMG_WEBP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BMP", PHP_IMG_BMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_TGA", PHP_IMG_TGA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AVIF", PHP_IMG_AVIF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GIF", PHP_IMG_GIF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_JPG", PHP_IMG_JPG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_JPEG", PHP_IMG_JPEG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_PNG", PHP_IMG_PNG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_WBMP", PHP_IMG_WBMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_XPM", PHP_IMG_XPM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_WEBP", PHP_IMG_WEBP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BMP", PHP_IMG_BMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_TGA", PHP_IMG_TGA, CONST_PERSISTENT); #if defined(gdWebpLossless) - REGISTER_LONG_CONSTANT("IMG_WEBP_LOSSLESS", gdWebpLossless, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("IMG_COLOR_TILED", gdTiled, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_STYLED", gdStyled, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_BRUSHED", gdBrushed, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_STYLEDBRUSHED", gdStyledBrushed, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_COLOR_TRANSPARENT", gdTransparent, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_ROUNDED", gdArc, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_PIE", gdPie, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_CHORD", gdChord, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_NOFILL", gdNoFill, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_ARC_EDGED", gdEdged, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GD2_RAW", GD2_FMT_RAW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", PHP_GD_FLIP_HORIZONTAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", PHP_GD_FLIP_VERTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", PHP_GD_FLIP_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_WEBP_LOSSLESS", gdWebpLossless, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IMG_COLOR_TILED", gdTiled, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_STYLED", gdStyled, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_BRUSHED", gdBrushed, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_STYLEDBRUSHED", gdStyledBrushed, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_COLOR_TRANSPARENT", gdTransparent, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_ROUNDED", gdArc, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_PIE", gdPie, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_CHORD", gdChord, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_NOFILL", gdNoFill, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_ARC_EDGED", gdEdged, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GD2_RAW", GD2_FMT_RAW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", PHP_GD_FLIP_HORIZONTAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", PHP_GD_FLIP_VERTICAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", PHP_GD_FLIP_BOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_OVERLAY", gdEffectOverlay, CONST_PERSISTENT); #if defined(gdEffectMultiply) - REGISTER_LONG_CONSTANT("IMG_EFFECT_MULTIPLY", gdEffectMultiply, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("IMG_CROP_DEFAULT", GD_CROP_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_TRANSPARENT", GD_CROP_TRANSPARENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_WHITE", GD_CROP_WHITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_SIDES", GD_CROP_SIDES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CROP_THRESHOLD", GD_CROP_THRESHOLD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BELL", GD_BELL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BESSEL", GD_BESSEL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BILINEAR_FIXED", GD_BILINEAR_FIXED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BICUBIC", GD_BICUBIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BICUBIC_FIXED", GD_BICUBIC_FIXED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BLACKMAN", GD_BLACKMAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BOX", GD_BOX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_BSPLINE", GD_BSPLINE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_CATMULLROM", GD_CATMULLROM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GAUSSIAN", GD_GAUSSIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_GENERALIZED_CUBIC", GD_GENERALIZED_CUBIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_HERMITE", GD_HERMITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_HAMMING", GD_HAMMING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_HANNING", GD_HANNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_MITCHELL", GD_MITCHELL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_POWER", GD_POWER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_QUADRATIC", GD_QUADRATIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_SINC", GD_SINC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_NEAREST_NEIGHBOUR", GD_NEAREST_NEIGHBOUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_WEIGHTED4", GD_WEIGHTED4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_TRIANGLE", GD_TRIANGLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_TRANSLATE", GD_AFFINE_TRANSLATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_SCALE", GD_AFFINE_SCALE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_ROTATE", GD_AFFINE_ROTATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_HORIZONTAL", GD_AFFINE_SHEAR_HORIZONTAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_VERTICAL", GD_AFFINE_SHEAR_VERTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GD_BUNDLED", GD_BUNDLED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_NEGATE", IMAGE_FILTER_NEGATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_GRAYSCALE", IMAGE_FILTER_GRAYSCALE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_BRIGHTNESS", IMAGE_FILTER_BRIGHTNESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_CONTRAST", IMAGE_FILTER_CONTRAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_COLORIZE", IMAGE_FILTER_COLORIZE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_EDGEDETECT", IMAGE_FILTER_EDGEDETECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_GAUSSIAN_BLUR", IMAGE_FILTER_GAUSSIAN_BLUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_SELECTIVE_BLUR", IMAGE_FILTER_SELECTIVE_BLUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_EMBOSS", IMAGE_FILTER_EMBOSS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_MEAN_REMOVAL", IMAGE_FILTER_MEAN_REMOVAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_SMOOTH", IMAGE_FILTER_SMOOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_PIXELATE", IMAGE_FILTER_PIXELATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMG_FILTER_SCATTER", IMAGE_FILTER_SCATTER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_EFFECT_MULTIPLY", gdEffectMultiply, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IMG_CROP_DEFAULT", GD_CROP_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_TRANSPARENT", GD_CROP_TRANSPARENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_BLACK", GD_CROP_BLACK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_WHITE", GD_CROP_WHITE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_SIDES", GD_CROP_SIDES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CROP_THRESHOLD", GD_CROP_THRESHOLD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BELL", GD_BELL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BESSEL", GD_BESSEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BILINEAR_FIXED", GD_BILINEAR_FIXED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BICUBIC", GD_BICUBIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BICUBIC_FIXED", GD_BICUBIC_FIXED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BLACKMAN", GD_BLACKMAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BOX", GD_BOX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_BSPLINE", GD_BSPLINE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_CATMULLROM", GD_CATMULLROM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GAUSSIAN", GD_GAUSSIAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_GENERALIZED_CUBIC", GD_GENERALIZED_CUBIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_HERMITE", GD_HERMITE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_HAMMING", GD_HAMMING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_HANNING", GD_HANNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_MITCHELL", GD_MITCHELL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_POWER", GD_POWER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_QUADRATIC", GD_QUADRATIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_SINC", GD_SINC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_NEAREST_NEIGHBOUR", GD_NEAREST_NEIGHBOUR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_WEIGHTED4", GD_WEIGHTED4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_TRIANGLE", GD_TRIANGLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_TRANSLATE", GD_AFFINE_TRANSLATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_SCALE", GD_AFFINE_SCALE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_ROTATE", GD_AFFINE_ROTATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_HORIZONTAL", GD_AFFINE_SHEAR_HORIZONTAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_AFFINE_SHEAR_VERTICAL", GD_AFFINE_SHEAR_VERTICAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GD_BUNDLED", GD_BUNDLED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_NEGATE", IMAGE_FILTER_NEGATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_GRAYSCALE", IMAGE_FILTER_GRAYSCALE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_BRIGHTNESS", IMAGE_FILTER_BRIGHTNESS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_CONTRAST", IMAGE_FILTER_CONTRAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_COLORIZE", IMAGE_FILTER_COLORIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_EDGEDETECT", IMAGE_FILTER_EDGEDETECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_GAUSSIAN_BLUR", IMAGE_FILTER_GAUSSIAN_BLUR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_SELECTIVE_BLUR", IMAGE_FILTER_SELECTIVE_BLUR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_EMBOSS", IMAGE_FILTER_EMBOSS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_MEAN_REMOVAL", IMAGE_FILTER_MEAN_REMOVAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_SMOOTH", IMAGE_FILTER_SMOOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_PIXELATE", IMAGE_FILTER_PIXELATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMG_FILTER_SCATTER", IMAGE_FILTER_SCATTER, CONST_PERSISTENT); #if defined(GD_VERSION_STRING) - REGISTER_STRING_CONSTANT("GD_VERSION", GD_VERSION_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("GD_VERSION", GD_VERSION_STRING, CONST_PERSISTENT); #endif #if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) - REGISTER_LONG_CONSTANT("GD_MAJOR_VERSION", GD_MAJOR_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GD_MAJOR_VERSION", GD_MAJOR_VERSION, CONST_PERSISTENT); #endif #if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) - REGISTER_LONG_CONSTANT("GD_MINOR_VERSION", GD_MINOR_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GD_MINOR_VERSION", GD_MINOR_VERSION, CONST_PERSISTENT); #endif #if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) - REGISTER_LONG_CONSTANT("GD_RELEASE_VERSION", GD_RELEASE_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GD_RELEASE_VERSION", GD_RELEASE_VERSION, CONST_PERSISTENT); #endif #if (defined(GD_MAJOR_VERSION) && defined(GD_MINOR_VERSION) && defined(GD_RELEASE_VERSION) && defined(GD_EXTRA_VERSION)) - REGISTER_STRING_CONSTANT("GD_EXTRA_VERSION", GD_EXTRA_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("GD_EXTRA_VERSION", GD_EXTRA_VERSION, CONST_PERSISTENT); #endif #if defined(HAVE_GD_PNG) - REGISTER_LONG_CONSTANT("PNG_NO_FILTER", 0, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PNG_NO_FILTER", 0, CONST_PERSISTENT); #endif #if defined(HAVE_GD_PNG) - REGISTER_LONG_CONSTANT("PNG_FILTER_NONE", 8, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PNG_FILTER_NONE", 8, CONST_PERSISTENT); #endif #if defined(HAVE_GD_PNG) - REGISTER_LONG_CONSTANT("PNG_FILTER_SUB", 16, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PNG_FILTER_SUB", 16, CONST_PERSISTENT); #endif #if defined(HAVE_GD_PNG) - REGISTER_LONG_CONSTANT("PNG_FILTER_UP", 32, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PNG_FILTER_UP", 32, CONST_PERSISTENT); #endif #if defined(HAVE_GD_PNG) - REGISTER_LONG_CONSTANT("PNG_FILTER_AVG", 64, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PNG_FILTER_AVG", 64, CONST_PERSISTENT); #endif #if defined(HAVE_GD_PNG) - REGISTER_LONG_CONSTANT("PNG_FILTER_PAETH", 128, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PNG_FILTER_PAETH", 128, CONST_PERSISTENT); #endif #if defined(HAVE_GD_PNG) - REGISTER_LONG_CONSTANT("PNG_ALL_FILTERS", 248, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PNG_ALL_FILTERS", 248, CONST_PERSISTENT); #endif } diff --git a/ext/gd/libgd/gd_webp.c b/ext/gd/libgd/gd_webp.c index a27398f1e491b..a0d8a0cf49f5c 100644 --- a/ext/gd/libgd/gd_webp.c +++ b/ext/gd/libgd/gd_webp.c @@ -113,7 +113,7 @@ void gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quality) } if (!gdImageTrueColor(im)) { - zend_error(E_ERROR, "Paletter image not supported by webp"); + zend_error(E_ERROR, "Palette image not supported by webp"); return; } diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index fff4e9293d18f..b6b31cbdcad52 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -256,7 +256,6 @@ static inline zend_object *gmp_create_object_ex(zend_class_entry *ce, mpz_ptr *g mpz_init(intern->num); *gmpnum_target = intern->num; - intern->std.handlers = &gmp_object_handlers; return &intern->std; } @@ -533,6 +532,7 @@ ZEND_MINIT_FUNCTION(gmp) { gmp_ce = register_class_GMP(); gmp_ce->create_object = gmp_create_object; + gmp_ce->default_object_handlers = &gmp_object_handlers; gmp_ce->serialize = gmp_serialize; gmp_ce->unserialize = gmp_unserialize; diff --git a/ext/gmp/gmp_arginfo.h b/ext/gmp/gmp_arginfo.h index 2fc7d4fdb7072..c0e029f6fc396 100644 --- a/ext/gmp/gmp_arginfo.h +++ b/ext/gmp/gmp_arginfo.h @@ -310,18 +310,18 @@ static const zend_function_entry class_GMP_methods[] = { static void register_gmp_symbols(int module_number) { - REGISTER_LONG_CONSTANT("GMP_ROUND_ZERO", GMP_ROUND_ZERO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GMP_ROUND_PLUSINF", GMP_ROUND_PLUSINF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GMP_ROUND_MINUSINF", GMP_ROUND_MINUSINF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_ROUND_ZERO", GMP_ROUND_ZERO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_ROUND_PLUSINF", GMP_ROUND_PLUSINF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_ROUND_MINUSINF", GMP_ROUND_MINUSINF, CONST_PERSISTENT); #if defined(mpir_version) - REGISTER_STRING_CONSTANT("GMP_MPIR_VERSION", GMP_MPIR_VERSION_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("GMP_MPIR_VERSION", GMP_MPIR_VERSION_STRING, CONST_PERSISTENT); #endif - REGISTER_STRING_CONSTANT("GMP_VERSION", GMP_VERSION_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GMP_MSW_FIRST", GMP_MSW_FIRST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GMP_LSW_FIRST", GMP_LSW_FIRST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GMP_LITTLE_ENDIAN", GMP_LITTLE_ENDIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GMP_BIG_ENDIAN", GMP_BIG_ENDIAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GMP_NATIVE_ENDIAN", GMP_NATIVE_ENDIAN, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("GMP_VERSION", GMP_VERSION_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_MSW_FIRST", GMP_MSW_FIRST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_LSW_FIRST", GMP_LSW_FIRST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_LITTLE_ENDIAN", GMP_LITTLE_ENDIAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_BIG_ENDIAN", GMP_BIG_ENDIAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GMP_NATIVE_ENDIAN", GMP_NATIVE_ENDIAN, CONST_PERSISTENT); } static zend_class_entry *register_class_GMP(void) diff --git a/ext/gmp/tests/gmp_dynamic_property.phpt b/ext/gmp/tests/gmp_dynamic_property.phpt new file mode 100644 index 0000000000000..547fe51a7f6a3 --- /dev/null +++ b/ext/gmp/tests/gmp_dynamic_property.phpt @@ -0,0 +1,24 @@ +--TEST-- +GH-9186 Dynamic property unserialization should trigger a deprecated notice +--EXTENSIONS-- +gmp +--FILE-- +{1} = 123; + +$serialized = serialize($g); +var_dump(unserialize($serialized)); + +?> +--EXPECTF-- +Deprecated: Creation of dynamic property GMP::$1 is deprecated in %s on line %d + +Deprecated: Creation of dynamic property GMP::$1 is deprecated in %s on line %d +object(GMP)#%d (%d) { + [1]=> + int(123) + ["num"]=> + string(1) "0" +} diff --git a/ext/gmp/tests/serialize.phpt b/ext/gmp/tests/serialize.phpt index 65c2f34e13d17..84877459a9bc0 100644 --- a/ext/gmp/tests/serialize.phpt +++ b/ext/gmp/tests/serialize.phpt @@ -54,6 +54,8 @@ object(GMP)#%d (1) { Deprecated: Creation of dynamic property GMP::$foo is deprecated in %s on line %d string(56) "O:3:"GMP":2:{i:0;s:1:"d";i:1;a:1:{s:3:"foo";s:3:"bar";}}" + +Deprecated: Creation of dynamic property GMP::$foo is deprecated in %s on line %d object(GMP)#%d (2) { ["foo"]=> string(3) "bar" diff --git a/ext/hash/hash_arginfo.h b/ext/hash/hash_arginfo.h index 5e064fea08a45..dca428af029b5 100644 --- a/ext/hash/hash_arginfo.h +++ b/ext/hash/hash_arginfo.h @@ -212,7 +212,7 @@ static const zend_function_entry class_HashContext_methods[] = { static void register_hash_symbols(int module_number) { - REGISTER_LONG_CONSTANT("HASH_HMAC", PHP_HASH_HMAC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("HASH_HMAC", PHP_HASH_HMAC, CONST_PERSISTENT); zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "hash_hmac", sizeof("hash_hmac") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); diff --git a/ext/iconv/iconv_arginfo.h b/ext/iconv/iconv_arginfo.h index 5b7d7a02ce578..324cac4f21019 100644 --- a/ext/iconv/iconv_arginfo.h +++ b/ext/iconv/iconv_arginfo.h @@ -88,8 +88,8 @@ static const zend_function_entry ext_functions[] = { static void register_iconv_symbols(int module_number) { - REGISTER_STRING_CONSTANT("ICONV_IMPL", PHP_ICONV_IMPL_VALUE, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("ICONV_VERSION", get_iconv_version(), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ICONV_MIME_DECODE_STRICT", PHP_ICONV_MIME_DECODE_STRICT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ICONV_MIME_DECODE_CONTINUE_ON_ERROR", PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("ICONV_IMPL", PHP_ICONV_IMPL_VALUE, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("ICONV_VERSION", get_iconv_version(), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ICONV_MIME_DECODE_STRICT", PHP_ICONV_MIME_DECODE_STRICT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ICONV_MIME_DECODE_CONTINUE_ON_ERROR", PHP_ICONV_MIME_DECODE_CONTINUE_ON_ERROR, CONST_PERSISTENT); } diff --git a/ext/imap/php_imap.c b/ext/imap/php_imap.c index d0eda05a85c7f..c171969fa6657 100644 --- a/ext/imap/php_imap.c +++ b/ext/imap/php_imap.c @@ -207,7 +207,7 @@ static void imap_object_destroy(zend_object *zobj) { #define GET_IMAP_STREAM(imap_conn_struct, zval_imap_obj) \ imap_conn_struct = imap_object_from_zend_object(Z_OBJ_P(zval_imap_obj)); \ - if (!imap_conn_struct) { \ + if (imap_conn_struct->imap_stream == NULL) { \ zend_throw_exception(zend_ce_value_error, "IMAP\\Connection is already closed", 0); \ RETURN_THROWS(); \ } diff --git a/ext/imap/php_imap.stub.php b/ext/imap/php_imap.stub.php index 7ebe6bce936e7..4c94b72656ee7 100644 --- a/ext/imap/php_imap.stub.php +++ b/ext/imap/php_imap.stub.php @@ -551,7 +551,7 @@ function imap_thread(IMAP\Connection $imap, int $flags = SE_FREE): array|false { function imap_timeout(int $timeout_type, int $timeout = -1): int|bool {} - #if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) + #if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) function imap_get_quota(IMAP\Connection $imap, string $quota_root): array|false {} function imap_get_quotaroot(IMAP\Connection $imap, string $mailbox): array|false {} diff --git a/ext/imap/php_imap_arginfo.h b/ext/imap/php_imap_arginfo.h index 1c409f2da27c0..e6d1ed4c921ab 100644 --- a/ext/imap/php_imap_arginfo.h +++ b/ext/imap/php_imap_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: eebef4c1eaf464b0ff093516cf13f1c33d7d0911 */ + * Stub hash: c1f54f259bde2c49c5b49a595751acd2fb365efe */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_imap_open, 0, 3, IMAP\\Connection, MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, mailbox, IS_STRING, 0) @@ -292,21 +292,21 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_imap_timeout, 0, 1, MAY_BE_LONG| ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, timeout, IS_LONG, 0, "-1") ZEND_END_ARG_INFO() -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_imap_get_quota, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_OBJ_INFO(0, imap, IMAP\\Connection, 0) ZEND_ARG_TYPE_INFO(0, quota_root, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_imap_get_quotaroot, 0, 2, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_OBJ_INFO(0, imap, IMAP\\Connection, 0) ZEND_ARG_TYPE_INFO(0, mailbox, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imap_set_quota, 0, 3, _IS_BOOL, 0) ZEND_ARG_OBJ_INFO(0, imap, IMAP\\Connection, 0) ZEND_ARG_TYPE_INFO(0, quota_root, IS_STRING, 0) @@ -314,7 +314,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imap_set_quota, 0, 3, _IS_BOOL, ZEND_END_ARG_INFO() #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imap_setacl, 0, 4, _IS_BOOL, 0) ZEND_ARG_OBJ_INFO(0, imap, IMAP\\Connection, 0) ZEND_ARG_TYPE_INFO(0, mailbox, IS_STRING, 0) @@ -323,7 +323,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_imap_setacl, 0, 4, _IS_BOOL, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) #define arginfo_imap_getacl arginfo_imap_get_quotaroot #endif @@ -403,19 +403,19 @@ ZEND_FUNCTION(imap_mutf7_to_utf8); ZEND_FUNCTION(imap_mime_header_decode); ZEND_FUNCTION(imap_thread); ZEND_FUNCTION(imap_timeout); -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FUNCTION(imap_get_quota); #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FUNCTION(imap_get_quotaroot); #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FUNCTION(imap_set_quota); #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FUNCTION(imap_setacl); #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FUNCTION(imap_getacl); #endif ZEND_FUNCTION(imap_mail); @@ -494,19 +494,19 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(imap_mime_header_decode, arginfo_imap_mime_header_decode) ZEND_FE(imap_thread, arginfo_imap_thread) ZEND_FE(imap_timeout, arginfo_imap_timeout) -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FE(imap_get_quota, arginfo_imap_get_quota) #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FE(imap_get_quotaroot, arginfo_imap_get_quotaroot) #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FE(imap_set_quota, arginfo_imap_set_quota) #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FE(imap_setacl, arginfo_imap_setacl) #endif -#if defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001) +#if (defined(HAVE_IMAP2000) || defined(HAVE_IMAP2001)) ZEND_FE(imap_getacl, arginfo_imap_getacl) #endif ZEND_FE(imap_mail, arginfo_imap_mail) @@ -520,80 +520,80 @@ static const zend_function_entry class_IMAP_Connection_methods[] = { static void register_php_imap_symbols(int module_number) { - REGISTER_LONG_CONSTANT("NIL", NIL, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("IMAP_OPENTIMEOUT", PHP_IMAP_OPENTIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAP_READTIMEOUT", PHP_IMAP_READTIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAP_WRITETIMEOUT", PHP_IMAP_WRITETIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAP_CLOSETIMEOUT", PHP_IMAP_CLOSETIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_DEBUG", OP_DEBUG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_READONLY", OP_READONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_ANONYMOUS", OP_ANONYMOUS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_SHORTCACHE", OP_SHORTCACHE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_SILENT", OP_SILENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_PROTOTYPE", OP_PROTOTYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_HALFOPEN", OP_HALFOPEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_EXPUNGE", OP_EXPUNGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OP_SECURE", OP_SECURE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CL_EXPUNGE", PHP_EXPUNGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FT_UID", FT_UID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FT_PEEK", FT_PEEK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FT_NOT", FT_NOT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FT_INTERNAL", FT_INTERNAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FT_PREFETCHTEXT", FT_PREFETCHTEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ST_UID", ST_UID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ST_SILENT", ST_SILENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ST_SET", ST_SET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_UID", CP_UID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CP_MOVE", CP_MOVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SE_UID", SE_UID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SE_FREE", SE_FREE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SE_NOPREFETCH", SE_NOPREFETCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_FREE", SO_FREE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_NOSERVER", SO_FREE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SA_MESSAGES", SA_MESSAGES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SA_RECENT", SA_RECENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SA_UNSEEN", SA_UNSEEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SA_UIDNEXT", SA_UIDNEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SA_UIDVALIDITY", SA_UIDVALIDITY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SA_ALL", SA_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LATT_NOINFERIORS", LATT_NOINFERIORS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LATT_NOSELECT", LATT_NOSELECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LATT_MARKED", LATT_MARKED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LATT_UNMARKED", LATT_UNMARKED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("NIL", NIL, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("IMAP_OPENTIMEOUT", PHP_IMAP_OPENTIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAP_READTIMEOUT", PHP_IMAP_READTIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAP_WRITETIMEOUT", PHP_IMAP_WRITETIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAP_CLOSETIMEOUT", PHP_IMAP_CLOSETIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_DEBUG", OP_DEBUG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_READONLY", OP_READONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_ANONYMOUS", OP_ANONYMOUS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_SHORTCACHE", OP_SHORTCACHE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_SILENT", OP_SILENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_PROTOTYPE", OP_PROTOTYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_HALFOPEN", OP_HALFOPEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_EXPUNGE", OP_EXPUNGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OP_SECURE", OP_SECURE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CL_EXPUNGE", PHP_EXPUNGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FT_UID", FT_UID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FT_PEEK", FT_PEEK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FT_NOT", FT_NOT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FT_INTERNAL", FT_INTERNAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FT_PREFETCHTEXT", FT_PREFETCHTEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ST_UID", ST_UID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ST_SILENT", ST_SILENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ST_SET", ST_SET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_UID", CP_UID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_MOVE", CP_MOVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SE_UID", SE_UID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SE_FREE", SE_FREE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SE_NOPREFETCH", SE_NOPREFETCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_FREE", SO_FREE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_NOSERVER", SO_FREE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SA_MESSAGES", SA_MESSAGES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SA_RECENT", SA_RECENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SA_UNSEEN", SA_UNSEEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SA_UIDNEXT", SA_UIDNEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SA_UIDVALIDITY", SA_UIDVALIDITY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SA_ALL", SA_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LATT_NOINFERIORS", LATT_NOINFERIORS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LATT_NOSELECT", LATT_NOSELECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LATT_MARKED", LATT_MARKED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LATT_UNMARKED", LATT_UNMARKED, CONST_PERSISTENT); #if defined(LATT_REFERRAL) - REGISTER_LONG_CONSTANT("LATT_REFERRAL", LATT_REFERRAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LATT_REFERRAL", LATT_REFERRAL, CONST_PERSISTENT); #endif #if defined(LATT_HASCHILDREN) - REGISTER_LONG_CONSTANT("LATT_HASCHILDREN", LATT_HASCHILDREN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LATT_HASCHILDREN", LATT_HASCHILDREN, CONST_PERSISTENT); #endif #if defined(LATT_HASNOCHILDREN) - REGISTER_LONG_CONSTANT("LATT_HASNOCHILDREN", LATT_HASNOCHILDREN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LATT_HASNOCHILDREN", LATT_HASNOCHILDREN, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("SORTDATE", SORTDATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORTARRIVAL", SORTARRIVAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORTFROM", SORTFROM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORTSUBJECT", SORTSUBJECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORTTO", SORTTO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORTCC", SORTCC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORTSIZE", SORTSIZE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPETEXT", TYPETEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEMULTIPART", TYPEMULTIPART, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEMESSAGE", TYPEMESSAGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEAPPLICATION", TYPEAPPLICATION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEAUDIO", TYPEAUDIO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEIMAGE", TYPEIMAGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEVIDEO", TYPEVIDEO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEMODEL", TYPEMODEL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TYPEOTHER", TYPEOTHER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ENC7BIT", ENC7BIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ENC8BIT", ENC8BIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ENCBINARY", ENCBINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ENCBASE64", ENCBASE64, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ENCQUOTEDPRINTABLE", ENCQUOTEDPRINTABLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ENCOTHER", ENCOTHER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAP_GC_ELT", GC_ELT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAP_GC_ENV", GC_ENV, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAP_GC_TEXTS", GC_TEXTS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORTDATE", SORTDATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORTARRIVAL", SORTARRIVAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORTFROM", SORTFROM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORTSUBJECT", SORTSUBJECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORTTO", SORTTO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORTCC", SORTCC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORTSIZE", SORTSIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPETEXT", TYPETEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEMULTIPART", TYPEMULTIPART, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEMESSAGE", TYPEMESSAGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEAPPLICATION", TYPEAPPLICATION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEAUDIO", TYPEAUDIO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEIMAGE", TYPEIMAGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEVIDEO", TYPEVIDEO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEMODEL", TYPEMODEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TYPEOTHER", TYPEOTHER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ENC7BIT", ENC7BIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ENC8BIT", ENC8BIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ENCBINARY", ENCBINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ENCBASE64", ENCBASE64, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ENCQUOTEDPRINTABLE", ENCQUOTEDPRINTABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ENCOTHER", ENCOTHER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAP_GC_ELT", GC_ELT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAP_GC_ENV", GC_ENV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAP_GC_TEXTS", GC_TEXTS, CONST_PERSISTENT); zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "imap_open", sizeof("imap_open") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); diff --git a/ext/imap/tests/gh9309.phpt b/ext/imap/tests/gh9309.phpt new file mode 100644 index 0000000000000..663c6cc757f63 --- /dev/null +++ b/ext/imap/tests/gh9309.phpt @@ -0,0 +1,28 @@ +--TEST-- +Bug GH-9309 (Segfault when connection is used after imap_close()) +--EXTENSIONS-- +imap +--SKIPIF-- + +--FILE-- +getMessage(), PHP_EOL; +} +?> +--CLEAN-- + +--EXPECT-- +Create a temporary mailbox and add 0 msgs +New mailbox created +IMAP\Connection is already closed diff --git a/ext/intl/breakiterator/breakiterator.stub.php b/ext/intl/breakiterator/breakiterator.stub.php index 951b4ffc1bdfd..2b1b79512b70d 100644 --- a/ext/intl/breakiterator/breakiterator.stub.php +++ b/ext/intl/breakiterator/breakiterator.stub.php @@ -5,6 +5,105 @@ /** @not-serializable */ class IntlBreakIterator implements IteratorAggregate { + /** + * @var int + * @cvalue BreakIterator::DONE + */ + public const DONE = UNKNOWN; + + /** + * @var int + * @cvalue UBRK_WORD_NONE + */ + public const WORD_NONE = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_NONE_LIMIT + */ + public const WORD_NONE_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_NUMBER + */ + public const WORD_NUMBER = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_NUMBER_LIMIT + */ + public const WORD_NUMBER_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_LETTER + */ + public const WORD_LETTER = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_LETTER_LIMIT + */ + public const WORD_LETTER_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_KANA + */ + public const WORD_KANA = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_KANA_LIMIT + */ + public const WORD_KANA_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_IDEO + */ + public const WORD_IDEO = UNKNOWN; + /** + * @var int + * @cvalue UBRK_WORD_IDEO_LIMIT + */ + public const WORD_IDEO_LIMIT = UNKNOWN; + + /** + * @var int + * @cvalue UBRK_LINE_SOFT + */ + public const LINE_SOFT = UNKNOWN; + /** + * @var int + * @cvalue UBRK_LINE_SOFT_LIMIT + */ + public const LINE_SOFT_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UBRK_LINE_HARD + */ + public const LINE_HARD = UNKNOWN; + /** + * @var int + * @cvalue UBRK_LINE_HARD_LIMIT + */ + public const LINE_HARD_LIMIT = UNKNOWN; + + /** + * @var int + * @cvalue UBRK_SENTENCE_TERM + */ + public const SENTENCE_TERM = UNKNOWN; + /** + * @var int + * @cvalue UBRK_SENTENCE_TERM_LIMIT + */ + public const SENTENCE_TERM_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UBRK_SENTENCE_SEP + */ + public const SENTENCE_SEP = UNKNOWN; + /** + * @var int + * @cvalue UBRK_SENTENCE_SEP_LIMIT + */ + public const SENTENCE_SEP_LIMIT = UNKNOWN; + /** @tentative-return-type */ public static function createCharacterInstance(?string $locale = null): ?IntlBreakIterator {} diff --git a/ext/intl/breakiterator/breakiterator_arginfo.h b/ext/intl/breakiterator/breakiterator_arginfo.h index ffb5017ab4263..f63bfeb6a08b2 100644 --- a/ext/intl/breakiterator/breakiterator_arginfo.h +++ b/ext/intl/breakiterator/breakiterator_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 724e0c36ee113b67906cc9a8cea23781f0a961bf */ + * Stub hash: 14c5fdc760bfed136f4fc5fd398e76b873d8a919 */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_IntlBreakIterator_createCharacterInstance, 0, 0, IntlBreakIterator, 1) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, locale, IS_STRING, 1, "null") @@ -164,6 +164,120 @@ static zend_class_entry *register_class_IntlBreakIterator(zend_class_entry *clas class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; zend_class_implements(class_entry, 1, class_entry_IteratorAggregate); + zval const_DONE_value; + ZVAL_LONG(&const_DONE_value, BreakIterator::DONE); + zend_string *const_DONE_name = zend_string_init_interned("DONE", sizeof("DONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DONE_name, &const_DONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DONE_name); + + zval const_WORD_NONE_value; + ZVAL_LONG(&const_WORD_NONE_value, UBRK_WORD_NONE); + zend_string *const_WORD_NONE_name = zend_string_init_interned("WORD_NONE", sizeof("WORD_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_NONE_name, &const_WORD_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_NONE_name); + + zval const_WORD_NONE_LIMIT_value; + ZVAL_LONG(&const_WORD_NONE_LIMIT_value, UBRK_WORD_NONE_LIMIT); + zend_string *const_WORD_NONE_LIMIT_name = zend_string_init_interned("WORD_NONE_LIMIT", sizeof("WORD_NONE_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_NONE_LIMIT_name, &const_WORD_NONE_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_NONE_LIMIT_name); + + zval const_WORD_NUMBER_value; + ZVAL_LONG(&const_WORD_NUMBER_value, UBRK_WORD_NUMBER); + zend_string *const_WORD_NUMBER_name = zend_string_init_interned("WORD_NUMBER", sizeof("WORD_NUMBER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_NUMBER_name, &const_WORD_NUMBER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_NUMBER_name); + + zval const_WORD_NUMBER_LIMIT_value; + ZVAL_LONG(&const_WORD_NUMBER_LIMIT_value, UBRK_WORD_NUMBER_LIMIT); + zend_string *const_WORD_NUMBER_LIMIT_name = zend_string_init_interned("WORD_NUMBER_LIMIT", sizeof("WORD_NUMBER_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_NUMBER_LIMIT_name, &const_WORD_NUMBER_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_NUMBER_LIMIT_name); + + zval const_WORD_LETTER_value; + ZVAL_LONG(&const_WORD_LETTER_value, UBRK_WORD_LETTER); + zend_string *const_WORD_LETTER_name = zend_string_init_interned("WORD_LETTER", sizeof("WORD_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_LETTER_name, &const_WORD_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_LETTER_name); + + zval const_WORD_LETTER_LIMIT_value; + ZVAL_LONG(&const_WORD_LETTER_LIMIT_value, UBRK_WORD_LETTER_LIMIT); + zend_string *const_WORD_LETTER_LIMIT_name = zend_string_init_interned("WORD_LETTER_LIMIT", sizeof("WORD_LETTER_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_LETTER_LIMIT_name, &const_WORD_LETTER_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_LETTER_LIMIT_name); + + zval const_WORD_KANA_value; + ZVAL_LONG(&const_WORD_KANA_value, UBRK_WORD_KANA); + zend_string *const_WORD_KANA_name = zend_string_init_interned("WORD_KANA", sizeof("WORD_KANA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_KANA_name, &const_WORD_KANA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_KANA_name); + + zval const_WORD_KANA_LIMIT_value; + ZVAL_LONG(&const_WORD_KANA_LIMIT_value, UBRK_WORD_KANA_LIMIT); + zend_string *const_WORD_KANA_LIMIT_name = zend_string_init_interned("WORD_KANA_LIMIT", sizeof("WORD_KANA_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_KANA_LIMIT_name, &const_WORD_KANA_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_KANA_LIMIT_name); + + zval const_WORD_IDEO_value; + ZVAL_LONG(&const_WORD_IDEO_value, UBRK_WORD_IDEO); + zend_string *const_WORD_IDEO_name = zend_string_init_interned("WORD_IDEO", sizeof("WORD_IDEO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_IDEO_name, &const_WORD_IDEO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_IDEO_name); + + zval const_WORD_IDEO_LIMIT_value; + ZVAL_LONG(&const_WORD_IDEO_LIMIT_value, UBRK_WORD_IDEO_LIMIT); + zend_string *const_WORD_IDEO_LIMIT_name = zend_string_init_interned("WORD_IDEO_LIMIT", sizeof("WORD_IDEO_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WORD_IDEO_LIMIT_name, &const_WORD_IDEO_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WORD_IDEO_LIMIT_name); + + zval const_LINE_SOFT_value; + ZVAL_LONG(&const_LINE_SOFT_value, UBRK_LINE_SOFT); + zend_string *const_LINE_SOFT_name = zend_string_init_interned("LINE_SOFT", sizeof("LINE_SOFT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LINE_SOFT_name, &const_LINE_SOFT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LINE_SOFT_name); + + zval const_LINE_SOFT_LIMIT_value; + ZVAL_LONG(&const_LINE_SOFT_LIMIT_value, UBRK_LINE_SOFT_LIMIT); + zend_string *const_LINE_SOFT_LIMIT_name = zend_string_init_interned("LINE_SOFT_LIMIT", sizeof("LINE_SOFT_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LINE_SOFT_LIMIT_name, &const_LINE_SOFT_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LINE_SOFT_LIMIT_name); + + zval const_LINE_HARD_value; + ZVAL_LONG(&const_LINE_HARD_value, UBRK_LINE_HARD); + zend_string *const_LINE_HARD_name = zend_string_init_interned("LINE_HARD", sizeof("LINE_HARD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LINE_HARD_name, &const_LINE_HARD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LINE_HARD_name); + + zval const_LINE_HARD_LIMIT_value; + ZVAL_LONG(&const_LINE_HARD_LIMIT_value, UBRK_LINE_HARD_LIMIT); + zend_string *const_LINE_HARD_LIMIT_name = zend_string_init_interned("LINE_HARD_LIMIT", sizeof("LINE_HARD_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LINE_HARD_LIMIT_name, &const_LINE_HARD_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LINE_HARD_LIMIT_name); + + zval const_SENTENCE_TERM_value; + ZVAL_LONG(&const_SENTENCE_TERM_value, UBRK_SENTENCE_TERM); + zend_string *const_SENTENCE_TERM_name = zend_string_init_interned("SENTENCE_TERM", sizeof("SENTENCE_TERM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SENTENCE_TERM_name, &const_SENTENCE_TERM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SENTENCE_TERM_name); + + zval const_SENTENCE_TERM_LIMIT_value; + ZVAL_LONG(&const_SENTENCE_TERM_LIMIT_value, UBRK_SENTENCE_TERM_LIMIT); + zend_string *const_SENTENCE_TERM_LIMIT_name = zend_string_init_interned("SENTENCE_TERM_LIMIT", sizeof("SENTENCE_TERM_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SENTENCE_TERM_LIMIT_name, &const_SENTENCE_TERM_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SENTENCE_TERM_LIMIT_name); + + zval const_SENTENCE_SEP_value; + ZVAL_LONG(&const_SENTENCE_SEP_value, UBRK_SENTENCE_SEP); + zend_string *const_SENTENCE_SEP_name = zend_string_init_interned("SENTENCE_SEP", sizeof("SENTENCE_SEP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SENTENCE_SEP_name, &const_SENTENCE_SEP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SENTENCE_SEP_name); + + zval const_SENTENCE_SEP_LIMIT_value; + ZVAL_LONG(&const_SENTENCE_SEP_LIMIT_value, UBRK_SENTENCE_SEP_LIMIT); + zend_string *const_SENTENCE_SEP_LIMIT_name = zend_string_init_interned("SENTENCE_SEP_LIMIT", sizeof("SENTENCE_SEP_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SENTENCE_SEP_LIMIT_name, &const_SENTENCE_SEP_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SENTENCE_SEP_LIMIT_name); + return class_entry; } diff --git a/ext/intl/breakiterator/breakiterator_class.cpp b/ext/intl/breakiterator/breakiterator_class.cpp index 3034c3352acfd..d4dec4f31d7a5 100644 --- a/ext/intl/breakiterator/breakiterator_class.cpp +++ b/ext/intl/breakiterator/breakiterator_class.cpp @@ -209,8 +209,6 @@ static zend_object *BreakIterator_object_create(zend_class_entry *ce) object_properties_init(&intern->zo, ce); breakiterator_object_init(intern); - intern->zo.handlers = &BreakIterator_handlers; - return &intern->zo; } /* }}} */ @@ -224,6 +222,7 @@ U_CFUNC void breakiterator_register_BreakIterator_class(void) BreakIterator_ce_ptr = register_class_IntlBreakIterator(zend_ce_aggregate); BreakIterator_ce_ptr->create_object = BreakIterator_object_create; + BreakIterator_ce_ptr->default_object_handlers = &BreakIterator_handlers; BreakIterator_ce_ptr->get_iterator = _breakiterator_get_iterator; memcpy(&BreakIterator_handlers, &std_object_handlers, @@ -234,38 +233,6 @@ U_CFUNC void breakiterator_register_BreakIterator_class(void) BreakIterator_handlers.get_debug_info = BreakIterator_get_debug_info; BreakIterator_handlers.free_obj = BreakIterator_objects_free; - zend_declare_class_constant_long(BreakIterator_ce_ptr, - "DONE", sizeof("DONE") - 1, BreakIterator::DONE ); - - /* Declare constants that are defined in the C header */ -#define BREAKITER_DECL_LONG_CONST(name) \ - zend_declare_class_constant_long(BreakIterator_ce_ptr, #name, \ - sizeof(#name) - 1, UBRK_ ## name) - - BREAKITER_DECL_LONG_CONST(WORD_NONE); - BREAKITER_DECL_LONG_CONST(WORD_NONE_LIMIT); - BREAKITER_DECL_LONG_CONST(WORD_NUMBER); - BREAKITER_DECL_LONG_CONST(WORD_NUMBER_LIMIT); - BREAKITER_DECL_LONG_CONST(WORD_LETTER); - BREAKITER_DECL_LONG_CONST(WORD_LETTER_LIMIT); - BREAKITER_DECL_LONG_CONST(WORD_KANA); - BREAKITER_DECL_LONG_CONST(WORD_KANA_LIMIT); - BREAKITER_DECL_LONG_CONST(WORD_IDEO); - BREAKITER_DECL_LONG_CONST(WORD_IDEO_LIMIT); - - BREAKITER_DECL_LONG_CONST(LINE_SOFT); - BREAKITER_DECL_LONG_CONST(LINE_SOFT_LIMIT); - BREAKITER_DECL_LONG_CONST(LINE_HARD); - BREAKITER_DECL_LONG_CONST(LINE_HARD_LIMIT); - - BREAKITER_DECL_LONG_CONST(SENTENCE_TERM); - BREAKITER_DECL_LONG_CONST(SENTENCE_TERM_LIMIT); - BREAKITER_DECL_LONG_CONST(SENTENCE_SEP); - BREAKITER_DECL_LONG_CONST(SENTENCE_SEP_LIMIT); - -#undef BREAKITER_DECL_LONG_CONST - - /* Create and register 'RuleBasedBreakIterator' class. */ RuleBasedBreakIterator_ce_ptr = register_class_IntlRuleBasedBreakIterator(BreakIterator_ce_ptr); diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp b/ext/intl/breakiterator/breakiterator_iterators.cpp index 4513b9405f99c..b95238a24b912 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.cpp +++ b/ext/intl/breakiterator/breakiterator_iterators.cpp @@ -275,14 +275,4 @@ U_CFUNC void breakiterator_register_IntlPartsIterator_class(void) { /* Create and register 'BreakIterator' class. */ IntlPartsIterator_ce_ptr = register_class_IntlPartsIterator(IntlIterator_ce_ptr); - -#define PARTSITER_DECL_LONG_CONST(name) \ - zend_declare_class_constant_long(IntlPartsIterator_ce_ptr, #name, \ - sizeof(#name) - 1, PARTS_ITERATOR_ ## name) - - PARTSITER_DECL_LONG_CONST(KEY_SEQUENTIAL); - PARTSITER_DECL_LONG_CONST(KEY_LEFT); - PARTSITER_DECL_LONG_CONST(KEY_RIGHT); - -#undef PARTSITER_DECL_LONG_CONST } diff --git a/ext/intl/breakiterator/breakiterator_iterators.stub.php b/ext/intl/breakiterator/breakiterator_iterators.stub.php index 9d2fa9442819f..9a9475bcb954d 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.stub.php +++ b/ext/intl/breakiterator/breakiterator_iterators.stub.php @@ -5,6 +5,22 @@ /** @not-serializable */ class IntlPartsIterator extends IntlIterator { + /** + * @var int + * @cvalue PARTS_ITERATOR_KEY_SEQUENTIAL + */ + public const KEY_SEQUENTIAL = UNKNOWN; + /** + * @var int + * @cvalue PARTS_ITERATOR_KEY_LEFT + */ + public const KEY_LEFT = UNKNOWN; + /** + * @var int + * @cvalue PARTS_ITERATOR_KEY_RIGHT + */ + public const KEY_RIGHT = UNKNOWN; + /** @tentative-return-type */ public function getBreakIterator(): IntlBreakIterator {} diff --git a/ext/intl/breakiterator/breakiterator_iterators_arginfo.h b/ext/intl/breakiterator/breakiterator_iterators_arginfo.h index 8db11d23739e0..d03a1f84b9391 100644 --- a/ext/intl/breakiterator/breakiterator_iterators_arginfo.h +++ b/ext/intl/breakiterator/breakiterator_iterators_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: f72f108e37541ac042bb25249ef226211c344189 */ + * Stub hash: 2b201b4c2f4fb706484085c9fff483d66a7285ea */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_IntlPartsIterator_getBreakIterator, 0, 0, IntlBreakIterator, 0) ZEND_END_ARG_INFO() @@ -26,5 +26,23 @@ static zend_class_entry *register_class_IntlPartsIterator(zend_class_entry *clas class_entry = zend_register_internal_class_ex(&ce, class_entry_IntlIterator); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_KEY_SEQUENTIAL_value; + ZVAL_LONG(&const_KEY_SEQUENTIAL_value, PARTS_ITERATOR_KEY_SEQUENTIAL); + zend_string *const_KEY_SEQUENTIAL_name = zend_string_init_interned("KEY_SEQUENTIAL", sizeof("KEY_SEQUENTIAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_KEY_SEQUENTIAL_name, &const_KEY_SEQUENTIAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_KEY_SEQUENTIAL_name); + + zval const_KEY_LEFT_value; + ZVAL_LONG(&const_KEY_LEFT_value, PARTS_ITERATOR_KEY_LEFT); + zend_string *const_KEY_LEFT_name = zend_string_init_interned("KEY_LEFT", sizeof("KEY_LEFT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_KEY_LEFT_name, &const_KEY_LEFT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_KEY_LEFT_name); + + zval const_KEY_RIGHT_value; + ZVAL_LONG(&const_KEY_RIGHT_value, PARTS_ITERATOR_KEY_RIGHT); + zend_string *const_KEY_RIGHT_name = zend_string_init_interned("KEY_RIGHT", sizeof("KEY_RIGHT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_KEY_RIGHT_name, &const_KEY_RIGHT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_KEY_RIGHT_name); + return class_entry; } diff --git a/ext/intl/calendar/calendar.stub.php b/ext/intl/calendar/calendar.stub.php index 85c2c8a05e52c..97807b139e0d4 100644 --- a/ext/intl/calendar/calendar.stub.php +++ b/ext/intl/calendar/calendar.stub.php @@ -5,6 +5,205 @@ /** @not-serializable */ class IntlCalendar { + /** + * @var int + * @cvalue UCAL_ERA + */ + public const FIELD_ERA = UNKNOWN; + /** + * @var int + * @cvalue UCAL_YEAR + */ + public const FIELD_YEAR = UNKNOWN; + /** + * @var int + * @cvalue UCAL_MONTH + */ + public const FIELD_MONTH = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WEEK_OF_YEAR + */ + public const FIELD_WEEK_OF_YEAR = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WEEK_OF_MONTH + */ + public const FIELD_WEEK_OF_MONTH = UNKNOWN; + /** + * @var int + * @cvalue UCAL_DATE + */ + public const FIELD_DATE = UNKNOWN; + /** + * @var int + * @cvalue UCAL_DAY_OF_YEAR + */ + public const FIELD_DAY_OF_YEAR = UNKNOWN; + /** + * @var int + * @cvalue UCAL_DAY_OF_WEEK + */ + public const FIELD_DAY_OF_WEEK = UNKNOWN; + /** + * @var int + * @cvalue UCAL_DAY_OF_WEEK_IN_MONTH + */ + public const FIELD_DAY_OF_WEEK_IN_MONTH = UNKNOWN; + /** + * @var int + * @cvalue UCAL_AM_PM + */ + public const FIELD_AM_PM = UNKNOWN; + /** + * @var int + * @cvalue UCAL_HOUR + */ + public const FIELD_HOUR = UNKNOWN; + /** + * @var int + * @cvalue UCAL_HOUR_OF_DAY + */ + public const FIELD_HOUR_OF_DAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_MINUTE + */ + public const FIELD_MINUTE = UNKNOWN; + /** + * @var int + * @cvalue UCAL_SECOND + */ + public const FIELD_SECOND = UNKNOWN; + /** + * @var int + * @cvalue UCAL_MILLISECOND + */ + public const FIELD_MILLISECOND = UNKNOWN; + /** + * @var int + * @cvalue UCAL_ZONE_OFFSET + */ + public const FIELD_ZONE_OFFSET = UNKNOWN; + /** + * @var int + * @cvalue UCAL_DST_OFFSET + */ + public const FIELD_DST_OFFSET = UNKNOWN; + /** + * @var int + * @cvalue UCAL_YEAR_WOY + */ + public const FIELD_YEAR_WOY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_DOW_LOCAL + */ + public const FIELD_DOW_LOCAL = UNKNOWN; + /** + * @var int + * @cvalue UCAL_EXTENDED_YEAR + */ + public const FIELD_EXTENDED_YEAR = UNKNOWN; + /** + * @var int + * @cvalue UCAL_JULIAN_DAY + */ + public const FIELD_JULIAN_DAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_MILLISECONDS_IN_DAY + */ + public const FIELD_MILLISECONDS_IN_DAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_IS_LEAP_MONTH + */ + public const FIELD_IS_LEAP_MONTH = UNKNOWN; + /** + * @var int + * @cvalue UCAL_FIELD_COUNT + */ + public const FIELD_FIELD_COUNT = UNKNOWN; + /** + * @var int + * @cvalue UCAL_DAY_OF_MONTH + */ + public const FIELD_DAY_OF_MONTH = UNKNOWN; + + /** + * @var int + * @cvalue UCAL_SUNDAY + */ + public const DOW_SUNDAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_MONDAY + */ + public const DOW_MONDAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_TUESDAY + */ + public const DOW_TUESDAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WEDNESDAY + */ + public const DOW_WEDNESDAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_THURSDAY + */ + public const DOW_THURSDAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_FRIDAY + */ + public const DOW_FRIDAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_SATURDAY + */ + public const DOW_SATURDAY = UNKNOWN; + + /** + * @var int + * @cvalue UCAL_WEEKDAY + */ + public const DOW_TYPE_WEEKDAY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WEEKEND + */ + public const DOW_TYPE_WEEKEND = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WEEKEND_ONSET + */ + public const DOW_TYPE_WEEKEND_OFFSET = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WEEKEND_CEASE + */ + public const DOW_TYPE_WEEKEND_CEASE = UNKNOWN; + + /** + * @var int + * @cvalue UCAL_WALLTIME_FIRST + */ + public const WALLTIME_FIRST = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WALLTIME_LAST + */ + public const WALLTIME_LAST = UNKNOWN; + /** + * @var int + * @cvalue UCAL_WALLTIME_NEXT_VALID + */ + public const WALLTIME_NEXT_VALID = UNKNOWN; + private function __construct() {} /** diff --git a/ext/intl/calendar/calendar_arginfo.h b/ext/intl/calendar/calendar_arginfo.h index 7b22161f30f5d..6173d1283806b 100644 --- a/ext/intl/calendar/calendar_arginfo.h +++ b/ext/intl/calendar/calendar_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 0096dc9e60e2256054d23344e024df1d6527a5fa */ + * Stub hash: ef1b6e5e8ff6890ccb176c08c22499048afdfdb5 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlCalendar___construct, 0, 0, 0) ZEND_END_ARG_INFO() @@ -293,6 +293,240 @@ static zend_class_entry *register_class_IntlCalendar(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_FIELD_ERA_value; + ZVAL_LONG(&const_FIELD_ERA_value, UCAL_ERA); + zend_string *const_FIELD_ERA_name = zend_string_init_interned("FIELD_ERA", sizeof("FIELD_ERA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_ERA_name, &const_FIELD_ERA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_ERA_name); + + zval const_FIELD_YEAR_value; + ZVAL_LONG(&const_FIELD_YEAR_value, UCAL_YEAR); + zend_string *const_FIELD_YEAR_name = zend_string_init_interned("FIELD_YEAR", sizeof("FIELD_YEAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_YEAR_name, &const_FIELD_YEAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_YEAR_name); + + zval const_FIELD_MONTH_value; + ZVAL_LONG(&const_FIELD_MONTH_value, UCAL_MONTH); + zend_string *const_FIELD_MONTH_name = zend_string_init_interned("FIELD_MONTH", sizeof("FIELD_MONTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_MONTH_name, &const_FIELD_MONTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_MONTH_name); + + zval const_FIELD_WEEK_OF_YEAR_value; + ZVAL_LONG(&const_FIELD_WEEK_OF_YEAR_value, UCAL_WEEK_OF_YEAR); + zend_string *const_FIELD_WEEK_OF_YEAR_name = zend_string_init_interned("FIELD_WEEK_OF_YEAR", sizeof("FIELD_WEEK_OF_YEAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_WEEK_OF_YEAR_name, &const_FIELD_WEEK_OF_YEAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_WEEK_OF_YEAR_name); + + zval const_FIELD_WEEK_OF_MONTH_value; + ZVAL_LONG(&const_FIELD_WEEK_OF_MONTH_value, UCAL_WEEK_OF_MONTH); + zend_string *const_FIELD_WEEK_OF_MONTH_name = zend_string_init_interned("FIELD_WEEK_OF_MONTH", sizeof("FIELD_WEEK_OF_MONTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_WEEK_OF_MONTH_name, &const_FIELD_WEEK_OF_MONTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_WEEK_OF_MONTH_name); + + zval const_FIELD_DATE_value; + ZVAL_LONG(&const_FIELD_DATE_value, UCAL_DATE); + zend_string *const_FIELD_DATE_name = zend_string_init_interned("FIELD_DATE", sizeof("FIELD_DATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_DATE_name, &const_FIELD_DATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_DATE_name); + + zval const_FIELD_DAY_OF_YEAR_value; + ZVAL_LONG(&const_FIELD_DAY_OF_YEAR_value, UCAL_DAY_OF_YEAR); + zend_string *const_FIELD_DAY_OF_YEAR_name = zend_string_init_interned("FIELD_DAY_OF_YEAR", sizeof("FIELD_DAY_OF_YEAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_DAY_OF_YEAR_name, &const_FIELD_DAY_OF_YEAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_DAY_OF_YEAR_name); + + zval const_FIELD_DAY_OF_WEEK_value; + ZVAL_LONG(&const_FIELD_DAY_OF_WEEK_value, UCAL_DAY_OF_WEEK); + zend_string *const_FIELD_DAY_OF_WEEK_name = zend_string_init_interned("FIELD_DAY_OF_WEEK", sizeof("FIELD_DAY_OF_WEEK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_DAY_OF_WEEK_name, &const_FIELD_DAY_OF_WEEK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_DAY_OF_WEEK_name); + + zval const_FIELD_DAY_OF_WEEK_IN_MONTH_value; + ZVAL_LONG(&const_FIELD_DAY_OF_WEEK_IN_MONTH_value, UCAL_DAY_OF_WEEK_IN_MONTH); + zend_string *const_FIELD_DAY_OF_WEEK_IN_MONTH_name = zend_string_init_interned("FIELD_DAY_OF_WEEK_IN_MONTH", sizeof("FIELD_DAY_OF_WEEK_IN_MONTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_DAY_OF_WEEK_IN_MONTH_name, &const_FIELD_DAY_OF_WEEK_IN_MONTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_DAY_OF_WEEK_IN_MONTH_name); + + zval const_FIELD_AM_PM_value; + ZVAL_LONG(&const_FIELD_AM_PM_value, UCAL_AM_PM); + zend_string *const_FIELD_AM_PM_name = zend_string_init_interned("FIELD_AM_PM", sizeof("FIELD_AM_PM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_AM_PM_name, &const_FIELD_AM_PM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_AM_PM_name); + + zval const_FIELD_HOUR_value; + ZVAL_LONG(&const_FIELD_HOUR_value, UCAL_HOUR); + zend_string *const_FIELD_HOUR_name = zend_string_init_interned("FIELD_HOUR", sizeof("FIELD_HOUR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_HOUR_name, &const_FIELD_HOUR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_HOUR_name); + + zval const_FIELD_HOUR_OF_DAY_value; + ZVAL_LONG(&const_FIELD_HOUR_OF_DAY_value, UCAL_HOUR_OF_DAY); + zend_string *const_FIELD_HOUR_OF_DAY_name = zend_string_init_interned("FIELD_HOUR_OF_DAY", sizeof("FIELD_HOUR_OF_DAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_HOUR_OF_DAY_name, &const_FIELD_HOUR_OF_DAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_HOUR_OF_DAY_name); + + zval const_FIELD_MINUTE_value; + ZVAL_LONG(&const_FIELD_MINUTE_value, UCAL_MINUTE); + zend_string *const_FIELD_MINUTE_name = zend_string_init_interned("FIELD_MINUTE", sizeof("FIELD_MINUTE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_MINUTE_name, &const_FIELD_MINUTE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_MINUTE_name); + + zval const_FIELD_SECOND_value; + ZVAL_LONG(&const_FIELD_SECOND_value, UCAL_SECOND); + zend_string *const_FIELD_SECOND_name = zend_string_init_interned("FIELD_SECOND", sizeof("FIELD_SECOND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_SECOND_name, &const_FIELD_SECOND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_SECOND_name); + + zval const_FIELD_MILLISECOND_value; + ZVAL_LONG(&const_FIELD_MILLISECOND_value, UCAL_MILLISECOND); + zend_string *const_FIELD_MILLISECOND_name = zend_string_init_interned("FIELD_MILLISECOND", sizeof("FIELD_MILLISECOND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_MILLISECOND_name, &const_FIELD_MILLISECOND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_MILLISECOND_name); + + zval const_FIELD_ZONE_OFFSET_value; + ZVAL_LONG(&const_FIELD_ZONE_OFFSET_value, UCAL_ZONE_OFFSET); + zend_string *const_FIELD_ZONE_OFFSET_name = zend_string_init_interned("FIELD_ZONE_OFFSET", sizeof("FIELD_ZONE_OFFSET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_ZONE_OFFSET_name, &const_FIELD_ZONE_OFFSET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_ZONE_OFFSET_name); + + zval const_FIELD_DST_OFFSET_value; + ZVAL_LONG(&const_FIELD_DST_OFFSET_value, UCAL_DST_OFFSET); + zend_string *const_FIELD_DST_OFFSET_name = zend_string_init_interned("FIELD_DST_OFFSET", sizeof("FIELD_DST_OFFSET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_DST_OFFSET_name, &const_FIELD_DST_OFFSET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_DST_OFFSET_name); + + zval const_FIELD_YEAR_WOY_value; + ZVAL_LONG(&const_FIELD_YEAR_WOY_value, UCAL_YEAR_WOY); + zend_string *const_FIELD_YEAR_WOY_name = zend_string_init_interned("FIELD_YEAR_WOY", sizeof("FIELD_YEAR_WOY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_YEAR_WOY_name, &const_FIELD_YEAR_WOY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_YEAR_WOY_name); + + zval const_FIELD_DOW_LOCAL_value; + ZVAL_LONG(&const_FIELD_DOW_LOCAL_value, UCAL_DOW_LOCAL); + zend_string *const_FIELD_DOW_LOCAL_name = zend_string_init_interned("FIELD_DOW_LOCAL", sizeof("FIELD_DOW_LOCAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_DOW_LOCAL_name, &const_FIELD_DOW_LOCAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_DOW_LOCAL_name); + + zval const_FIELD_EXTENDED_YEAR_value; + ZVAL_LONG(&const_FIELD_EXTENDED_YEAR_value, UCAL_EXTENDED_YEAR); + zend_string *const_FIELD_EXTENDED_YEAR_name = zend_string_init_interned("FIELD_EXTENDED_YEAR", sizeof("FIELD_EXTENDED_YEAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_EXTENDED_YEAR_name, &const_FIELD_EXTENDED_YEAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_EXTENDED_YEAR_name); + + zval const_FIELD_JULIAN_DAY_value; + ZVAL_LONG(&const_FIELD_JULIAN_DAY_value, UCAL_JULIAN_DAY); + zend_string *const_FIELD_JULIAN_DAY_name = zend_string_init_interned("FIELD_JULIAN_DAY", sizeof("FIELD_JULIAN_DAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_JULIAN_DAY_name, &const_FIELD_JULIAN_DAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_JULIAN_DAY_name); + + zval const_FIELD_MILLISECONDS_IN_DAY_value; + ZVAL_LONG(&const_FIELD_MILLISECONDS_IN_DAY_value, UCAL_MILLISECONDS_IN_DAY); + zend_string *const_FIELD_MILLISECONDS_IN_DAY_name = zend_string_init_interned("FIELD_MILLISECONDS_IN_DAY", sizeof("FIELD_MILLISECONDS_IN_DAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_MILLISECONDS_IN_DAY_name, &const_FIELD_MILLISECONDS_IN_DAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_MILLISECONDS_IN_DAY_name); + + zval const_FIELD_IS_LEAP_MONTH_value; + ZVAL_LONG(&const_FIELD_IS_LEAP_MONTH_value, UCAL_IS_LEAP_MONTH); + zend_string *const_FIELD_IS_LEAP_MONTH_name = zend_string_init_interned("FIELD_IS_LEAP_MONTH", sizeof("FIELD_IS_LEAP_MONTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_IS_LEAP_MONTH_name, &const_FIELD_IS_LEAP_MONTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_IS_LEAP_MONTH_name); + + zval const_FIELD_FIELD_COUNT_value; + ZVAL_LONG(&const_FIELD_FIELD_COUNT_value, UCAL_FIELD_COUNT); + zend_string *const_FIELD_FIELD_COUNT_name = zend_string_init_interned("FIELD_FIELD_COUNT", sizeof("FIELD_FIELD_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_FIELD_COUNT_name, &const_FIELD_FIELD_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_FIELD_COUNT_name); + + zval const_FIELD_DAY_OF_MONTH_value; + ZVAL_LONG(&const_FIELD_DAY_OF_MONTH_value, UCAL_DAY_OF_MONTH); + zend_string *const_FIELD_DAY_OF_MONTH_name = zend_string_init_interned("FIELD_DAY_OF_MONTH", sizeof("FIELD_DAY_OF_MONTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FIELD_DAY_OF_MONTH_name, &const_FIELD_DAY_OF_MONTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FIELD_DAY_OF_MONTH_name); + + zval const_DOW_SUNDAY_value; + ZVAL_LONG(&const_DOW_SUNDAY_value, UCAL_SUNDAY); + zend_string *const_DOW_SUNDAY_name = zend_string_init_interned("DOW_SUNDAY", sizeof("DOW_SUNDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_SUNDAY_name, &const_DOW_SUNDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_SUNDAY_name); + + zval const_DOW_MONDAY_value; + ZVAL_LONG(&const_DOW_MONDAY_value, UCAL_MONDAY); + zend_string *const_DOW_MONDAY_name = zend_string_init_interned("DOW_MONDAY", sizeof("DOW_MONDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_MONDAY_name, &const_DOW_MONDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_MONDAY_name); + + zval const_DOW_TUESDAY_value; + ZVAL_LONG(&const_DOW_TUESDAY_value, UCAL_TUESDAY); + zend_string *const_DOW_TUESDAY_name = zend_string_init_interned("DOW_TUESDAY", sizeof("DOW_TUESDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_TUESDAY_name, &const_DOW_TUESDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_TUESDAY_name); + + zval const_DOW_WEDNESDAY_value; + ZVAL_LONG(&const_DOW_WEDNESDAY_value, UCAL_WEDNESDAY); + zend_string *const_DOW_WEDNESDAY_name = zend_string_init_interned("DOW_WEDNESDAY", sizeof("DOW_WEDNESDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_WEDNESDAY_name, &const_DOW_WEDNESDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_WEDNESDAY_name); + + zval const_DOW_THURSDAY_value; + ZVAL_LONG(&const_DOW_THURSDAY_value, UCAL_THURSDAY); + zend_string *const_DOW_THURSDAY_name = zend_string_init_interned("DOW_THURSDAY", sizeof("DOW_THURSDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_THURSDAY_name, &const_DOW_THURSDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_THURSDAY_name); + + zval const_DOW_FRIDAY_value; + ZVAL_LONG(&const_DOW_FRIDAY_value, UCAL_FRIDAY); + zend_string *const_DOW_FRIDAY_name = zend_string_init_interned("DOW_FRIDAY", sizeof("DOW_FRIDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_FRIDAY_name, &const_DOW_FRIDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_FRIDAY_name); + + zval const_DOW_SATURDAY_value; + ZVAL_LONG(&const_DOW_SATURDAY_value, UCAL_SATURDAY); + zend_string *const_DOW_SATURDAY_name = zend_string_init_interned("DOW_SATURDAY", sizeof("DOW_SATURDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_SATURDAY_name, &const_DOW_SATURDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_SATURDAY_name); + + zval const_DOW_TYPE_WEEKDAY_value; + ZVAL_LONG(&const_DOW_TYPE_WEEKDAY_value, UCAL_WEEKDAY); + zend_string *const_DOW_TYPE_WEEKDAY_name = zend_string_init_interned("DOW_TYPE_WEEKDAY", sizeof("DOW_TYPE_WEEKDAY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_TYPE_WEEKDAY_name, &const_DOW_TYPE_WEEKDAY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_TYPE_WEEKDAY_name); + + zval const_DOW_TYPE_WEEKEND_value; + ZVAL_LONG(&const_DOW_TYPE_WEEKEND_value, UCAL_WEEKEND); + zend_string *const_DOW_TYPE_WEEKEND_name = zend_string_init_interned("DOW_TYPE_WEEKEND", sizeof("DOW_TYPE_WEEKEND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_TYPE_WEEKEND_name, &const_DOW_TYPE_WEEKEND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_TYPE_WEEKEND_name); + + zval const_DOW_TYPE_WEEKEND_OFFSET_value; + ZVAL_LONG(&const_DOW_TYPE_WEEKEND_OFFSET_value, UCAL_WEEKEND_ONSET); + zend_string *const_DOW_TYPE_WEEKEND_OFFSET_name = zend_string_init_interned("DOW_TYPE_WEEKEND_OFFSET", sizeof("DOW_TYPE_WEEKEND_OFFSET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_TYPE_WEEKEND_OFFSET_name, &const_DOW_TYPE_WEEKEND_OFFSET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_TYPE_WEEKEND_OFFSET_name); + + zval const_DOW_TYPE_WEEKEND_CEASE_value; + ZVAL_LONG(&const_DOW_TYPE_WEEKEND_CEASE_value, UCAL_WEEKEND_CEASE); + zend_string *const_DOW_TYPE_WEEKEND_CEASE_name = zend_string_init_interned("DOW_TYPE_WEEKEND_CEASE", sizeof("DOW_TYPE_WEEKEND_CEASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DOW_TYPE_WEEKEND_CEASE_name, &const_DOW_TYPE_WEEKEND_CEASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DOW_TYPE_WEEKEND_CEASE_name); + + zval const_WALLTIME_FIRST_value; + ZVAL_LONG(&const_WALLTIME_FIRST_value, UCAL_WALLTIME_FIRST); + zend_string *const_WALLTIME_FIRST_name = zend_string_init_interned("WALLTIME_FIRST", sizeof("WALLTIME_FIRST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WALLTIME_FIRST_name, &const_WALLTIME_FIRST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WALLTIME_FIRST_name); + + zval const_WALLTIME_LAST_value; + ZVAL_LONG(&const_WALLTIME_LAST_value, UCAL_WALLTIME_LAST); + zend_string *const_WALLTIME_LAST_name = zend_string_init_interned("WALLTIME_LAST", sizeof("WALLTIME_LAST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WALLTIME_LAST_name, &const_WALLTIME_LAST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WALLTIME_LAST_name); + + zval const_WALLTIME_NEXT_VALID_value; + ZVAL_LONG(&const_WALLTIME_NEXT_VALID_value, UCAL_WALLTIME_NEXT_VALID); + zend_string *const_WALLTIME_NEXT_VALID_name = zend_string_init_interned("WALLTIME_NEXT_VALID", sizeof("WALLTIME_NEXT_VALID") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WALLTIME_NEXT_VALID_name, &const_WALLTIME_NEXT_VALID_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WALLTIME_NEXT_VALID_name); + return class_entry; } diff --git a/ext/intl/calendar/calendar_class.cpp b/ext/intl/calendar/calendar_class.cpp index 10239b2b2666c..8a2c7904a2d26 100644 --- a/ext/intl/calendar/calendar_class.cpp +++ b/ext/intl/calendar/calendar_class.cpp @@ -256,9 +256,6 @@ static zend_object *Calendar_object_create(zend_class_entry *ce) object_properties_init(&intern->zo, ce); calendar_object_init(intern); - - intern->zo.handlers = &Calendar_handlers; - return &intern->zo; } /* }}} */ @@ -270,6 +267,7 @@ void calendar_register_IntlCalendar_class(void) { /* Create and register 'IntlCalendar' class. */ Calendar_ce_ptr = register_class_IntlCalendar(); + Calendar_ce_ptr->default_object_handlers = &Calendar_handlers; Calendar_ce_ptr->create_object = Calendar_object_create; memcpy( &Calendar_handlers, &std_object_handlers, @@ -279,54 +277,6 @@ void calendar_register_IntlCalendar_class(void) Calendar_handlers.get_debug_info = Calendar_get_debug_info; Calendar_handlers.free_obj = Calendar_objects_free; - /* Declare 'IntlCalendar' class constants */ -#define CALENDAR_DECL_LONG_CONST(name, val) \ - zend_declare_class_constant_long(Calendar_ce_ptr, name, sizeof(name) - 1, \ - val) - - CALENDAR_DECL_LONG_CONST("FIELD_ERA", UCAL_ERA); - CALENDAR_DECL_LONG_CONST("FIELD_YEAR", UCAL_YEAR); - CALENDAR_DECL_LONG_CONST("FIELD_MONTH", UCAL_MONTH); - CALENDAR_DECL_LONG_CONST("FIELD_WEEK_OF_YEAR", UCAL_WEEK_OF_YEAR); - CALENDAR_DECL_LONG_CONST("FIELD_WEEK_OF_MONTH", UCAL_WEEK_OF_MONTH); - CALENDAR_DECL_LONG_CONST("FIELD_DATE", UCAL_DATE); - CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_YEAR", UCAL_DAY_OF_YEAR); - CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_WEEK", UCAL_DAY_OF_WEEK); - CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_WEEK_IN_MONTH", UCAL_DAY_OF_WEEK_IN_MONTH); - CALENDAR_DECL_LONG_CONST("FIELD_AM_PM", UCAL_AM_PM); - CALENDAR_DECL_LONG_CONST("FIELD_HOUR", UCAL_HOUR); - CALENDAR_DECL_LONG_CONST("FIELD_HOUR_OF_DAY", UCAL_HOUR_OF_DAY); - CALENDAR_DECL_LONG_CONST("FIELD_MINUTE", UCAL_MINUTE); - CALENDAR_DECL_LONG_CONST("FIELD_SECOND", UCAL_SECOND); - CALENDAR_DECL_LONG_CONST("FIELD_MILLISECOND", UCAL_MILLISECOND); - CALENDAR_DECL_LONG_CONST("FIELD_ZONE_OFFSET", UCAL_ZONE_OFFSET); - CALENDAR_DECL_LONG_CONST("FIELD_DST_OFFSET", UCAL_DST_OFFSET); - CALENDAR_DECL_LONG_CONST("FIELD_YEAR_WOY", UCAL_YEAR_WOY); - CALENDAR_DECL_LONG_CONST("FIELD_DOW_LOCAL", UCAL_DOW_LOCAL); - CALENDAR_DECL_LONG_CONST("FIELD_EXTENDED_YEAR", UCAL_EXTENDED_YEAR); - CALENDAR_DECL_LONG_CONST("FIELD_JULIAN_DAY", UCAL_JULIAN_DAY); - CALENDAR_DECL_LONG_CONST("FIELD_MILLISECONDS_IN_DAY", UCAL_MILLISECONDS_IN_DAY); - CALENDAR_DECL_LONG_CONST("FIELD_IS_LEAP_MONTH", UCAL_IS_LEAP_MONTH); - CALENDAR_DECL_LONG_CONST("FIELD_FIELD_COUNT", UCAL_FIELD_COUNT); - CALENDAR_DECL_LONG_CONST("FIELD_DAY_OF_MONTH", UCAL_DAY_OF_MONTH); - - CALENDAR_DECL_LONG_CONST("DOW_SUNDAY", UCAL_SUNDAY); - CALENDAR_DECL_LONG_CONST("DOW_MONDAY", UCAL_MONDAY); - CALENDAR_DECL_LONG_CONST("DOW_TUESDAY", UCAL_TUESDAY); - CALENDAR_DECL_LONG_CONST("DOW_WEDNESDAY", UCAL_WEDNESDAY); - CALENDAR_DECL_LONG_CONST("DOW_THURSDAY", UCAL_THURSDAY); - CALENDAR_DECL_LONG_CONST("DOW_FRIDAY", UCAL_FRIDAY); - CALENDAR_DECL_LONG_CONST("DOW_SATURDAY", UCAL_SATURDAY); - - CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKDAY", UCAL_WEEKDAY); - CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKEND", UCAL_WEEKEND); - CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKEND_OFFSET", UCAL_WEEKEND_ONSET); - CALENDAR_DECL_LONG_CONST("DOW_TYPE_WEEKEND_CEASE", UCAL_WEEKEND_CEASE); - - CALENDAR_DECL_LONG_CONST("WALLTIME_FIRST", UCAL_WALLTIME_FIRST); - CALENDAR_DECL_LONG_CONST("WALLTIME_LAST", UCAL_WALLTIME_LAST); - CALENDAR_DECL_LONG_CONST("WALLTIME_NEXT_VALID", UCAL_WALLTIME_NEXT_VALID); - /* Create and register 'IntlGregorianCalendar' class. */ GregorianCalendar_ce_ptr = register_class_IntlGregorianCalendar(Calendar_ce_ptr); } diff --git a/ext/intl/collator/collator_arginfo.h b/ext/intl/collator/collator_arginfo.h index 37fa57fff5300..6ca30c4e49b34 100644 --- a/ext/intl/collator/collator_arginfo.h +++ b/ext/intl/collator/collator_arginfo.h @@ -92,8 +92,8 @@ static const zend_function_entry class_Collator_methods[] = { static void register_collator_symbols(int module_number) { - REGISTER_LONG_CONSTANT("ULOC_ACTUAL_LOCALE", ULOC_ACTUAL_LOCALE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ULOC_VALID_LOCALE", ULOC_VALID_LOCALE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ULOC_ACTUAL_LOCALE", ULOC_ACTUAL_LOCALE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ULOC_VALID_LOCALE", ULOC_VALID_LOCALE, CONST_PERSISTENT); } static zend_class_entry *register_class_Collator(void) diff --git a/ext/intl/collator/collator_class.c b/ext/intl/collator/collator_class.c index 709691123ed35..db974b8748ec6 100644 --- a/ext/intl/collator/collator_class.c +++ b/ext/intl/collator/collator_class.c @@ -50,8 +50,6 @@ zend_object *Collator_object_create(zend_class_entry *ce ) zend_object_std_init(&intern->zo, ce ); object_properties_init(&intern->zo, ce); - intern->zo.handlers = &Collator_handlers; - return &intern->zo; } /* }}} */ @@ -70,6 +68,7 @@ void collator_register_Collator_symbols(int module_number) /* Create and register 'Collator' class. */ Collator_ce_ptr = register_class_Collator(); Collator_ce_ptr->create_object = Collator_object_create; + Collator_ce_ptr->default_object_handlers = &Collator_handlers; memcpy(&Collator_handlers, &std_object_handlers, sizeof Collator_handlers); diff --git a/ext/intl/common/common.stub.php b/ext/intl/common/common.stub.php index acadedd39934c..cdcca7d413d68 100644 --- a/ext/intl/common/common.stub.php +++ b/ext/intl/common/common.stub.php @@ -2,6 +2,736 @@ /** @generate-class-entries */ +/* Warnings */ + +/** + * @var int + * @cvalue U_USING_FALLBACK_WARNING + */ +const U_USING_FALLBACK_WARNING = UNKNOWN; +/** + * @var int + * @cvalue U_ERROR_WARNING_START + */ +const U_ERROR_WARNING_START = UNKNOWN; +/** + * @var int + * @cvalue U_USING_DEFAULT_WARNING + */ +const U_USING_DEFAULT_WARNING = UNKNOWN; +/** + * @var int + * @cvalue U_SAFECLONE_ALLOCATED_WARNING + */ +const U_SAFECLONE_ALLOCATED_WARNING = UNKNOWN; +/** + * @var int + * @cvalue U_STATE_OLD_WARNING + */ +const U_STATE_OLD_WARNING = UNKNOWN; +/** + * @var int + * @cvalue U_STRING_NOT_TERMINATED_WARNING + */ +const U_STRING_NOT_TERMINATED_WARNING = UNKNOWN; +/** + * @var int + * @cvalue U_SORT_KEY_TOO_SHORT_WARNING + */ +const U_SORT_KEY_TOO_SHORT_WARNING = UNKNOWN; +/** + * @var int + * @cvalue U_AMBIGUOUS_ALIAS_WARNING + */ +const U_AMBIGUOUS_ALIAS_WARNING = UNKNOWN; +/** + * @var int + * @cvalue U_DIFFERENT_UCA_VERSION + */ +const U_DIFFERENT_UCA_VERSION = UNKNOWN; +/** + * @var int + * @cvalue U_ERROR_WARNING_LIMIT + */ +const U_ERROR_WARNING_LIMIT = UNKNOWN; + +/* Standard errors */ +/** + * @var int + * @cvalue U_ZERO_ERROR + */ +const U_ZERO_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_ILLEGAL_ARGUMENT_ERROR + */ +const U_ILLEGAL_ARGUMENT_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_MISSING_RESOURCE_ERROR + */ +const U_MISSING_RESOURCE_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_FORMAT_ERROR + */ +const U_INVALID_FORMAT_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_FILE_ACCESS_ERROR + */ +const U_FILE_ACCESS_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_INTERNAL_PROGRAM_ERROR + */ +const U_INTERNAL_PROGRAM_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_MESSAGE_PARSE_ERROR + */ +const U_MESSAGE_PARSE_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_MEMORY_ALLOCATION_ERROR + */ +const U_MEMORY_ALLOCATION_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_INDEX_OUTOFBOUNDS_ERROR + */ +const U_INDEX_OUTOFBOUNDS_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_PARSE_ERROR + */ +const U_PARSE_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_CHAR_FOUND + */ +const U_INVALID_CHAR_FOUND = UNKNOWN; +/** + * @var int + * @cvalue U_TRUNCATED_CHAR_FOUND + */ +const U_TRUNCATED_CHAR_FOUND = UNKNOWN; +/** + * @var int + * @cvalue U_ILLEGAL_CHAR_FOUND + */ +const U_ILLEGAL_CHAR_FOUND = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_TABLE_FORMAT + */ +const U_INVALID_TABLE_FORMAT = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_TABLE_FILE + */ +const U_INVALID_TABLE_FILE = UNKNOWN; +/** + * @var int + * @cvalue U_BUFFER_OVERFLOW_ERROR + */ +const U_BUFFER_OVERFLOW_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_UNSUPPORTED_ERROR + */ +const U_UNSUPPORTED_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_RESOURCE_TYPE_MISMATCH + */ +const U_RESOURCE_TYPE_MISMATCH = UNKNOWN; +/** + * @var int + * @cvalue U_ILLEGAL_ESCAPE_SEQUENCE + */ +const U_ILLEGAL_ESCAPE_SEQUENCE = UNKNOWN; +/** + * @var int + * @cvalue U_UNSUPPORTED_ESCAPE_SEQUENCE + */ +const U_UNSUPPORTED_ESCAPE_SEQUENCE = UNKNOWN; +/** + * @var int + * @cvalue U_NO_SPACE_AVAILABLE + */ +const U_NO_SPACE_AVAILABLE = UNKNOWN; +/** + * @var int + * @cvalue U_CE_NOT_FOUND_ERROR + */ +const U_CE_NOT_FOUND_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_PRIMARY_TOO_LONG_ERROR + */ +const U_PRIMARY_TOO_LONG_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_STATE_TOO_OLD_ERROR + */ +const U_STATE_TOO_OLD_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_TOO_MANY_ALIASES_ERROR + */ +const U_TOO_MANY_ALIASES_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_ENUM_OUT_OF_SYNC_ERROR + */ +const U_ENUM_OUT_OF_SYNC_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_INVARIANT_CONVERSION_ERROR + */ +const U_INVARIANT_CONVERSION_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_STATE_ERROR + */ +const U_INVALID_STATE_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_COLLATOR_VERSION_MISMATCH + */ +const U_COLLATOR_VERSION_MISMATCH = UNKNOWN; +/** + * @var int + * @cvalue U_USELESS_COLLATOR_ERROR + */ +const U_USELESS_COLLATOR_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_NO_WRITE_PERMISSION + */ +const U_NO_WRITE_PERMISSION = UNKNOWN; +/** + * @var int + * @cvalue U_STANDARD_ERROR_LIMIT + */ +const U_STANDARD_ERROR_LIMIT = UNKNOWN; + +/* The error code range 0x10000 0x10100 are reserved for Transliterator */ + +/** + * @var int + * @cvalue U_BAD_VARIABLE_DEFINITION + */ +const U_BAD_VARIABLE_DEFINITION = UNKNOWN; +/** + * @var int + * @cvalue U_PARSE_ERROR_START + */ +const U_PARSE_ERROR_START = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_RULE + */ +const U_MALFORMED_RULE = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_SET + */ +const U_MALFORMED_SET = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_SYMBOL_REFERENCE + */ +const U_MALFORMED_SYMBOL_REFERENCE = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_UNICODE_ESCAPE + */ +const U_MALFORMED_UNICODE_ESCAPE = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_VARIABLE_DEFINITION + */ +const U_MALFORMED_VARIABLE_DEFINITION = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_VARIABLE_REFERENCE + */ +const U_MALFORMED_VARIABLE_REFERENCE = UNKNOWN; +/** + * @var int + * @cvalue U_MISMATCHED_SEGMENT_DELIMITERS + */ +const U_MISMATCHED_SEGMENT_DELIMITERS = UNKNOWN; +/** + * @var int + * @cvalue U_MISPLACED_ANCHOR_START + */ +const U_MISPLACED_ANCHOR_START = UNKNOWN; +/** + * @var int + * @cvalue U_MISPLACED_CURSOR_OFFSET + */ +const U_MISPLACED_CURSOR_OFFSET = UNKNOWN; +/** + * @var int + * @cvalue U_MISPLACED_QUANTIFIER + */ +const U_MISPLACED_QUANTIFIER = UNKNOWN; +/** + * @var int + * @cvalue U_MISSING_OPERATOR + */ +const U_MISSING_OPERATOR = UNKNOWN; +/** + * @var int + * @cvalue U_MISSING_SEGMENT_CLOSE + */ +const U_MISSING_SEGMENT_CLOSE = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_ANTE_CONTEXTS + */ +const U_MULTIPLE_ANTE_CONTEXTS = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_CURSORS + */ +const U_MULTIPLE_CURSORS = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_POST_CONTEXTS + */ +const U_MULTIPLE_POST_CONTEXTS = UNKNOWN; +/** + * @var int + * @cvalue U_TRAILING_BACKSLASH + */ +const U_TRAILING_BACKSLASH = UNKNOWN; +/** + * @var int + * @cvalue U_UNDEFINED_SEGMENT_REFERENCE + */ +const U_UNDEFINED_SEGMENT_REFERENCE = UNKNOWN; +/** + * @var int + * @cvalue U_UNDEFINED_VARIABLE + */ +const U_UNDEFINED_VARIABLE = UNKNOWN; +/** + * @var int + * @cvalue U_UNQUOTED_SPECIAL + */ +const U_UNQUOTED_SPECIAL = UNKNOWN; +/** + * @var int + * @cvalue U_UNTERMINATED_QUOTE + */ +const U_UNTERMINATED_QUOTE = UNKNOWN; +/** + * @var int + * @cvalue U_RULE_MASK_ERROR + */ +const U_RULE_MASK_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_MISPLACED_COMPOUND_FILTER + */ +const U_MISPLACED_COMPOUND_FILTER = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_COMPOUND_FILTERS + */ +const U_MULTIPLE_COMPOUND_FILTERS = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_RBT_SYNTAX + */ +const U_INVALID_RBT_SYNTAX = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_PROPERTY_PATTERN + */ +const U_INVALID_PROPERTY_PATTERN = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_PRAGMA + */ +const U_MALFORMED_PRAGMA = UNKNOWN; +/** + * @var int + * @cvalue U_UNCLOSED_SEGMENT + */ +const U_UNCLOSED_SEGMENT = UNKNOWN; +/** + * @var int + * @cvalue U_ILLEGAL_CHAR_IN_SEGMENT + */ +const U_ILLEGAL_CHAR_IN_SEGMENT = UNKNOWN; +/** + * @var int + * @cvalue U_VARIABLE_RANGE_EXHAUSTED + */ +const U_VARIABLE_RANGE_EXHAUSTED = UNKNOWN; +/** + * @var int + * @cvalue U_VARIABLE_RANGE_OVERLAP + */ +const U_VARIABLE_RANGE_OVERLAP = UNKNOWN; +/** + * @var int + * @cvalue U_ILLEGAL_CHARACTER + */ +const U_ILLEGAL_CHARACTER = UNKNOWN; +/** + * @var int + * @cvalue U_INTERNAL_TRANSLITERATOR_ERROR + */ +const U_INTERNAL_TRANSLITERATOR_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_ID + */ +const U_INVALID_ID = UNKNOWN; +/** + * @var int + * @cvalue U_INVALID_FUNCTION + */ +const U_INVALID_FUNCTION = UNKNOWN; +/** + * @var int + * @cvalue U_PARSE_ERROR_LIMIT + */ +const U_PARSE_ERROR_LIMIT = UNKNOWN; + +/* The error code range 0x10100 0x10200 are reserved for formatting API parsing errors */ + +/** + * @var int + * @cvalue U_UNEXPECTED_TOKEN + */ +const U_UNEXPECTED_TOKEN = UNKNOWN; +/** + * @var int + * @cvalue U_FMT_PARSE_ERROR_START + */ +const U_FMT_PARSE_ERROR_START = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_DECIMAL_SEPARATORS + */ +const U_MULTIPLE_DECIMAL_SEPARATORS = UNKNOWN; +/** + * Typo: kept for backward compatibility. Use U_MULTIPLE_DECIMAL_SEPARATORS + * @var int + * @cvalue U_MULTIPLE_DECIMAL_SEPERATORS + */ +const U_MULTIPLE_DECIMAL_SEPERATORS = UNKNOWN; // TODO Deprecate +/** + * @var int + * @cvalue U_MULTIPLE_EXPONENTIAL_SYMBOLS + */ +const U_MULTIPLE_EXPONENTIAL_SYMBOLS = UNKNOWN; +/** + * @var int + * @cvalue U_MALFORMED_EXPONENTIAL_PATTERN + */ +const U_MALFORMED_EXPONENTIAL_PATTERN = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_PERCENT_SYMBOLS + */ +const U_MULTIPLE_PERCENT_SYMBOLS = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_PERMILL_SYMBOLS + */ +const U_MULTIPLE_PERMILL_SYMBOLS = UNKNOWN; +/** + * @var int + * @cvalue U_MULTIPLE_PAD_SPECIFIERS + */ +const U_MULTIPLE_PAD_SPECIFIERS = UNKNOWN; +/** + * @var int + * @cvalue U_PATTERN_SYNTAX_ERROR + */ +const U_PATTERN_SYNTAX_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_ILLEGAL_PAD_POSITION + */ +const U_ILLEGAL_PAD_POSITION = UNKNOWN; +/** + * @var int + * @cvalue U_UNMATCHED_BRACES + */ +const U_UNMATCHED_BRACES = UNKNOWN; +/** + * @var int + * @cvalue U_UNSUPPORTED_PROPERTY + */ +const U_UNSUPPORTED_PROPERTY = UNKNOWN; +/** + * @var int + * @cvalue U_UNSUPPORTED_ATTRIBUTE + */ +const U_UNSUPPORTED_ATTRIBUTE = UNKNOWN; +/** + * @var int + * @cvalue U_FMT_PARSE_ERROR_LIMIT + */ +const U_FMT_PARSE_ERROR_LIMIT = UNKNOWN; + +/* The error code range 0x10200 0x102ff are reserved for Break Iterator related errors */ + +/** + * @var int + * @cvalue U_BRK_INTERNAL_ERROR + */ +const U_BRK_INTERNAL_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_ERROR_START + */ +const U_BRK_ERROR_START = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_HEX_DIGITS_EXPECTED + */ +const U_BRK_HEX_DIGITS_EXPECTED = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_SEMICOLON_EXPECTED + */ +const U_BRK_SEMICOLON_EXPECTED = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_RULE_SYNTAX + */ +const U_BRK_RULE_SYNTAX = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_UNCLOSED_SET + */ +const U_BRK_UNCLOSED_SET = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_ASSIGN_ERROR + */ +const U_BRK_ASSIGN_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_VARIABLE_REDFINITION + */ +const U_BRK_VARIABLE_REDFINITION = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_MISMATCHED_PAREN + */ +const U_BRK_MISMATCHED_PAREN = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_NEW_LINE_IN_QUOTED_STRING + */ +const U_BRK_NEW_LINE_IN_QUOTED_STRING = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_UNDEFINED_VARIABLE + */ +const U_BRK_UNDEFINED_VARIABLE = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_INIT_ERROR + */ +const U_BRK_INIT_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_RULE_EMPTY_SET + */ +const U_BRK_RULE_EMPTY_SET = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_UNRECOGNIZED_OPTION + */ +const U_BRK_UNRECOGNIZED_OPTION = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_MALFORMED_RULE_TAG + */ +const U_BRK_MALFORMED_RULE_TAG = UNKNOWN; +/** + * @var int + * @cvalue U_BRK_ERROR_LIMIT + */ +const U_BRK_ERROR_LIMIT = UNKNOWN; + +/* The error codes in the range 0x10300-0x103ff are reserved for regular expression related errors */ + +/** + * @var int + * @cvalue U_REGEX_INTERNAL_ERROR + */ +const U_REGEX_INTERNAL_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_ERROR_START + */ +const U_REGEX_ERROR_START = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_RULE_SYNTAX + */ +const U_REGEX_RULE_SYNTAX = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_INVALID_STATE + */ +const U_REGEX_INVALID_STATE = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_BAD_ESCAPE_SEQUENCE + */ +const U_REGEX_BAD_ESCAPE_SEQUENCE = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_PROPERTY_SYNTAX + */ +const U_REGEX_PROPERTY_SYNTAX = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_UNIMPLEMENTED + */ +const U_REGEX_UNIMPLEMENTED = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_MISMATCHED_PAREN + */ +const U_REGEX_MISMATCHED_PAREN = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_NUMBER_TOO_BIG + */ +const U_REGEX_NUMBER_TOO_BIG = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_BAD_INTERVAL + */ +const U_REGEX_BAD_INTERVAL = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_MAX_LT_MIN + */ +const U_REGEX_MAX_LT_MIN = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_INVALID_BACK_REF + */ +const U_REGEX_INVALID_BACK_REF = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_INVALID_FLAG + */ +const U_REGEX_INVALID_FLAG = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_LOOK_BEHIND_LIMIT + */ +const U_REGEX_LOOK_BEHIND_LIMIT = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_SET_CONTAINS_STRING + */ +const U_REGEX_SET_CONTAINS_STRING = UNKNOWN; +/** + * @var int + * @cvalue U_REGEX_ERROR_LIMIT + */ +const U_REGEX_ERROR_LIMIT = UNKNOWN; + +/* The error code in the range 0x10400-0x104ff are reserved for IDNA related error codes */ + +/** + * @var int + * @cvalue U_IDNA_PROHIBITED_ERROR + */ +const U_IDNA_PROHIBITED_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_ERROR_START + */ +const U_IDNA_ERROR_START = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_UNASSIGNED_ERROR + */ +const U_IDNA_UNASSIGNED_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_CHECK_BIDI_ERROR + */ +const U_IDNA_CHECK_BIDI_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_STD3_ASCII_RULES_ERROR + */ +const U_IDNA_STD3_ASCII_RULES_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_ACE_PREFIX_ERROR + */ +const U_IDNA_ACE_PREFIX_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_VERIFICATION_ERROR + */ +const U_IDNA_VERIFICATION_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_LABEL_TOO_LONG_ERROR + */ +const U_IDNA_LABEL_TOO_LONG_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_ZERO_LENGTH_LABEL_ERROR + */ +const U_IDNA_ZERO_LENGTH_LABEL_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR + */ +const U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_IDNA_ERROR_LIMIT + */ +const U_IDNA_ERROR_LIMIT = UNKNOWN; + +/* Aliases for StringPrep */ + +/** + * @var int + * @cvalue U_STRINGPREP_PROHIBITED_ERROR + */ +const U_STRINGPREP_PROHIBITED_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_STRINGPREP_UNASSIGNED_ERROR + */ +const U_STRINGPREP_UNASSIGNED_ERROR = UNKNOWN; +/** + * @var int + * @cvalue U_STRINGPREP_CHECK_BIDI_ERROR + */ +const U_STRINGPREP_CHECK_BIDI_ERROR = UNKNOWN; + +/** + * @var int + * @cvalue U_ERROR_LIMIT + */ +const U_ERROR_LIMIT = UNKNOWN; + /** @not-serializable */ class IntlIterator implements Iterator { diff --git a/ext/intl/common/common_arginfo.h b/ext/intl/common/common_arginfo.h index cbf422bf0d4c6..d549e7964c6c2 100644 --- a/ext/intl/common/common_arginfo.h +++ b/ext/intl/common/common_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 976f2d1417928226d6c04ff444c4feda152d91df */ + * Stub hash: bc47f841e1bc12324d4c5cfea798fbfb43592c07 */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlIterator_current, 0, 0, IS_MIXED, 0) ZEND_END_ARG_INFO() @@ -31,6 +31,151 @@ static const zend_function_entry class_IntlIterator_methods[] = { ZEND_FE_END }; +static void register_common_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("U_USING_FALLBACK_WARNING", U_USING_FALLBACK_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ERROR_WARNING_START", U_ERROR_WARNING_START, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_USING_DEFAULT_WARNING", U_USING_DEFAULT_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_SAFECLONE_ALLOCATED_WARNING", U_SAFECLONE_ALLOCATED_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_STATE_OLD_WARNING", U_STATE_OLD_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_STRING_NOT_TERMINATED_WARNING", U_STRING_NOT_TERMINATED_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_SORT_KEY_TOO_SHORT_WARNING", U_SORT_KEY_TOO_SHORT_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_AMBIGUOUS_ALIAS_WARNING", U_AMBIGUOUS_ALIAS_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_DIFFERENT_UCA_VERSION", U_DIFFERENT_UCA_VERSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ERROR_WARNING_LIMIT", U_ERROR_WARNING_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ZERO_ERROR", U_ZERO_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ILLEGAL_ARGUMENT_ERROR", U_ILLEGAL_ARGUMENT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISSING_RESOURCE_ERROR", U_MISSING_RESOURCE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_FORMAT_ERROR", U_INVALID_FORMAT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_FILE_ACCESS_ERROR", U_FILE_ACCESS_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INTERNAL_PROGRAM_ERROR", U_INTERNAL_PROGRAM_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MESSAGE_PARSE_ERROR", U_MESSAGE_PARSE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MEMORY_ALLOCATION_ERROR", U_MEMORY_ALLOCATION_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INDEX_OUTOFBOUNDS_ERROR", U_INDEX_OUTOFBOUNDS_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_PARSE_ERROR", U_PARSE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_CHAR_FOUND", U_INVALID_CHAR_FOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_TRUNCATED_CHAR_FOUND", U_TRUNCATED_CHAR_FOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ILLEGAL_CHAR_FOUND", U_ILLEGAL_CHAR_FOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_TABLE_FORMAT", U_INVALID_TABLE_FORMAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_TABLE_FILE", U_INVALID_TABLE_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BUFFER_OVERFLOW_ERROR", U_BUFFER_OVERFLOW_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNSUPPORTED_ERROR", U_UNSUPPORTED_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_RESOURCE_TYPE_MISMATCH", U_RESOURCE_TYPE_MISMATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ILLEGAL_ESCAPE_SEQUENCE", U_ILLEGAL_ESCAPE_SEQUENCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNSUPPORTED_ESCAPE_SEQUENCE", U_UNSUPPORTED_ESCAPE_SEQUENCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_NO_SPACE_AVAILABLE", U_NO_SPACE_AVAILABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_CE_NOT_FOUND_ERROR", U_CE_NOT_FOUND_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_PRIMARY_TOO_LONG_ERROR", U_PRIMARY_TOO_LONG_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_STATE_TOO_OLD_ERROR", U_STATE_TOO_OLD_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_TOO_MANY_ALIASES_ERROR", U_TOO_MANY_ALIASES_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ENUM_OUT_OF_SYNC_ERROR", U_ENUM_OUT_OF_SYNC_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVARIANT_CONVERSION_ERROR", U_INVARIANT_CONVERSION_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_STATE_ERROR", U_INVALID_STATE_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_COLLATOR_VERSION_MISMATCH", U_COLLATOR_VERSION_MISMATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_USELESS_COLLATOR_ERROR", U_USELESS_COLLATOR_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_NO_WRITE_PERMISSION", U_NO_WRITE_PERMISSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_STANDARD_ERROR_LIMIT", U_STANDARD_ERROR_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BAD_VARIABLE_DEFINITION", U_BAD_VARIABLE_DEFINITION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_PARSE_ERROR_START", U_PARSE_ERROR_START, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_RULE", U_MALFORMED_RULE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_SET", U_MALFORMED_SET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_SYMBOL_REFERENCE", U_MALFORMED_SYMBOL_REFERENCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_UNICODE_ESCAPE", U_MALFORMED_UNICODE_ESCAPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_VARIABLE_DEFINITION", U_MALFORMED_VARIABLE_DEFINITION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_VARIABLE_REFERENCE", U_MALFORMED_VARIABLE_REFERENCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISMATCHED_SEGMENT_DELIMITERS", U_MISMATCHED_SEGMENT_DELIMITERS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISPLACED_ANCHOR_START", U_MISPLACED_ANCHOR_START, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISPLACED_CURSOR_OFFSET", U_MISPLACED_CURSOR_OFFSET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISPLACED_QUANTIFIER", U_MISPLACED_QUANTIFIER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISSING_OPERATOR", U_MISSING_OPERATOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISSING_SEGMENT_CLOSE", U_MISSING_SEGMENT_CLOSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_ANTE_CONTEXTS", U_MULTIPLE_ANTE_CONTEXTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_CURSORS", U_MULTIPLE_CURSORS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_POST_CONTEXTS", U_MULTIPLE_POST_CONTEXTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_TRAILING_BACKSLASH", U_TRAILING_BACKSLASH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNDEFINED_SEGMENT_REFERENCE", U_UNDEFINED_SEGMENT_REFERENCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNDEFINED_VARIABLE", U_UNDEFINED_VARIABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNQUOTED_SPECIAL", U_UNQUOTED_SPECIAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNTERMINATED_QUOTE", U_UNTERMINATED_QUOTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_RULE_MASK_ERROR", U_RULE_MASK_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MISPLACED_COMPOUND_FILTER", U_MISPLACED_COMPOUND_FILTER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_COMPOUND_FILTERS", U_MULTIPLE_COMPOUND_FILTERS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_RBT_SYNTAX", U_INVALID_RBT_SYNTAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_PROPERTY_PATTERN", U_INVALID_PROPERTY_PATTERN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_PRAGMA", U_MALFORMED_PRAGMA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNCLOSED_SEGMENT", U_UNCLOSED_SEGMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ILLEGAL_CHAR_IN_SEGMENT", U_ILLEGAL_CHAR_IN_SEGMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_VARIABLE_RANGE_EXHAUSTED", U_VARIABLE_RANGE_EXHAUSTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_VARIABLE_RANGE_OVERLAP", U_VARIABLE_RANGE_OVERLAP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ILLEGAL_CHARACTER", U_ILLEGAL_CHARACTER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INTERNAL_TRANSLITERATOR_ERROR", U_INTERNAL_TRANSLITERATOR_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_ID", U_INVALID_ID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_INVALID_FUNCTION", U_INVALID_FUNCTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_PARSE_ERROR_LIMIT", U_PARSE_ERROR_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNEXPECTED_TOKEN", U_UNEXPECTED_TOKEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_FMT_PARSE_ERROR_START", U_FMT_PARSE_ERROR_START, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_DECIMAL_SEPARATORS", U_MULTIPLE_DECIMAL_SEPARATORS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_DECIMAL_SEPERATORS", U_MULTIPLE_DECIMAL_SEPERATORS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_EXPONENTIAL_SYMBOLS", U_MULTIPLE_EXPONENTIAL_SYMBOLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MALFORMED_EXPONENTIAL_PATTERN", U_MALFORMED_EXPONENTIAL_PATTERN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_PERCENT_SYMBOLS", U_MULTIPLE_PERCENT_SYMBOLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_PERMILL_SYMBOLS", U_MULTIPLE_PERMILL_SYMBOLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_MULTIPLE_PAD_SPECIFIERS", U_MULTIPLE_PAD_SPECIFIERS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_PATTERN_SYNTAX_ERROR", U_PATTERN_SYNTAX_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ILLEGAL_PAD_POSITION", U_ILLEGAL_PAD_POSITION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNMATCHED_BRACES", U_UNMATCHED_BRACES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNSUPPORTED_PROPERTY", U_UNSUPPORTED_PROPERTY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_UNSUPPORTED_ATTRIBUTE", U_UNSUPPORTED_ATTRIBUTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_FMT_PARSE_ERROR_LIMIT", U_FMT_PARSE_ERROR_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_INTERNAL_ERROR", U_BRK_INTERNAL_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_ERROR_START", U_BRK_ERROR_START, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_HEX_DIGITS_EXPECTED", U_BRK_HEX_DIGITS_EXPECTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_SEMICOLON_EXPECTED", U_BRK_SEMICOLON_EXPECTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_RULE_SYNTAX", U_BRK_RULE_SYNTAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_UNCLOSED_SET", U_BRK_UNCLOSED_SET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_ASSIGN_ERROR", U_BRK_ASSIGN_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_VARIABLE_REDFINITION", U_BRK_VARIABLE_REDFINITION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_MISMATCHED_PAREN", U_BRK_MISMATCHED_PAREN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_NEW_LINE_IN_QUOTED_STRING", U_BRK_NEW_LINE_IN_QUOTED_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_UNDEFINED_VARIABLE", U_BRK_UNDEFINED_VARIABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_INIT_ERROR", U_BRK_INIT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_RULE_EMPTY_SET", U_BRK_RULE_EMPTY_SET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_UNRECOGNIZED_OPTION", U_BRK_UNRECOGNIZED_OPTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_MALFORMED_RULE_TAG", U_BRK_MALFORMED_RULE_TAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_BRK_ERROR_LIMIT", U_BRK_ERROR_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_INTERNAL_ERROR", U_REGEX_INTERNAL_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_ERROR_START", U_REGEX_ERROR_START, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_RULE_SYNTAX", U_REGEX_RULE_SYNTAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_INVALID_STATE", U_REGEX_INVALID_STATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_BAD_ESCAPE_SEQUENCE", U_REGEX_BAD_ESCAPE_SEQUENCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_PROPERTY_SYNTAX", U_REGEX_PROPERTY_SYNTAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_UNIMPLEMENTED", U_REGEX_UNIMPLEMENTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_MISMATCHED_PAREN", U_REGEX_MISMATCHED_PAREN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_NUMBER_TOO_BIG", U_REGEX_NUMBER_TOO_BIG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_BAD_INTERVAL", U_REGEX_BAD_INTERVAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_MAX_LT_MIN", U_REGEX_MAX_LT_MIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_INVALID_BACK_REF", U_REGEX_INVALID_BACK_REF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_INVALID_FLAG", U_REGEX_INVALID_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_LOOK_BEHIND_LIMIT", U_REGEX_LOOK_BEHIND_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_SET_CONTAINS_STRING", U_REGEX_SET_CONTAINS_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_REGEX_ERROR_LIMIT", U_REGEX_ERROR_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_PROHIBITED_ERROR", U_IDNA_PROHIBITED_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_ERROR_START", U_IDNA_ERROR_START, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_UNASSIGNED_ERROR", U_IDNA_UNASSIGNED_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_CHECK_BIDI_ERROR", U_IDNA_CHECK_BIDI_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_STD3_ASCII_RULES_ERROR", U_IDNA_STD3_ASCII_RULES_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_ACE_PREFIX_ERROR", U_IDNA_ACE_PREFIX_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_VERIFICATION_ERROR", U_IDNA_VERIFICATION_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_LABEL_TOO_LONG_ERROR", U_IDNA_LABEL_TOO_LONG_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_ZERO_LENGTH_LABEL_ERROR", U_IDNA_ZERO_LENGTH_LABEL_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR", U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_IDNA_ERROR_LIMIT", U_IDNA_ERROR_LIMIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_STRINGPREP_PROHIBITED_ERROR", U_STRINGPREP_PROHIBITED_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_STRINGPREP_UNASSIGNED_ERROR", U_STRINGPREP_UNASSIGNED_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_STRINGPREP_CHECK_BIDI_ERROR", U_STRINGPREP_CHECK_BIDI_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("U_ERROR_LIMIT", U_ERROR_LIMIT, CONST_PERSISTENT); +} + static zend_class_entry *register_class_IntlIterator(zend_class_entry *class_entry_Iterator) { zend_class_entry ce, *class_entry; diff --git a/ext/intl/common/common_enum.cpp b/ext/intl/common/common_enum.cpp index a6eead5e25cb1..874c748d58b70 100644 --- a/ext/intl/common/common_enum.cpp +++ b/ext/intl/common/common_enum.cpp @@ -200,8 +200,6 @@ static zend_object *IntlIterator_object_create(zend_class_entry *ce) intern->iterator = NULL; - intern->zo.handlers = &IntlIterator_handlers; - return &intern->zo; } @@ -282,14 +280,12 @@ PHP_METHOD(IntlIterator, valid) RETURN_BOOL(ii->iterator->funcs->valid(ii->iterator) == SUCCESS); } -/* {{{ intl_register_IntlIterator_class - * Initialize 'IntlIterator' class - */ -U_CFUNC void intl_register_IntlIterator_class(void) +U_CFUNC void intl_register_common_symbols(int module_number) { /* Create and register 'IntlIterator' class. */ IntlIterator_ce_ptr = register_class_IntlIterator(zend_ce_iterator); IntlIterator_ce_ptr->create_object = IntlIterator_object_create; + IntlIterator_ce_ptr->default_object_handlers = &IntlIterator_handlers; IntlIterator_ce_ptr->get_iterator = IntlIterator_get_iterator; memcpy(&IntlIterator_handlers, &std_object_handlers, @@ -298,4 +294,5 @@ U_CFUNC void intl_register_IntlIterator_class(void) IntlIterator_handlers.clone_obj = NULL; IntlIterator_handlers.free_obj = IntlIterator_objects_free; + register_common_symbols(module_number); } diff --git a/ext/intl/common/common_enum.h b/ext/intl/common/common_enum.h index 6a329bb446508..ebe5cbfbfa3b8 100644 --- a/ext/intl/common/common_enum.h +++ b/ext/intl/common/common_enum.h @@ -77,6 +77,6 @@ using icu::StringEnumeration; U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *object); #endif -U_CFUNC void intl_register_IntlIterator_class(void); +U_CFUNC void intl_register_common_symbols(int module_number); #endif // INTL_COMMON_ENUM_H diff --git a/ext/intl/common/common_error.c b/ext/intl/common/common_error.c index a7281e86d2e91..1e2c3d9527bbc 100644 --- a/ext/intl/common/common_error.c +++ b/ext/intl/common/common_error.c @@ -19,7 +19,6 @@ #include "php_intl.h" #include "intl_error.h" -#include "common_error.h" /* {{{ Get code of the last occurred error. */ PHP_FUNCTION( intl_get_error_code ) @@ -79,172 +78,3 @@ PHP_FUNCTION( intl_error_name ) RETURN_STRING( (char*)u_errorName( err_code ) ); } /* }}} */ - -/* {{{ intl_expose_icu_error_codes - * Expose ICU error codes - */ -void intl_expose_icu_error_codes( INIT_FUNC_ARGS ) -{ - #define INTL_EXPOSE_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_PERSISTENT | CONST_CS) - - /* Warnings */ - INTL_EXPOSE_CONST( U_USING_FALLBACK_WARNING ); - INTL_EXPOSE_CONST( U_ERROR_WARNING_START ); - INTL_EXPOSE_CONST( U_USING_DEFAULT_WARNING ); - INTL_EXPOSE_CONST( U_SAFECLONE_ALLOCATED_WARNING ); - INTL_EXPOSE_CONST( U_STATE_OLD_WARNING ); - INTL_EXPOSE_CONST( U_STRING_NOT_TERMINATED_WARNING ); - INTL_EXPOSE_CONST( U_SORT_KEY_TOO_SHORT_WARNING ); - INTL_EXPOSE_CONST( U_AMBIGUOUS_ALIAS_WARNING ); - INTL_EXPOSE_CONST( U_DIFFERENT_UCA_VERSION ); - INTL_EXPOSE_CONST( U_ERROR_WARNING_LIMIT ); - - /* Standard errors */ - INTL_EXPOSE_CONST( U_ZERO_ERROR ); - INTL_EXPOSE_CONST( U_ILLEGAL_ARGUMENT_ERROR ); - INTL_EXPOSE_CONST( U_MISSING_RESOURCE_ERROR ); - INTL_EXPOSE_CONST( U_INVALID_FORMAT_ERROR ); - INTL_EXPOSE_CONST( U_FILE_ACCESS_ERROR ); - INTL_EXPOSE_CONST( U_INTERNAL_PROGRAM_ERROR ); - INTL_EXPOSE_CONST( U_MESSAGE_PARSE_ERROR ); - INTL_EXPOSE_CONST( U_MEMORY_ALLOCATION_ERROR ); - INTL_EXPOSE_CONST( U_INDEX_OUTOFBOUNDS_ERROR ); - INTL_EXPOSE_CONST( U_PARSE_ERROR ); - INTL_EXPOSE_CONST( U_INVALID_CHAR_FOUND ); - INTL_EXPOSE_CONST( U_TRUNCATED_CHAR_FOUND ); - INTL_EXPOSE_CONST( U_ILLEGAL_CHAR_FOUND ); - INTL_EXPOSE_CONST( U_INVALID_TABLE_FORMAT ); - INTL_EXPOSE_CONST( U_INVALID_TABLE_FILE ); - INTL_EXPOSE_CONST( U_BUFFER_OVERFLOW_ERROR ); - INTL_EXPOSE_CONST( U_UNSUPPORTED_ERROR ); - INTL_EXPOSE_CONST( U_RESOURCE_TYPE_MISMATCH ); - INTL_EXPOSE_CONST( U_ILLEGAL_ESCAPE_SEQUENCE ); - INTL_EXPOSE_CONST( U_UNSUPPORTED_ESCAPE_SEQUENCE ); - INTL_EXPOSE_CONST( U_NO_SPACE_AVAILABLE ); - INTL_EXPOSE_CONST( U_CE_NOT_FOUND_ERROR ); - INTL_EXPOSE_CONST( U_PRIMARY_TOO_LONG_ERROR ); - INTL_EXPOSE_CONST( U_STATE_TOO_OLD_ERROR ); - INTL_EXPOSE_CONST( U_TOO_MANY_ALIASES_ERROR ); - INTL_EXPOSE_CONST( U_ENUM_OUT_OF_SYNC_ERROR ); - INTL_EXPOSE_CONST( U_INVARIANT_CONVERSION_ERROR ); - INTL_EXPOSE_CONST( U_INVALID_STATE_ERROR ); - INTL_EXPOSE_CONST( U_COLLATOR_VERSION_MISMATCH ); - INTL_EXPOSE_CONST( U_USELESS_COLLATOR_ERROR ); - INTL_EXPOSE_CONST( U_NO_WRITE_PERMISSION ); - INTL_EXPOSE_CONST( U_STANDARD_ERROR_LIMIT ); - - /* The error code range 0x10000 0x10100 are reserved for Transliterator */ - INTL_EXPOSE_CONST( U_BAD_VARIABLE_DEFINITION ); - INTL_EXPOSE_CONST( U_PARSE_ERROR_START ); - INTL_EXPOSE_CONST( U_MALFORMED_RULE ); - INTL_EXPOSE_CONST( U_MALFORMED_SET ); - INTL_EXPOSE_CONST( U_MALFORMED_SYMBOL_REFERENCE ); - INTL_EXPOSE_CONST( U_MALFORMED_UNICODE_ESCAPE ); - INTL_EXPOSE_CONST( U_MALFORMED_VARIABLE_DEFINITION ); - INTL_EXPOSE_CONST( U_MALFORMED_VARIABLE_REFERENCE ); - INTL_EXPOSE_CONST( U_MISMATCHED_SEGMENT_DELIMITERS ); - INTL_EXPOSE_CONST( U_MISPLACED_ANCHOR_START ); - INTL_EXPOSE_CONST( U_MISPLACED_CURSOR_OFFSET ); - INTL_EXPOSE_CONST( U_MISPLACED_QUANTIFIER ); - INTL_EXPOSE_CONST( U_MISSING_OPERATOR ); - INTL_EXPOSE_CONST( U_MISSING_SEGMENT_CLOSE ); - INTL_EXPOSE_CONST( U_MULTIPLE_ANTE_CONTEXTS ); - INTL_EXPOSE_CONST( U_MULTIPLE_CURSORS ); - INTL_EXPOSE_CONST( U_MULTIPLE_POST_CONTEXTS ); - INTL_EXPOSE_CONST( U_TRAILING_BACKSLASH ); - INTL_EXPOSE_CONST( U_UNDEFINED_SEGMENT_REFERENCE ); - INTL_EXPOSE_CONST( U_UNDEFINED_VARIABLE ); - INTL_EXPOSE_CONST( U_UNQUOTED_SPECIAL ); - INTL_EXPOSE_CONST( U_UNTERMINATED_QUOTE ); - INTL_EXPOSE_CONST( U_RULE_MASK_ERROR ); - INTL_EXPOSE_CONST( U_MISPLACED_COMPOUND_FILTER ); - INTL_EXPOSE_CONST( U_MULTIPLE_COMPOUND_FILTERS ); - INTL_EXPOSE_CONST( U_INVALID_RBT_SYNTAX ); - INTL_EXPOSE_CONST( U_INVALID_PROPERTY_PATTERN ); - INTL_EXPOSE_CONST( U_MALFORMED_PRAGMA ); - INTL_EXPOSE_CONST( U_UNCLOSED_SEGMENT ); - INTL_EXPOSE_CONST( U_ILLEGAL_CHAR_IN_SEGMENT ); - INTL_EXPOSE_CONST( U_VARIABLE_RANGE_EXHAUSTED ); - INTL_EXPOSE_CONST( U_VARIABLE_RANGE_OVERLAP ); - INTL_EXPOSE_CONST( U_ILLEGAL_CHARACTER ); - INTL_EXPOSE_CONST( U_INTERNAL_TRANSLITERATOR_ERROR ); - INTL_EXPOSE_CONST( U_INVALID_ID ); - INTL_EXPOSE_CONST( U_INVALID_FUNCTION ); - INTL_EXPOSE_CONST( U_PARSE_ERROR_LIMIT ); - - /* The error code range 0x10100 0x10200 are reserved for formatting API parsing error */ - INTL_EXPOSE_CONST( U_UNEXPECTED_TOKEN ); - INTL_EXPOSE_CONST( U_FMT_PARSE_ERROR_START ); - INTL_EXPOSE_CONST( U_MULTIPLE_DECIMAL_SEPARATORS ); - INTL_EXPOSE_CONST( U_MULTIPLE_DECIMAL_SEPERATORS ); /* Typo: kept for backward compatibility. Use U_MULTIPLE_DECIMAL_SEPARATORS */ - INTL_EXPOSE_CONST( U_MULTIPLE_EXPONENTIAL_SYMBOLS ); - INTL_EXPOSE_CONST( U_MALFORMED_EXPONENTIAL_PATTERN ); - INTL_EXPOSE_CONST( U_MULTIPLE_PERCENT_SYMBOLS ); - INTL_EXPOSE_CONST( U_MULTIPLE_PERMILL_SYMBOLS ); - INTL_EXPOSE_CONST( U_MULTIPLE_PAD_SPECIFIERS ); - INTL_EXPOSE_CONST( U_PATTERN_SYNTAX_ERROR ); - INTL_EXPOSE_CONST( U_ILLEGAL_PAD_POSITION ); - INTL_EXPOSE_CONST( U_UNMATCHED_BRACES ); - INTL_EXPOSE_CONST( U_UNSUPPORTED_PROPERTY ); - INTL_EXPOSE_CONST( U_UNSUPPORTED_ATTRIBUTE ); - INTL_EXPOSE_CONST( U_FMT_PARSE_ERROR_LIMIT ); - - /* The error code range 0x10200 0x102ff are reserved for Break Iterator related error */ - INTL_EXPOSE_CONST( U_BRK_INTERNAL_ERROR ); - INTL_EXPOSE_CONST( U_BRK_ERROR_START ); - INTL_EXPOSE_CONST( U_BRK_HEX_DIGITS_EXPECTED ); - INTL_EXPOSE_CONST( U_BRK_SEMICOLON_EXPECTED ); - INTL_EXPOSE_CONST( U_BRK_RULE_SYNTAX ); - INTL_EXPOSE_CONST( U_BRK_UNCLOSED_SET ); - INTL_EXPOSE_CONST( U_BRK_ASSIGN_ERROR ); - INTL_EXPOSE_CONST( U_BRK_VARIABLE_REDFINITION ); - INTL_EXPOSE_CONST( U_BRK_MISMATCHED_PAREN ); - INTL_EXPOSE_CONST( U_BRK_NEW_LINE_IN_QUOTED_STRING ); - INTL_EXPOSE_CONST( U_BRK_UNDEFINED_VARIABLE ); - INTL_EXPOSE_CONST( U_BRK_INIT_ERROR ); - INTL_EXPOSE_CONST( U_BRK_RULE_EMPTY_SET ); - INTL_EXPOSE_CONST( U_BRK_UNRECOGNIZED_OPTION ); - INTL_EXPOSE_CONST( U_BRK_MALFORMED_RULE_TAG ); - INTL_EXPOSE_CONST( U_BRK_ERROR_LIMIT ); - - /* The error codes in the range 0x10300-0x103ff are reserved for regular expression related errrs */ - INTL_EXPOSE_CONST( U_REGEX_INTERNAL_ERROR ); - INTL_EXPOSE_CONST( U_REGEX_ERROR_START ); - INTL_EXPOSE_CONST( U_REGEX_RULE_SYNTAX ); - INTL_EXPOSE_CONST( U_REGEX_INVALID_STATE ); - INTL_EXPOSE_CONST( U_REGEX_BAD_ESCAPE_SEQUENCE ); - INTL_EXPOSE_CONST( U_REGEX_PROPERTY_SYNTAX ); - INTL_EXPOSE_CONST( U_REGEX_UNIMPLEMENTED ); - INTL_EXPOSE_CONST( U_REGEX_MISMATCHED_PAREN ); - INTL_EXPOSE_CONST( U_REGEX_NUMBER_TOO_BIG ); - INTL_EXPOSE_CONST( U_REGEX_BAD_INTERVAL ); - INTL_EXPOSE_CONST( U_REGEX_MAX_LT_MIN ); - INTL_EXPOSE_CONST( U_REGEX_INVALID_BACK_REF ); - INTL_EXPOSE_CONST( U_REGEX_INVALID_FLAG ); - INTL_EXPOSE_CONST( U_REGEX_LOOK_BEHIND_LIMIT ); - INTL_EXPOSE_CONST( U_REGEX_SET_CONTAINS_STRING ); - INTL_EXPOSE_CONST( U_REGEX_ERROR_LIMIT ); - - /* The error code in the range 0x10400-0x104ff are reserved for IDNA related error codes */ - INTL_EXPOSE_CONST( U_IDNA_PROHIBITED_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_ERROR_START ); - INTL_EXPOSE_CONST( U_IDNA_UNASSIGNED_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_CHECK_BIDI_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_STD3_ASCII_RULES_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_ACE_PREFIX_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_VERIFICATION_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_LABEL_TOO_LONG_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_ZERO_LENGTH_LABEL_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR ); - INTL_EXPOSE_CONST( U_IDNA_ERROR_LIMIT ); - - /* Aliases for StringPrep */ - INTL_EXPOSE_CONST( U_STRINGPREP_PROHIBITED_ERROR ); - INTL_EXPOSE_CONST( U_STRINGPREP_UNASSIGNED_ERROR ); - INTL_EXPOSE_CONST( U_STRINGPREP_CHECK_BIDI_ERROR ); - - INTL_EXPOSE_CONST( U_ERROR_LIMIT ); - - #undef INTL_EXPOSE_CONST -} -/* }}} */ diff --git a/ext/intl/common/common_error.h b/ext/intl/common/common_error.h deleted file mode 100644 index 44caa0760870e..0000000000000 --- a/ext/intl/common/common_error.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable 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: Vadim Savchuk | - | Dmitry Lakhtyuk | - +----------------------------------------------------------------------+ - */ - -#ifndef INTL_COMMON_ERROR_H -#define INTL_COMMON_ERROR_H - -#include - -void intl_expose_icu_error_codes( INIT_FUNC_ARGS ); - -#endif // INTL_COMMON_ERROR_H diff --git a/ext/intl/config.m4 b/ext/intl/config.m4 index 91a91da20c27c..dd687bcd97de3 100644 --- a/ext/intl/config.m4 +++ b/ext/intl/config.m4 @@ -21,14 +21,12 @@ if test "$PHP_INTL" != "no"; then collator/collator_error.c \ common/common_error.c \ converter/converter.c \ - formatter/formatter.c \ formatter/formatter_main.c \ formatter/formatter_class.c \ formatter/formatter_attr.c \ formatter/formatter_data.c \ formatter/formatter_format.c \ formatter/formatter_parse.c \ - normalizer/normalizer.c \ normalizer/normalizer_class.c \ normalizer/normalizer_normalize.c \ locale/locale.c \ @@ -51,13 +49,11 @@ if test "$PHP_INTL" != "no"; then resourcebundle/resourcebundle.c \ resourcebundle/resourcebundle_class.c \ resourcebundle/resourcebundle_iterator.c \ - transliterator/transliterator.c \ transliterator/transliterator_class.c \ transliterator/transliterator_methods.c \ uchar/uchar.c \ idn/idn.c \ spoofchecker/spoofchecker_class.c \ - spoofchecker/spoofchecker.c\ spoofchecker/spoofchecker_create.c\ spoofchecker/spoofchecker_main.c, $ext_shared,,$INTL_COMMON_FLAGS,cxx) diff --git a/ext/intl/config.w32 b/ext/intl/config.w32 index 95ac9a108f73a..ab7dc42b66246 100644 --- a/ext/intl/config.w32 +++ b/ext/intl/config.w32 @@ -28,7 +28,6 @@ if (PHP_INTL != "no") { converter.c \ ", "intl"); ADD_SOURCES(configure_module_dirname + "/formatter", "\ - formatter.c \ formatter_attr.c \ formatter_class.c \ formatter_data.c \ @@ -54,7 +53,6 @@ if (PHP_INTL != "no") { grapheme_string.c grapheme_util.c \ ", "intl"); ADD_SOURCES(configure_module_dirname + "/normalizer", "\ - normalizer.c \ normalizer_class.c \ normalizer_normalize.c \ ", "intl"); @@ -86,7 +84,6 @@ if (PHP_INTL != "no") { if (CHECK_HEADER_ADD_INCLUDE("unicode/uspoof.h", "CFLAGS_INTL")) { ADD_SOURCES(configure_module_dirname + "/spoofchecker", "\ - spoofchecker.c \ spoofchecker_class.c \ spoofchecker_create.c \ spoofchecker_main.c", @@ -94,7 +91,6 @@ if (PHP_INTL != "no") { } ADD_SOURCES(configure_module_dirname + "/transliterator", "\ - transliterator.c \ transliterator_class.c \ transliterator_methods.c", "intl"); diff --git a/ext/intl/converter/converter.c b/ext/intl/converter/converter.c index 5358c8a0e38f8..6f65cfc2eea69 100644 --- a/ext/intl/converter/converter.c +++ b/ext/intl/converter/converter.c @@ -13,7 +13,6 @@ */ #include "converter.h" -#include "converter_arginfo.h" #include "zend_exceptions.h" #include @@ -24,6 +23,7 @@ #include "../intl_error.h" #include "../intl_common.h" +#include "converter_arginfo.h" typedef struct _php_converter_object { UConverter *src, *dest; @@ -911,7 +911,6 @@ static zend_object *php_converter_object_ctor(zend_class_entry *ce, php_converte object_properties_init(&objval->obj, ce); intl_error_init(&(objval->error)); - objval->obj.handlers = &php_converter_object_handlers; *pobjval = objval; return &objval->obj; @@ -969,63 +968,16 @@ static zend_object *php_converter_clone_object(zend_object *object) { } /* }}} */ -#define CONV_REASON_CONST(v) zend_declare_class_constant_long(php_converter_ce, "REASON_" #v, sizeof("REASON_" #v) - 1, UCNV_ ## v) -#define CONV_TYPE_CONST(v) zend_declare_class_constant_long(php_converter_ce, #v , sizeof(#v) - 1, UCNV_ ## v) - /* {{{ php_converter_minit */ int php_converter_minit(INIT_FUNC_ARGS) { php_converter_ce = register_class_UConverter(); php_converter_ce->create_object = php_converter_create_object; + php_converter_ce->default_object_handlers = &php_converter_object_handlers; memcpy(&php_converter_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); php_converter_object_handlers.offset = XtOffsetOf(php_converter_object, obj); php_converter_object_handlers.clone_obj = php_converter_clone_object; php_converter_object_handlers.free_obj = php_converter_free_object; - /* enum UConverterCallbackReason */ - CONV_REASON_CONST(UNASSIGNED); - CONV_REASON_CONST(ILLEGAL); - CONV_REASON_CONST(IRREGULAR); - CONV_REASON_CONST(RESET); - CONV_REASON_CONST(CLOSE); - CONV_REASON_CONST(CLONE); - - /* enum UConverterType */ - CONV_TYPE_CONST(UNSUPPORTED_CONVERTER); - CONV_TYPE_CONST(SBCS); - CONV_TYPE_CONST(DBCS); - CONV_TYPE_CONST(MBCS); - CONV_TYPE_CONST(LATIN_1); - CONV_TYPE_CONST(UTF8); - CONV_TYPE_CONST(UTF16_BigEndian); - CONV_TYPE_CONST(UTF16_LittleEndian); - CONV_TYPE_CONST(UTF32_BigEndian); - CONV_TYPE_CONST(UTF32_LittleEndian); - CONV_TYPE_CONST(EBCDIC_STATEFUL); - CONV_TYPE_CONST(ISO_2022); - CONV_TYPE_CONST(LMBCS_1); - CONV_TYPE_CONST(LMBCS_2); - CONV_TYPE_CONST(LMBCS_3); - CONV_TYPE_CONST(LMBCS_4); - CONV_TYPE_CONST(LMBCS_5); - CONV_TYPE_CONST(LMBCS_6); - CONV_TYPE_CONST(LMBCS_8); - CONV_TYPE_CONST(LMBCS_11); - CONV_TYPE_CONST(LMBCS_16); - CONV_TYPE_CONST(LMBCS_17); - CONV_TYPE_CONST(LMBCS_18); - CONV_TYPE_CONST(LMBCS_19); - CONV_TYPE_CONST(LMBCS_LAST); - CONV_TYPE_CONST(HZ); - CONV_TYPE_CONST(SCSU); - CONV_TYPE_CONST(ISCII); - CONV_TYPE_CONST(US_ASCII); - CONV_TYPE_CONST(UTF7); - CONV_TYPE_CONST(BOCU1); - CONV_TYPE_CONST(UTF16); - CONV_TYPE_CONST(UTF32); - CONV_TYPE_CONST(CESU8); - CONV_TYPE_CONST(IMAP_MAILBOX); - return SUCCESS; } /* }}} */ diff --git a/ext/intl/converter/converter.stub.php b/ext/intl/converter/converter.stub.php index 19a8bbef9512f..169d6499687cd 100644 --- a/ext/intl/converter/converter.stub.php +++ b/ext/intl/converter/converter.stub.php @@ -5,6 +5,217 @@ /** @not-serializable */ class UConverter { + /* enum UConverterCallbackReason */ + + /** + * @var int + * @cvalue UCNV_UNASSIGNED + */ + public const REASON_UNASSIGNED = UNKNOWN; + /** + * @var int + * @cvalue UCNV_ILLEGAL + */ + public const REASON_ILLEGAL = UNKNOWN; + /** + * @var int + * @cvalue UCNV_IRREGULAR + */ + public const REASON_IRREGULAR = UNKNOWN; + /** + * @var int + * @cvalue UCNV_RESET + */ + public const REASON_RESET = UNKNOWN; + /** + * @var int + * @cvalue UCNV_CLOSE + */ + public const REASON_CLOSE = UNKNOWN; + /** + * @var int + * @cvalue UCNV_CLONE + */ + public const REASON_CLONE = UNKNOWN; + + /* enum UConverterType */ + + /** + * @var int + * @cvalue UCNV_UNSUPPORTED_CONVERTER + */ + public const UNSUPPORTED_CONVERTER = UNKNOWN; + /** + * @var int + * @cvalue UCNV_SBCS + */ + public const SBCS = UNKNOWN; + /** + * @var int + * @cvalue UCNV_DBCS + */ + public const DBCS = UNKNOWN; + /** + * @var int + * @cvalue UCNV_MBCS + */ + public const MBCS = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LATIN_1 + */ + public const LATIN_1 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF8 + */ + public const UTF8 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF16_BigEndian + */ + public const UTF16_BigEndian = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF16_LittleEndian + */ + public const UTF16_LittleEndian = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF32_BigEndian + */ + public const UTF32_BigEndian = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF32_LittleEndian + */ + public const UTF32_LittleEndian = UNKNOWN; + /** + * @var int + * @cvalue UCNV_EBCDIC_STATEFUL + */ + public const EBCDIC_STATEFUL = UNKNOWN; + /** + * @var int + * @cvalue UCNV_ISO_2022 + */ + public const ISO_2022 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_1 + */ + public const LMBCS_1 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_2 + */ + public const LMBCS_2 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_3 + */ + public const LMBCS_3 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_4 + */ + public const LMBCS_4 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_5 + */ + public const LMBCS_5 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_6 + */ + public const LMBCS_6 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_8 + */ + public const LMBCS_8 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_11 + */ + public const LMBCS_11 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_16 + */ + public const LMBCS_16 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_17 + */ + public const LMBCS_17 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_18 + */ + public const LMBCS_18 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_19 + */ + public const LMBCS_19 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_LMBCS_LAST + */ + public const LMBCS_LAST = UNKNOWN; + /** + * @var int + * @cvalue UCNV_HZ + */ + public const HZ = UNKNOWN; + /** + * @var int + * @cvalue UCNV_SCSU + */ + public const SCSU = UNKNOWN; + /** + * @var int + * @cvalue UCNV_ISCII + */ + public const ISCII = UNKNOWN; + /** + * @var int + * @cvalue UCNV_US_ASCII + */ + public const US_ASCII = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF7 + */ + public const UTF7 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_BOCU1 + */ + public const BOCU1 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF16 + */ + public const UTF16 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_UTF32 + */ + public const UTF32 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_CESU8 + */ + public const CESU8 = UNKNOWN; + /** + * @var int + * @cvalue UCNV_IMAP_MAILBOX + */ + public const IMAP_MAILBOX = UNKNOWN; + public function __construct(?string $destination_encoding = null, ?string $source_encoding = null) {} /** @tentative-return-type */ diff --git a/ext/intl/converter/converter_arginfo.h b/ext/intl/converter/converter_arginfo.h index cae2a68d4be07..c78d0dc8b8d93 100644 --- a/ext/intl/converter/converter_arginfo.h +++ b/ext/intl/converter/converter_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 0ab2d741996611bbfcfb07462bc184a02f353585 */ + * Stub hash: 4012b69ba043f9780ea2e92714c7f2daa47e928e */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_UConverter___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, destination_encoding, IS_STRING, 1, "null") @@ -127,5 +127,251 @@ static zend_class_entry *register_class_UConverter(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_REASON_UNASSIGNED_value; + ZVAL_LONG(&const_REASON_UNASSIGNED_value, UCNV_UNASSIGNED); + zend_string *const_REASON_UNASSIGNED_name = zend_string_init_interned("REASON_UNASSIGNED", sizeof("REASON_UNASSIGNED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REASON_UNASSIGNED_name, &const_REASON_UNASSIGNED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REASON_UNASSIGNED_name); + + zval const_REASON_ILLEGAL_value; + ZVAL_LONG(&const_REASON_ILLEGAL_value, UCNV_ILLEGAL); + zend_string *const_REASON_ILLEGAL_name = zend_string_init_interned("REASON_ILLEGAL", sizeof("REASON_ILLEGAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REASON_ILLEGAL_name, &const_REASON_ILLEGAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REASON_ILLEGAL_name); + + zval const_REASON_IRREGULAR_value; + ZVAL_LONG(&const_REASON_IRREGULAR_value, UCNV_IRREGULAR); + zend_string *const_REASON_IRREGULAR_name = zend_string_init_interned("REASON_IRREGULAR", sizeof("REASON_IRREGULAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REASON_IRREGULAR_name, &const_REASON_IRREGULAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REASON_IRREGULAR_name); + + zval const_REASON_RESET_value; + ZVAL_LONG(&const_REASON_RESET_value, UCNV_RESET); + zend_string *const_REASON_RESET_name = zend_string_init_interned("REASON_RESET", sizeof("REASON_RESET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REASON_RESET_name, &const_REASON_RESET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REASON_RESET_name); + + zval const_REASON_CLOSE_value; + ZVAL_LONG(&const_REASON_CLOSE_value, UCNV_CLOSE); + zend_string *const_REASON_CLOSE_name = zend_string_init_interned("REASON_CLOSE", sizeof("REASON_CLOSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REASON_CLOSE_name, &const_REASON_CLOSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REASON_CLOSE_name); + + zval const_REASON_CLONE_value; + ZVAL_LONG(&const_REASON_CLONE_value, UCNV_CLONE); + zend_string *const_REASON_CLONE_name = zend_string_init_interned("REASON_CLONE", sizeof("REASON_CLONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REASON_CLONE_name, &const_REASON_CLONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REASON_CLONE_name); + + zval const_UNSUPPORTED_CONVERTER_value; + ZVAL_LONG(&const_UNSUPPORTED_CONVERTER_value, UCNV_UNSUPPORTED_CONVERTER); + zend_string *const_UNSUPPORTED_CONVERTER_name = zend_string_init_interned("UNSUPPORTED_CONVERTER", sizeof("UNSUPPORTED_CONVERTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UNSUPPORTED_CONVERTER_name, &const_UNSUPPORTED_CONVERTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UNSUPPORTED_CONVERTER_name); + + zval const_SBCS_value; + ZVAL_LONG(&const_SBCS_value, UCNV_SBCS); + zend_string *const_SBCS_name = zend_string_init_interned("SBCS", sizeof("SBCS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SBCS_name, &const_SBCS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SBCS_name); + + zval const_DBCS_value; + ZVAL_LONG(&const_DBCS_value, UCNV_DBCS); + zend_string *const_DBCS_name = zend_string_init_interned("DBCS", sizeof("DBCS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DBCS_name, &const_DBCS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DBCS_name); + + zval const_MBCS_value; + ZVAL_LONG(&const_MBCS_value, UCNV_MBCS); + zend_string *const_MBCS_name = zend_string_init_interned("MBCS", sizeof("MBCS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MBCS_name, &const_MBCS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MBCS_name); + + zval const_LATIN_1_value; + ZVAL_LONG(&const_LATIN_1_value, UCNV_LATIN_1); + zend_string *const_LATIN_1_name = zend_string_init_interned("LATIN_1", sizeof("LATIN_1") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LATIN_1_name, &const_LATIN_1_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LATIN_1_name); + + zval const_UTF8_value; + ZVAL_LONG(&const_UTF8_value, UCNV_UTF8); + zend_string *const_UTF8_name = zend_string_init_interned("UTF8", sizeof("UTF8") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF8_name, &const_UTF8_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF8_name); + + zval const_UTF16_BigEndian_value; + ZVAL_LONG(&const_UTF16_BigEndian_value, UCNV_UTF16_BigEndian); + zend_string *const_UTF16_BigEndian_name = zend_string_init_interned("UTF16_BigEndian", sizeof("UTF16_BigEndian") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF16_BigEndian_name, &const_UTF16_BigEndian_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF16_BigEndian_name); + + zval const_UTF16_LittleEndian_value; + ZVAL_LONG(&const_UTF16_LittleEndian_value, UCNV_UTF16_LittleEndian); + zend_string *const_UTF16_LittleEndian_name = zend_string_init_interned("UTF16_LittleEndian", sizeof("UTF16_LittleEndian") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF16_LittleEndian_name, &const_UTF16_LittleEndian_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF16_LittleEndian_name); + + zval const_UTF32_BigEndian_value; + ZVAL_LONG(&const_UTF32_BigEndian_value, UCNV_UTF32_BigEndian); + zend_string *const_UTF32_BigEndian_name = zend_string_init_interned("UTF32_BigEndian", sizeof("UTF32_BigEndian") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF32_BigEndian_name, &const_UTF32_BigEndian_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF32_BigEndian_name); + + zval const_UTF32_LittleEndian_value; + ZVAL_LONG(&const_UTF32_LittleEndian_value, UCNV_UTF32_LittleEndian); + zend_string *const_UTF32_LittleEndian_name = zend_string_init_interned("UTF32_LittleEndian", sizeof("UTF32_LittleEndian") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF32_LittleEndian_name, &const_UTF32_LittleEndian_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF32_LittleEndian_name); + + zval const_EBCDIC_STATEFUL_value; + ZVAL_LONG(&const_EBCDIC_STATEFUL_value, UCNV_EBCDIC_STATEFUL); + zend_string *const_EBCDIC_STATEFUL_name = zend_string_init_interned("EBCDIC_STATEFUL", sizeof("EBCDIC_STATEFUL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EBCDIC_STATEFUL_name, &const_EBCDIC_STATEFUL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EBCDIC_STATEFUL_name); + + zval const_ISO_2022_value; + ZVAL_LONG(&const_ISO_2022_value, UCNV_ISO_2022); + zend_string *const_ISO_2022_name = zend_string_init_interned("ISO_2022", sizeof("ISO_2022") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ISO_2022_name, &const_ISO_2022_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ISO_2022_name); + + zval const_LMBCS_1_value; + ZVAL_LONG(&const_LMBCS_1_value, UCNV_LMBCS_1); + zend_string *const_LMBCS_1_name = zend_string_init_interned("LMBCS_1", sizeof("LMBCS_1") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_1_name, &const_LMBCS_1_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_1_name); + + zval const_LMBCS_2_value; + ZVAL_LONG(&const_LMBCS_2_value, UCNV_LMBCS_2); + zend_string *const_LMBCS_2_name = zend_string_init_interned("LMBCS_2", sizeof("LMBCS_2") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_2_name, &const_LMBCS_2_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_2_name); + + zval const_LMBCS_3_value; + ZVAL_LONG(&const_LMBCS_3_value, UCNV_LMBCS_3); + zend_string *const_LMBCS_3_name = zend_string_init_interned("LMBCS_3", sizeof("LMBCS_3") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_3_name, &const_LMBCS_3_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_3_name); + + zval const_LMBCS_4_value; + ZVAL_LONG(&const_LMBCS_4_value, UCNV_LMBCS_4); + zend_string *const_LMBCS_4_name = zend_string_init_interned("LMBCS_4", sizeof("LMBCS_4") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_4_name, &const_LMBCS_4_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_4_name); + + zval const_LMBCS_5_value; + ZVAL_LONG(&const_LMBCS_5_value, UCNV_LMBCS_5); + zend_string *const_LMBCS_5_name = zend_string_init_interned("LMBCS_5", sizeof("LMBCS_5") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_5_name, &const_LMBCS_5_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_5_name); + + zval const_LMBCS_6_value; + ZVAL_LONG(&const_LMBCS_6_value, UCNV_LMBCS_6); + zend_string *const_LMBCS_6_name = zend_string_init_interned("LMBCS_6", sizeof("LMBCS_6") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_6_name, &const_LMBCS_6_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_6_name); + + zval const_LMBCS_8_value; + ZVAL_LONG(&const_LMBCS_8_value, UCNV_LMBCS_8); + zend_string *const_LMBCS_8_name = zend_string_init_interned("LMBCS_8", sizeof("LMBCS_8") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_8_name, &const_LMBCS_8_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_8_name); + + zval const_LMBCS_11_value; + ZVAL_LONG(&const_LMBCS_11_value, UCNV_LMBCS_11); + zend_string *const_LMBCS_11_name = zend_string_init_interned("LMBCS_11", sizeof("LMBCS_11") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_11_name, &const_LMBCS_11_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_11_name); + + zval const_LMBCS_16_value; + ZVAL_LONG(&const_LMBCS_16_value, UCNV_LMBCS_16); + zend_string *const_LMBCS_16_name = zend_string_init_interned("LMBCS_16", sizeof("LMBCS_16") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_16_name, &const_LMBCS_16_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_16_name); + + zval const_LMBCS_17_value; + ZVAL_LONG(&const_LMBCS_17_value, UCNV_LMBCS_17); + zend_string *const_LMBCS_17_name = zend_string_init_interned("LMBCS_17", sizeof("LMBCS_17") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_17_name, &const_LMBCS_17_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_17_name); + + zval const_LMBCS_18_value; + ZVAL_LONG(&const_LMBCS_18_value, UCNV_LMBCS_18); + zend_string *const_LMBCS_18_name = zend_string_init_interned("LMBCS_18", sizeof("LMBCS_18") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_18_name, &const_LMBCS_18_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_18_name); + + zval const_LMBCS_19_value; + ZVAL_LONG(&const_LMBCS_19_value, UCNV_LMBCS_19); + zend_string *const_LMBCS_19_name = zend_string_init_interned("LMBCS_19", sizeof("LMBCS_19") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_19_name, &const_LMBCS_19_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_19_name); + + zval const_LMBCS_LAST_value; + ZVAL_LONG(&const_LMBCS_LAST_value, UCNV_LMBCS_LAST); + zend_string *const_LMBCS_LAST_name = zend_string_init_interned("LMBCS_LAST", sizeof("LMBCS_LAST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LMBCS_LAST_name, &const_LMBCS_LAST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LMBCS_LAST_name); + + zval const_HZ_value; + ZVAL_LONG(&const_HZ_value, UCNV_HZ); + zend_string *const_HZ_name = zend_string_init_interned("HZ", sizeof("HZ") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HZ_name, &const_HZ_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HZ_name); + + zval const_SCSU_value; + ZVAL_LONG(&const_SCSU_value, UCNV_SCSU); + zend_string *const_SCSU_name = zend_string_init_interned("SCSU", sizeof("SCSU") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCSU_name, &const_SCSU_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCSU_name); + + zval const_ISCII_value; + ZVAL_LONG(&const_ISCII_value, UCNV_ISCII); + zend_string *const_ISCII_name = zend_string_init_interned("ISCII", sizeof("ISCII") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ISCII_name, &const_ISCII_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ISCII_name); + + zval const_US_ASCII_value; + ZVAL_LONG(&const_US_ASCII_value, UCNV_US_ASCII); + zend_string *const_US_ASCII_name = zend_string_init_interned("US_ASCII", sizeof("US_ASCII") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_US_ASCII_name, &const_US_ASCII_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_US_ASCII_name); + + zval const_UTF7_value; + ZVAL_LONG(&const_UTF7_value, UCNV_UTF7); + zend_string *const_UTF7_name = zend_string_init_interned("UTF7", sizeof("UTF7") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF7_name, &const_UTF7_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF7_name); + + zval const_BOCU1_value; + ZVAL_LONG(&const_BOCU1_value, UCNV_BOCU1); + zend_string *const_BOCU1_name = zend_string_init_interned("BOCU1", sizeof("BOCU1") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BOCU1_name, &const_BOCU1_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BOCU1_name); + + zval const_UTF16_value; + ZVAL_LONG(&const_UTF16_value, UCNV_UTF16); + zend_string *const_UTF16_name = zend_string_init_interned("UTF16", sizeof("UTF16") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF16_name, &const_UTF16_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF16_name); + + zval const_UTF32_value; + ZVAL_LONG(&const_UTF32_value, UCNV_UTF32); + zend_string *const_UTF32_name = zend_string_init_interned("UTF32", sizeof("UTF32") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UTF32_name, &const_UTF32_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UTF32_name); + + zval const_CESU8_value; + ZVAL_LONG(&const_CESU8_value, UCNV_CESU8); + zend_string *const_CESU8_name = zend_string_init_interned("CESU8", sizeof("CESU8") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CESU8_name, &const_CESU8_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CESU8_name); + + zval const_IMAP_MAILBOX_value; + ZVAL_LONG(&const_IMAP_MAILBOX_value, UCNV_IMAP_MAILBOX); + zend_string *const_IMAP_MAILBOX_name = zend_string_init_interned("IMAP_MAILBOX", sizeof("IMAP_MAILBOX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_IMAP_MAILBOX_name, &const_IMAP_MAILBOX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_IMAP_MAILBOX_name); + return class_entry; } diff --git a/ext/intl/dateformat/dateformat.c b/ext/intl/dateformat/dateformat.c index 784e972a96b9f..df4a886074463 100644 --- a/ext/intl/dateformat/dateformat.c +++ b/ext/intl/dateformat/dateformat.c @@ -21,51 +21,6 @@ #include "dateformat_class.h" #include "dateformat.h" -/* {{{ dateformat_register_constants - * Register constants common for the both (OO and procedural) - * APIs. - */ -void dateformat_register_constants( INIT_FUNC_ARGS ) -{ - if( IntlDateFormatter_ce_ptr == NULL) { - zend_error(E_ERROR, "DateFormat class not defined"); - return; - } - - #define DATEFORMATTER_EXPOSE_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_PERSISTENT | CONST_CS) - #define DATEFORMATTER_EXPOSE_CLASS_CONST(x) zend_declare_class_constant_long( IntlDateFormatter_ce_ptr, ZEND_STRS( #x ) - 1, UDAT_##x ); - #define DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST(name, value) zend_declare_class_constant_long( IntlDateFormatter_ce_ptr, ZEND_STRS( name ) - 1, value ); - - #define DATEFORMATTER_EXPOSE_UCAL_CLASS_CONST(x) zend_declare_class_constant_long( IntlDateFormatter_ce_ptr, ZEND_STRS( #x ) - 1, UCAL_##x ); - - /* UDateFormatStyle constants */ - DATEFORMATTER_EXPOSE_CLASS_CONST( FULL ); - DATEFORMATTER_EXPOSE_CLASS_CONST( LONG ); - DATEFORMATTER_EXPOSE_CLASS_CONST( MEDIUM ); - DATEFORMATTER_EXPOSE_CLASS_CONST( SHORT ); - DATEFORMATTER_EXPOSE_CLASS_CONST( NONE ); - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_FULL", UDAT_FULL_RELATIVE ); - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_LONG", UDAT_LONG_RELATIVE ); - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_MEDIUM", UDAT_MEDIUM_RELATIVE ); - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "RELATIVE_SHORT", UDAT_SHORT_RELATIVE ); - -/* - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "GREGORIAN", DATEF_GREGORIAN ); - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "CUSTOMARY", DATEF_CUSTOMARY ); - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "BUDDHIST", DATEF_BUDDHIST ); - DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "JAPANESE_IMPERIAL", DATEF_JAPANESE_IMPERIAL ); -*/ - - DATEFORMATTER_EXPOSE_UCAL_CLASS_CONST( GREGORIAN ); - DATEFORMATTER_EXPOSE_UCAL_CLASS_CONST( TRADITIONAL ); - - #undef DATEFORMATTER_EXPOSE_UCAL_CLASS_CONST - #undef DATEFORMATTER_EXPOSE_CUSTOM_CLASS_CONST - #undef DATEFORMATTER_EXPOSE_CLASS_CONST - #undef DATEFORMATTER_EXPOSE_CONST -} -/* }}} */ - /* {{{ Get formatter's last error code. */ PHP_FUNCTION( datefmt_get_error_code ) { diff --git a/ext/intl/dateformat/dateformat.h b/ext/intl/dateformat/dateformat.h index 98da8185762a5..3e0b14cf6c0de 100644 --- a/ext/intl/dateformat/dateformat.h +++ b/ext/intl/dateformat/dateformat.h @@ -16,8 +16,6 @@ #include -void dateformat_register_constants( INIT_FUNC_ARGS ); - /* These are not necessary at this point of time #define DATEF_GREGORIAN 1 diff --git a/ext/intl/dateformat/dateformat.stub.php b/ext/intl/dateformat/dateformat.stub.php index 0ea15225f5a25..ed49bcc0d89a9 100644 --- a/ext/intl/dateformat/dateformat.stub.php +++ b/ext/intl/dateformat/dateformat.stub.php @@ -5,6 +5,63 @@ /** @not-serializable */ class IntlDateFormatter { + /** + * @var int + * @cvalue UDAT_FULL + */ + public const FULL = UNKNOWN; + /** + * @var int + * @cvalue UDAT_LONG + */ + public const LONG = UNKNOWN; + /** + * @var int + * @cvalue UDAT_MEDIUM + */ + public const MEDIUM = UNKNOWN; + /** + * @var int + * @cvalue UDAT_SHORT + */ + public const SHORT = UNKNOWN; + /** + * @var int + * @cvalue UDAT_NONE + */ + public const NONE = UNKNOWN; + /** + * @var int + * @cvalue UDAT_FULL_RELATIVE + */ + public const RELATIVE_FULL = UNKNOWN; + /** + * @var int + * @cvalue UDAT_LONG_RELATIVE + */ + public const RELATIVE_LONG = UNKNOWN; + /** + * @var int + * @cvalue UDAT_MEDIUM_RELATIVE + */ + public const RELATIVE_MEDIUM = UNKNOWN; + /** + * @var int + * @cvalue UDAT_SHORT_RELATIVE + */ + public const RELATIVE_SHORT = UNKNOWN; + + /** + * @var int + * @cvalue UCAL_GREGORIAN + */ + public const GREGORIAN = UNKNOWN; + /** + * @var int + * @cvalue UCAL_TRADITIONAL + */ + public const TRADITIONAL = UNKNOWN; + /** * @param IntlTimeZone|DateTimeZone|string|null $timezone * @param IntlCalendar|int|null $calendar @@ -119,7 +176,7 @@ public function isLenient(): bool {} public function format($datetime): string|false {} /** - * @param IntlCalendar|DateTime $datetime + * @param IntlCalendar|DateTimeInterface $datetime * @param array|int|string|null $format * @tentative-return-type * @alias datefmt_format_object diff --git a/ext/intl/dateformat/dateformat_arginfo.h b/ext/intl/dateformat/dateformat_arginfo.h index 9cb936f530992..6026077c1ac23 100644 --- a/ext/intl/dateformat/dateformat_arginfo.h +++ b/ext/intl/dateformat/dateformat_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: c7c0d08433ab9dbf59777072550895d85294aad4 */ + * Stub hash: cefec46af242e6372a923dea0e1d2cf22da7ef3e */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlDateFormatter___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 1) @@ -143,5 +143,71 @@ static zend_class_entry *register_class_IntlDateFormatter(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_FULL_value; + ZVAL_LONG(&const_FULL_value, UDAT_FULL); + zend_string *const_FULL_name = zend_string_init_interned("FULL", sizeof("FULL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FULL_name, &const_FULL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FULL_name); + + zval const_LONG_value; + ZVAL_LONG(&const_LONG_value, UDAT_LONG); + zend_string *const_LONG_name = zend_string_init_interned("LONG", sizeof("LONG") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LONG_name, &const_LONG_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LONG_name); + + zval const_MEDIUM_value; + ZVAL_LONG(&const_MEDIUM_value, UDAT_MEDIUM); + zend_string *const_MEDIUM_name = zend_string_init_interned("MEDIUM", sizeof("MEDIUM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MEDIUM_name, &const_MEDIUM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MEDIUM_name); + + zval const_SHORT_value; + ZVAL_LONG(&const_SHORT_value, UDAT_SHORT); + zend_string *const_SHORT_name = zend_string_init_interned("SHORT", sizeof("SHORT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SHORT_name, &const_SHORT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SHORT_name); + + zval const_NONE_value; + ZVAL_LONG(&const_NONE_value, UDAT_NONE); + zend_string *const_NONE_name = zend_string_init_interned("NONE", sizeof("NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NONE_name, &const_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NONE_name); + + zval const_RELATIVE_FULL_value; + ZVAL_LONG(&const_RELATIVE_FULL_value, UDAT_FULL_RELATIVE); + zend_string *const_RELATIVE_FULL_name = zend_string_init_interned("RELATIVE_FULL", sizeof("RELATIVE_FULL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_RELATIVE_FULL_name, &const_RELATIVE_FULL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_RELATIVE_FULL_name); + + zval const_RELATIVE_LONG_value; + ZVAL_LONG(&const_RELATIVE_LONG_value, UDAT_LONG_RELATIVE); + zend_string *const_RELATIVE_LONG_name = zend_string_init_interned("RELATIVE_LONG", sizeof("RELATIVE_LONG") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_RELATIVE_LONG_name, &const_RELATIVE_LONG_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_RELATIVE_LONG_name); + + zval const_RELATIVE_MEDIUM_value; + ZVAL_LONG(&const_RELATIVE_MEDIUM_value, UDAT_MEDIUM_RELATIVE); + zend_string *const_RELATIVE_MEDIUM_name = zend_string_init_interned("RELATIVE_MEDIUM", sizeof("RELATIVE_MEDIUM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_RELATIVE_MEDIUM_name, &const_RELATIVE_MEDIUM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_RELATIVE_MEDIUM_name); + + zval const_RELATIVE_SHORT_value; + ZVAL_LONG(&const_RELATIVE_SHORT_value, UDAT_SHORT_RELATIVE); + zend_string *const_RELATIVE_SHORT_name = zend_string_init_interned("RELATIVE_SHORT", sizeof("RELATIVE_SHORT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_RELATIVE_SHORT_name, &const_RELATIVE_SHORT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_RELATIVE_SHORT_name); + + zval const_GREGORIAN_value; + ZVAL_LONG(&const_GREGORIAN_value, UCAL_GREGORIAN); + zend_string *const_GREGORIAN_name = zend_string_init_interned("GREGORIAN", sizeof("GREGORIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GREGORIAN_name, &const_GREGORIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GREGORIAN_name); + + zval const_TRADITIONAL_value; + ZVAL_LONG(&const_TRADITIONAL_value, UCAL_TRADITIONAL); + zend_string *const_TRADITIONAL_name = zend_string_init_interned("TRADITIONAL", sizeof("TRADITIONAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TRADITIONAL_name, &const_TRADITIONAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TRADITIONAL_name); + return class_entry; } diff --git a/ext/intl/dateformat/dateformat_class.c b/ext/intl/dateformat/dateformat_class.c index c020d69d5976f..f547640efbb0c 100644 --- a/ext/intl/dateformat/dateformat_class.c +++ b/ext/intl/dateformat/dateformat_class.c @@ -57,8 +57,6 @@ zend_object *IntlDateFormatter_object_create(zend_class_entry *ce) intern->calendar = -1; intern->requested_locale = NULL; - intern->zo.handlers = &IntlDateFormatter_handlers; - return &intern->zo; } /* }}} */ @@ -104,6 +102,7 @@ void dateformat_register_IntlDateFormatter_class( void ) /* Create and register 'IntlDateFormatter' class. */ IntlDateFormatter_ce_ptr = register_class_IntlDateFormatter(); IntlDateFormatter_ce_ptr->create_object = IntlDateFormatter_object_create; + IntlDateFormatter_ce_ptr->default_object_handlers = &IntlDateFormatter_handlers; memcpy(&IntlDateFormatter_handlers, &std_object_handlers, sizeof IntlDateFormatter_handlers); diff --git a/ext/intl/dateformat/dateformat_create.h b/ext/intl/dateformat/dateformat_create.h index 9dc0793a79718..a15828e7794c1 100644 --- a/ext/intl/dateformat/dateformat_create.h +++ b/ext/intl/dateformat/dateformat_create.h @@ -16,6 +16,4 @@ #include -void dateformat_register_constants( INIT_FUNC_ARGS ); - #endif // DATE_FORMATTER_H diff --git a/ext/intl/dateformat/dateformat_format_object.cpp b/ext/intl/dateformat/dateformat_format_object.cpp index 6afc9e6dca503..9e4697902e62a 100644 --- a/ext/intl/dateformat/dateformat_format_object.cpp +++ b/ext/intl/dateformat/dateformat_format_object.cpp @@ -181,7 +181,7 @@ U_CFUNC PHP_FUNCTION(datefmt_format_object) } } else { intl_error_set(NULL, status, "datefmt_format_object: the passed object " - "must be an instance of either IntlCalendar or DateTime", + "must be an instance of either IntlCalendar or DateTimeInterface", 0); RETURN_FALSE; } diff --git a/ext/intl/dateformat/datepatterngenerator_class.cpp b/ext/intl/dateformat/datepatterngenerator_class.cpp index 4c567beb1a206..c77398deb983f 100644 --- a/ext/intl/dateformat/datepatterngenerator_class.cpp +++ b/ext/intl/dateformat/datepatterngenerator_class.cpp @@ -98,8 +98,6 @@ static zend_object *IntlDatePatternGenerator_object_create(zend_class_entry *ce) object_properties_init(&intern->zo, ce); IntlDatePatternGenerator_object_init(intern); - intern->zo.handlers = &IntlDatePatternGenerator_handlers; - return &intern->zo; } @@ -115,6 +113,7 @@ void dateformat_register_IntlDatePatternGenerator_class( void ) /* Create and register 'IntlDatePatternGenerator' class. */ IntlDatePatternGenerator_ce_ptr = register_class_IntlDatePatternGenerator(); IntlDatePatternGenerator_ce_ptr->create_object = IntlDatePatternGenerator_object_create; + IntlDatePatternGenerator_ce_ptr->default_object_handlers = &IntlDatePatternGenerator_handlers; memcpy(&IntlDatePatternGenerator_handlers, &std_object_handlers, sizeof IntlDatePatternGenerator_handlers); diff --git a/ext/intl/formatter/formatter.c b/ext/intl/formatter/formatter.c deleted file mode 100644 index 451008b5502bd..0000000000000 --- a/ext/intl/formatter/formatter.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable 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: Stanislav Malyshev | - +----------------------------------------------------------------------+ - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include -#include -#include - -#include "php_intl.h" -#include "formatter_class.h" -#include "formatter_format.h" - -/* {{{ formatter_register_constants - * Register constants common for the both (OO and procedural) - * APIs. - */ -void formatter_register_constants( INIT_FUNC_ARGS ) -{ - if( NumberFormatter_ce_ptr == NULL) { - zend_error(E_ERROR, "NumberFormatter class not defined"); - } - - #define FORMATTER_EXPOSE_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_PERSISTENT | CONST_CS) - #define FORMATTER_EXPOSE_CLASS_CONST(x) zend_declare_class_constant_long( NumberFormatter_ce_ptr, ZEND_STRS( #x ) - 1, UNUM_##x ); - #define FORMATTER_EXPOSE_CUSTOM_CLASS_CONST(name, value) zend_declare_class_constant_long( NumberFormatter_ce_ptr, ZEND_STRS( name ) - 1, value ); - - /* UNumberFormatStyle constants */ - FORMATTER_EXPOSE_CLASS_CONST( PATTERN_DECIMAL ); - FORMATTER_EXPOSE_CLASS_CONST( DECIMAL ); - FORMATTER_EXPOSE_CLASS_CONST( CURRENCY ); - FORMATTER_EXPOSE_CLASS_CONST( PERCENT ); - FORMATTER_EXPOSE_CLASS_CONST( SCIENTIFIC ); - FORMATTER_EXPOSE_CLASS_CONST( SPELLOUT ); - FORMATTER_EXPOSE_CLASS_CONST( ORDINAL ); - FORMATTER_EXPOSE_CLASS_CONST( DURATION ); - FORMATTER_EXPOSE_CLASS_CONST( PATTERN_RULEBASED ); - FORMATTER_EXPOSE_CLASS_CONST( IGNORE ); -#if U_ICU_VERSION_MAJOR_NUM >= 53 - FORMATTER_EXPOSE_CLASS_CONST( CURRENCY_ACCOUNTING ); -#endif - FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "DEFAULT_STYLE", UNUM_DEFAULT ); - - /* UNumberFormatRoundingMode */ - FORMATTER_EXPOSE_CLASS_CONST( ROUND_CEILING ); - FORMATTER_EXPOSE_CLASS_CONST( ROUND_FLOOR ); - FORMATTER_EXPOSE_CLASS_CONST( ROUND_DOWN ); - FORMATTER_EXPOSE_CLASS_CONST( ROUND_UP ); - FORMATTER_EXPOSE_CLASS_CONST( ROUND_HALFEVEN ); - FORMATTER_EXPOSE_CLASS_CONST( ROUND_HALFDOWN ); - FORMATTER_EXPOSE_CLASS_CONST( ROUND_HALFUP ); - - /* UNumberFormatPadPosition */ - FORMATTER_EXPOSE_CLASS_CONST( PAD_BEFORE_PREFIX ); - FORMATTER_EXPOSE_CLASS_CONST( PAD_AFTER_PREFIX ); - FORMATTER_EXPOSE_CLASS_CONST( PAD_BEFORE_SUFFIX ); - FORMATTER_EXPOSE_CLASS_CONST( PAD_AFTER_SUFFIX ); - - /* UNumberFormatAttribute */ - FORMATTER_EXPOSE_CLASS_CONST( PARSE_INT_ONLY ); - FORMATTER_EXPOSE_CLASS_CONST( GROUPING_USED ); - FORMATTER_EXPOSE_CLASS_CONST( DECIMAL_ALWAYS_SHOWN ); - FORMATTER_EXPOSE_CLASS_CONST( MAX_INTEGER_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( MIN_INTEGER_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( INTEGER_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( MAX_FRACTION_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( MIN_FRACTION_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( FRACTION_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( MULTIPLIER ); - FORMATTER_EXPOSE_CLASS_CONST( GROUPING_SIZE ); - FORMATTER_EXPOSE_CLASS_CONST( ROUNDING_MODE ); - FORMATTER_EXPOSE_CLASS_CONST( ROUNDING_INCREMENT ); - FORMATTER_EXPOSE_CLASS_CONST( FORMAT_WIDTH ); - FORMATTER_EXPOSE_CLASS_CONST( PADDING_POSITION ); - FORMATTER_EXPOSE_CLASS_CONST( SECONDARY_GROUPING_SIZE ); - FORMATTER_EXPOSE_CLASS_CONST( SIGNIFICANT_DIGITS_USED ); - FORMATTER_EXPOSE_CLASS_CONST( MIN_SIGNIFICANT_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( MAX_SIGNIFICANT_DIGITS ); - FORMATTER_EXPOSE_CLASS_CONST( LENIENT_PARSE ); - - /* UNumberFormatTextAttribute */ - FORMATTER_EXPOSE_CLASS_CONST( POSITIVE_PREFIX ); - FORMATTER_EXPOSE_CLASS_CONST( POSITIVE_SUFFIX ); - FORMATTER_EXPOSE_CLASS_CONST( NEGATIVE_PREFIX ); - FORMATTER_EXPOSE_CLASS_CONST( NEGATIVE_SUFFIX ); - FORMATTER_EXPOSE_CLASS_CONST( PADDING_CHARACTER ); - FORMATTER_EXPOSE_CLASS_CONST( CURRENCY_CODE ); - FORMATTER_EXPOSE_CLASS_CONST( DEFAULT_RULESET ); - FORMATTER_EXPOSE_CLASS_CONST( PUBLIC_RULESETS ); - - /* UNumberFormatSymbol */ - FORMATTER_EXPOSE_CLASS_CONST( DECIMAL_SEPARATOR_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( GROUPING_SEPARATOR_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( PATTERN_SEPARATOR_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( PERCENT_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( ZERO_DIGIT_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( DIGIT_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( MINUS_SIGN_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( PLUS_SIGN_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( CURRENCY_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( INTL_CURRENCY_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( MONETARY_SEPARATOR_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( EXPONENTIAL_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( PERMILL_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( PAD_ESCAPE_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( INFINITY_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( NAN_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( SIGNIFICANT_DIGIT_SYMBOL ); - FORMATTER_EXPOSE_CLASS_CONST( MONETARY_GROUPING_SEPARATOR_SYMBOL ); - - FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_DEFAULT", FORMAT_TYPE_DEFAULT ); - FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_INT32", FORMAT_TYPE_INT32 ); - FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_INT64", FORMAT_TYPE_INT64 ); - FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_DOUBLE", FORMAT_TYPE_DOUBLE ); - FORMATTER_EXPOSE_CUSTOM_CLASS_CONST( "TYPE_CURRENCY", FORMAT_TYPE_CURRENCY ); - - #undef FORMATTER_EXPOSE_CUSTOM_CLASS_CONST - #undef FORMATTER_EXPOSE_CLASS_CONST - #undef FORMATTER_EXPOSE_CONST -} -/* }}} */ diff --git a/ext/intl/formatter/formatter.h b/ext/intl/formatter/formatter.h deleted file mode 100644 index 3f1c6da438925..0000000000000 --- a/ext/intl/formatter/formatter.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable 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: Stanislav Malyshev | - +----------------------------------------------------------------------+ - */ - -#ifndef FORMATTER_FORMATTER_H -#define FORMATTER_FORMATTER_H - -#include - -void formatter_register_constants( INIT_FUNC_ARGS ); - -#endif // FORMATTER_FORMATTER_H diff --git a/ext/intl/formatter/formatter.stub.php b/ext/intl/formatter/formatter.stub.php index 6cf101e340694..da6a6e3c5a6c2 100644 --- a/ext/intl/formatter/formatter.stub.php +++ b/ext/intl/formatter/formatter.stub.php @@ -5,6 +5,397 @@ /** @not-serializable */ class NumberFormatter { + /* UNumberFormatStyle constants */ + + /** + * @var int + * @cvalue UNUM_PATTERN_DECIMAL + */ + public const PATTERN_DECIMAL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_DECIMAL + */ + public const DECIMAL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_CURRENCY + */ + public const CURRENCY = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PERCENT + */ + public const PERCENT = UNKNOWN; + /** + * @var int + * @cvalue UNUM_SCIENTIFIC + */ + public const SCIENTIFIC = UNKNOWN; + /** + * @var int + * @cvalue UNUM_SPELLOUT + */ + public const SPELLOUT = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ORDINAL + */ + public const ORDINAL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_DURATION + */ + public const DURATION = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PATTERN_RULEBASED + */ + public const PATTERN_RULEBASED = UNKNOWN; + /** + * @var int + * @cvalue UNUM_IGNORE + */ + public const IGNORE = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 53 + /** + * @var int + * @cvalue UNUM_CURRENCY_ACCOUNTING + */ + public const CURRENCY_ACCOUNTING = UNKNOWN; +#endif + /** + * @var int + * @cvalue UNUM_DEFAULT + */ + public const DEFAULT_STYLE = UNKNOWN; + + /* UNumberFormatRoundingMode */ + + /** + * @var int + * @cvalue UNUM_ROUND_CEILING + */ + public const ROUND_CEILING = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUND_FLOOR + */ + public const ROUND_FLOOR = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUND_DOWN + */ + public const ROUND_DOWN = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUND_UP + */ + public const ROUND_UP = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUND_HALFEVEN + */ + public const ROUND_HALFEVEN = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUND_HALFDOWN + */ + public const ROUND_HALFDOWN = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUND_HALFUP + */ + public const ROUND_HALFUP = UNKNOWN; + + /* UNumberFormatPadPosition */ + + /** + * @var int + * @cvalue UNUM_PAD_BEFORE_PREFIX + */ + public const PAD_BEFORE_PREFIX = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PAD_AFTER_PREFIX + */ + public const PAD_AFTER_PREFIX = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PAD_BEFORE_SUFFIX + */ + public const PAD_BEFORE_SUFFIX = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PAD_AFTER_SUFFIX + */ + public const PAD_AFTER_SUFFIX = UNKNOWN; + + /* UNumberFormatAttribute */ + + /** + * @var int + * @cvalue UNUM_PARSE_INT_ONLY + */ + public const PARSE_INT_ONLY = UNKNOWN; + /** + * @var int + * @cvalue UNUM_GROUPING_USED + */ + public const GROUPING_USED = UNKNOWN; + /** + * @var int + * @cvalue UNUM_DECIMAL_ALWAYS_SHOWN + */ + public const DECIMAL_ALWAYS_SHOWN = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MAX_INTEGER_DIGITS + */ + public const MAX_INTEGER_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MIN_INTEGER_DIGITS + */ + public const MIN_INTEGER_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_INTEGER_DIGITS + */ + public const INTEGER_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MAX_FRACTION_DIGITS + */ + public const MAX_FRACTION_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MIN_FRACTION_DIGITS + */ + public const MIN_FRACTION_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_FRACTION_DIGITS + */ + public const FRACTION_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MULTIPLIER + */ + public const MULTIPLIER = UNKNOWN; + /** + * @var int + * @cvalue UNUM_GROUPING_SIZE + */ + public const GROUPING_SIZE = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUNDING_MODE + */ + public const ROUNDING_MODE = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ROUNDING_INCREMENT + */ + public const ROUNDING_INCREMENT = UNKNOWN; + /** + * @var int + * @cvalue UNUM_FORMAT_WIDTH + */ + public const FORMAT_WIDTH = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PADDING_POSITION + */ + public const PADDING_POSITION = UNKNOWN; + /** + * @var int + * @cvalue UNUM_SECONDARY_GROUPING_SIZE + */ + public const SECONDARY_GROUPING_SIZE = UNKNOWN; + /** + * @var int + * @cvalue UNUM_SIGNIFICANT_DIGITS_USED + */ + public const SIGNIFICANT_DIGITS_USED = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MIN_SIGNIFICANT_DIGITS + */ + public const MIN_SIGNIFICANT_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MAX_SIGNIFICANT_DIGITS + */ + public const MAX_SIGNIFICANT_DIGITS = UNKNOWN; + /** + * @var int + * @cvalue UNUM_LENIENT_PARSE + */ + public const LENIENT_PARSE = UNKNOWN; + + /* UNumberFormatTextAttribute */ + + /** + * @var int + * @cvalue UNUM_POSITIVE_PREFIX + */ + public const POSITIVE_PREFIX = UNKNOWN; + /** + * @var int + * @cvalue UNUM_POSITIVE_SUFFIX + */ + public const POSITIVE_SUFFIX = UNKNOWN; + /** + * @var int + * @cvalue UNUM_NEGATIVE_PREFIX + */ + public const NEGATIVE_PREFIX = UNKNOWN; + /** + * @var int + * @cvalue UNUM_NEGATIVE_SUFFIX + */ + public const NEGATIVE_SUFFIX = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PADDING_CHARACTER + */ + public const PADDING_CHARACTER = UNKNOWN; + /** + * @var int + * @cvalue UNUM_CURRENCY_CODE + */ + public const CURRENCY_CODE = UNKNOWN; + /** + * @var int + * @cvalue UNUM_DEFAULT_RULESET + */ + public const DEFAULT_RULESET = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PUBLIC_RULESETS + */ + public const PUBLIC_RULESETS = UNKNOWN; + + /* UNumberFormatSymbol */ + + /** + * @var int + * @cvalue UNUM_DECIMAL_SEPARATOR_SYMBOL + */ + public const DECIMAL_SEPARATOR_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_GROUPING_SEPARATOR_SYMBOL + */ + public const GROUPING_SEPARATOR_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PATTERN_SEPARATOR_SYMBOL + */ + public const PATTERN_SEPARATOR_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PERCENT_SYMBOL + */ + public const PERCENT_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_ZERO_DIGIT_SYMBOL + */ + public const ZERO_DIGIT_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_DIGIT_SYMBOL + */ + public const DIGIT_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MINUS_SIGN_SYMBOL + */ + public const MINUS_SIGN_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PLUS_SIGN_SYMBOL + */ + public const PLUS_SIGN_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_CURRENCY_SYMBOL + */ + public const CURRENCY_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_INTL_CURRENCY_SYMBOL + */ + public const INTL_CURRENCY_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MONETARY_SEPARATOR_SYMBOL + */ + public const MONETARY_SEPARATOR_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_EXPONENTIAL_SYMBOL + */ + public const EXPONENTIAL_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PERMILL_SYMBOL + */ + public const PERMILL_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_PAD_ESCAPE_SYMBOL + */ + public const PAD_ESCAPE_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_INFINITY_SYMBOL + */ + public const INFINITY_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_NAN_SYMBOL + */ + public const NAN_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_SIGNIFICANT_DIGIT_SYMBOL + */ + public const SIGNIFICANT_DIGIT_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL + */ + public const MONETARY_GROUPING_SEPARATOR_SYMBOL = UNKNOWN; + + /** + * @var int + * @cvalue FORMAT_TYPE_DEFAULT + */ + public const TYPE_DEFAULT = UNKNOWN; + /** + * @var int + * @cvalue FORMAT_TYPE_INT32 + */ + public const TYPE_INT32 = UNKNOWN; + /** + * @var int + * @cvalue FORMAT_TYPE_INT64 + */ + public const TYPE_INT64 = UNKNOWN; + /** + * @var int + * @cvalue FORMAT_TYPE_DOUBLE + */ + public const TYPE_DOUBLE = UNKNOWN; + /** + * @var int + * @cvalue FORMAT_TYPE_CURRENCY + */ + public const TYPE_CURRENCY = UNKNOWN; + public function __construct(string $locale, int $style, ?string $pattern = null) {} /** diff --git a/ext/intl/formatter/formatter_arginfo.h b/ext/intl/formatter/formatter_arginfo.h index 432ced976bdf6..3488b025c725c 100644 --- a/ext/intl/formatter/formatter_arginfo.h +++ b/ext/intl/formatter/formatter_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: f76ad76b08b7ca47883659fabfcc0882a2820c43 */ + * Stub hash: de64db0e66d2113dd10c556cd61324a7a7952973 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_NumberFormatter___construct, 0, 0, 2) ZEND_ARG_TYPE_INFO(0, locale, IS_STRING, 0) @@ -128,5 +128,451 @@ static zend_class_entry *register_class_NumberFormatter(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_PATTERN_DECIMAL_value; + ZVAL_LONG(&const_PATTERN_DECIMAL_value, UNUM_PATTERN_DECIMAL); + zend_string *const_PATTERN_DECIMAL_name = zend_string_init_interned("PATTERN_DECIMAL", sizeof("PATTERN_DECIMAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PATTERN_DECIMAL_name, &const_PATTERN_DECIMAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PATTERN_DECIMAL_name); + + zval const_DECIMAL_value; + ZVAL_LONG(&const_DECIMAL_value, UNUM_DECIMAL); + zend_string *const_DECIMAL_name = zend_string_init_interned("DECIMAL", sizeof("DECIMAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DECIMAL_name, &const_DECIMAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DECIMAL_name); + + zval const_CURRENCY_value; + ZVAL_LONG(&const_CURRENCY_value, UNUM_CURRENCY); + zend_string *const_CURRENCY_name = zend_string_init_interned("CURRENCY", sizeof("CURRENCY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CURRENCY_name, &const_CURRENCY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CURRENCY_name); + + zval const_PERCENT_value; + ZVAL_LONG(&const_PERCENT_value, UNUM_PERCENT); + zend_string *const_PERCENT_name = zend_string_init_interned("PERCENT", sizeof("PERCENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PERCENT_name, &const_PERCENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PERCENT_name); + + zval const_SCIENTIFIC_value; + ZVAL_LONG(&const_SCIENTIFIC_value, UNUM_SCIENTIFIC); + zend_string *const_SCIENTIFIC_name = zend_string_init_interned("SCIENTIFIC", sizeof("SCIENTIFIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SCIENTIFIC_name, &const_SCIENTIFIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SCIENTIFIC_name); + + zval const_SPELLOUT_value; + ZVAL_LONG(&const_SPELLOUT_value, UNUM_SPELLOUT); + zend_string *const_SPELLOUT_name = zend_string_init_interned("SPELLOUT", sizeof("SPELLOUT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SPELLOUT_name, &const_SPELLOUT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SPELLOUT_name); + + zval const_ORDINAL_value; + ZVAL_LONG(&const_ORDINAL_value, UNUM_ORDINAL); + zend_string *const_ORDINAL_name = zend_string_init_interned("ORDINAL", sizeof("ORDINAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ORDINAL_name, &const_ORDINAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ORDINAL_name); + + zval const_DURATION_value; + ZVAL_LONG(&const_DURATION_value, UNUM_DURATION); + zend_string *const_DURATION_name = zend_string_init_interned("DURATION", sizeof("DURATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DURATION_name, &const_DURATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DURATION_name); + + zval const_PATTERN_RULEBASED_value; + ZVAL_LONG(&const_PATTERN_RULEBASED_value, UNUM_PATTERN_RULEBASED); + zend_string *const_PATTERN_RULEBASED_name = zend_string_init_interned("PATTERN_RULEBASED", sizeof("PATTERN_RULEBASED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PATTERN_RULEBASED_name, &const_PATTERN_RULEBASED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PATTERN_RULEBASED_name); + + zval const_IGNORE_value; + ZVAL_LONG(&const_IGNORE_value, UNUM_IGNORE); + zend_string *const_IGNORE_name = zend_string_init_interned("IGNORE", sizeof("IGNORE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_IGNORE_name, &const_IGNORE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_IGNORE_name); +#if U_ICU_VERSION_MAJOR_NUM >= 53 + + zval const_CURRENCY_ACCOUNTING_value; + ZVAL_LONG(&const_CURRENCY_ACCOUNTING_value, UNUM_CURRENCY_ACCOUNTING); + zend_string *const_CURRENCY_ACCOUNTING_name = zend_string_init_interned("CURRENCY_ACCOUNTING", sizeof("CURRENCY_ACCOUNTING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CURRENCY_ACCOUNTING_name, &const_CURRENCY_ACCOUNTING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CURRENCY_ACCOUNTING_name); +#endif + + zval const_DEFAULT_STYLE_value; + ZVAL_LONG(&const_DEFAULT_STYLE_value, UNUM_DEFAULT); + zend_string *const_DEFAULT_STYLE_name = zend_string_init_interned("DEFAULT_STYLE", sizeof("DEFAULT_STYLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DEFAULT_STYLE_name, &const_DEFAULT_STYLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DEFAULT_STYLE_name); + + zval const_ROUND_CEILING_value; + ZVAL_LONG(&const_ROUND_CEILING_value, UNUM_ROUND_CEILING); + zend_string *const_ROUND_CEILING_name = zend_string_init_interned("ROUND_CEILING", sizeof("ROUND_CEILING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUND_CEILING_name, &const_ROUND_CEILING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUND_CEILING_name); + + zval const_ROUND_FLOOR_value; + ZVAL_LONG(&const_ROUND_FLOOR_value, UNUM_ROUND_FLOOR); + zend_string *const_ROUND_FLOOR_name = zend_string_init_interned("ROUND_FLOOR", sizeof("ROUND_FLOOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUND_FLOOR_name, &const_ROUND_FLOOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUND_FLOOR_name); + + zval const_ROUND_DOWN_value; + ZVAL_LONG(&const_ROUND_DOWN_value, UNUM_ROUND_DOWN); + zend_string *const_ROUND_DOWN_name = zend_string_init_interned("ROUND_DOWN", sizeof("ROUND_DOWN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUND_DOWN_name, &const_ROUND_DOWN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUND_DOWN_name); + + zval const_ROUND_UP_value; + ZVAL_LONG(&const_ROUND_UP_value, UNUM_ROUND_UP); + zend_string *const_ROUND_UP_name = zend_string_init_interned("ROUND_UP", sizeof("ROUND_UP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUND_UP_name, &const_ROUND_UP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUND_UP_name); + + zval const_ROUND_HALFEVEN_value; + ZVAL_LONG(&const_ROUND_HALFEVEN_value, UNUM_ROUND_HALFEVEN); + zend_string *const_ROUND_HALFEVEN_name = zend_string_init_interned("ROUND_HALFEVEN", sizeof("ROUND_HALFEVEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUND_HALFEVEN_name, &const_ROUND_HALFEVEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUND_HALFEVEN_name); + + zval const_ROUND_HALFDOWN_value; + ZVAL_LONG(&const_ROUND_HALFDOWN_value, UNUM_ROUND_HALFDOWN); + zend_string *const_ROUND_HALFDOWN_name = zend_string_init_interned("ROUND_HALFDOWN", sizeof("ROUND_HALFDOWN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUND_HALFDOWN_name, &const_ROUND_HALFDOWN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUND_HALFDOWN_name); + + zval const_ROUND_HALFUP_value; + ZVAL_LONG(&const_ROUND_HALFUP_value, UNUM_ROUND_HALFUP); + zend_string *const_ROUND_HALFUP_name = zend_string_init_interned("ROUND_HALFUP", sizeof("ROUND_HALFUP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUND_HALFUP_name, &const_ROUND_HALFUP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUND_HALFUP_name); + + zval const_PAD_BEFORE_PREFIX_value; + ZVAL_LONG(&const_PAD_BEFORE_PREFIX_value, UNUM_PAD_BEFORE_PREFIX); + zend_string *const_PAD_BEFORE_PREFIX_name = zend_string_init_interned("PAD_BEFORE_PREFIX", sizeof("PAD_BEFORE_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PAD_BEFORE_PREFIX_name, &const_PAD_BEFORE_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PAD_BEFORE_PREFIX_name); + + zval const_PAD_AFTER_PREFIX_value; + ZVAL_LONG(&const_PAD_AFTER_PREFIX_value, UNUM_PAD_AFTER_PREFIX); + zend_string *const_PAD_AFTER_PREFIX_name = zend_string_init_interned("PAD_AFTER_PREFIX", sizeof("PAD_AFTER_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PAD_AFTER_PREFIX_name, &const_PAD_AFTER_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PAD_AFTER_PREFIX_name); + + zval const_PAD_BEFORE_SUFFIX_value; + ZVAL_LONG(&const_PAD_BEFORE_SUFFIX_value, UNUM_PAD_BEFORE_SUFFIX); + zend_string *const_PAD_BEFORE_SUFFIX_name = zend_string_init_interned("PAD_BEFORE_SUFFIX", sizeof("PAD_BEFORE_SUFFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PAD_BEFORE_SUFFIX_name, &const_PAD_BEFORE_SUFFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PAD_BEFORE_SUFFIX_name); + + zval const_PAD_AFTER_SUFFIX_value; + ZVAL_LONG(&const_PAD_AFTER_SUFFIX_value, UNUM_PAD_AFTER_SUFFIX); + zend_string *const_PAD_AFTER_SUFFIX_name = zend_string_init_interned("PAD_AFTER_SUFFIX", sizeof("PAD_AFTER_SUFFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PAD_AFTER_SUFFIX_name, &const_PAD_AFTER_SUFFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PAD_AFTER_SUFFIX_name); + + zval const_PARSE_INT_ONLY_value; + ZVAL_LONG(&const_PARSE_INT_ONLY_value, UNUM_PARSE_INT_ONLY); + zend_string *const_PARSE_INT_ONLY_name = zend_string_init_interned("PARSE_INT_ONLY", sizeof("PARSE_INT_ONLY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PARSE_INT_ONLY_name, &const_PARSE_INT_ONLY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PARSE_INT_ONLY_name); + + zval const_GROUPING_USED_value; + ZVAL_LONG(&const_GROUPING_USED_value, UNUM_GROUPING_USED); + zend_string *const_GROUPING_USED_name = zend_string_init_interned("GROUPING_USED", sizeof("GROUPING_USED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GROUPING_USED_name, &const_GROUPING_USED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GROUPING_USED_name); + + zval const_DECIMAL_ALWAYS_SHOWN_value; + ZVAL_LONG(&const_DECIMAL_ALWAYS_SHOWN_value, UNUM_DECIMAL_ALWAYS_SHOWN); + zend_string *const_DECIMAL_ALWAYS_SHOWN_name = zend_string_init_interned("DECIMAL_ALWAYS_SHOWN", sizeof("DECIMAL_ALWAYS_SHOWN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DECIMAL_ALWAYS_SHOWN_name, &const_DECIMAL_ALWAYS_SHOWN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DECIMAL_ALWAYS_SHOWN_name); + + zval const_MAX_INTEGER_DIGITS_value; + ZVAL_LONG(&const_MAX_INTEGER_DIGITS_value, UNUM_MAX_INTEGER_DIGITS); + zend_string *const_MAX_INTEGER_DIGITS_name = zend_string_init_interned("MAX_INTEGER_DIGITS", sizeof("MAX_INTEGER_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MAX_INTEGER_DIGITS_name, &const_MAX_INTEGER_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MAX_INTEGER_DIGITS_name); + + zval const_MIN_INTEGER_DIGITS_value; + ZVAL_LONG(&const_MIN_INTEGER_DIGITS_value, UNUM_MIN_INTEGER_DIGITS); + zend_string *const_MIN_INTEGER_DIGITS_name = zend_string_init_interned("MIN_INTEGER_DIGITS", sizeof("MIN_INTEGER_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MIN_INTEGER_DIGITS_name, &const_MIN_INTEGER_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MIN_INTEGER_DIGITS_name); + + zval const_INTEGER_DIGITS_value; + ZVAL_LONG(&const_INTEGER_DIGITS_value, UNUM_INTEGER_DIGITS); + zend_string *const_INTEGER_DIGITS_name = zend_string_init_interned("INTEGER_DIGITS", sizeof("INTEGER_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_INTEGER_DIGITS_name, &const_INTEGER_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_INTEGER_DIGITS_name); + + zval const_MAX_FRACTION_DIGITS_value; + ZVAL_LONG(&const_MAX_FRACTION_DIGITS_value, UNUM_MAX_FRACTION_DIGITS); + zend_string *const_MAX_FRACTION_DIGITS_name = zend_string_init_interned("MAX_FRACTION_DIGITS", sizeof("MAX_FRACTION_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MAX_FRACTION_DIGITS_name, &const_MAX_FRACTION_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MAX_FRACTION_DIGITS_name); + + zval const_MIN_FRACTION_DIGITS_value; + ZVAL_LONG(&const_MIN_FRACTION_DIGITS_value, UNUM_MIN_FRACTION_DIGITS); + zend_string *const_MIN_FRACTION_DIGITS_name = zend_string_init_interned("MIN_FRACTION_DIGITS", sizeof("MIN_FRACTION_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MIN_FRACTION_DIGITS_name, &const_MIN_FRACTION_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MIN_FRACTION_DIGITS_name); + + zval const_FRACTION_DIGITS_value; + ZVAL_LONG(&const_FRACTION_DIGITS_value, UNUM_FRACTION_DIGITS); + zend_string *const_FRACTION_DIGITS_name = zend_string_init_interned("FRACTION_DIGITS", sizeof("FRACTION_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FRACTION_DIGITS_name, &const_FRACTION_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FRACTION_DIGITS_name); + + zval const_MULTIPLIER_value; + ZVAL_LONG(&const_MULTIPLIER_value, UNUM_MULTIPLIER); + zend_string *const_MULTIPLIER_name = zend_string_init_interned("MULTIPLIER", sizeof("MULTIPLIER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MULTIPLIER_name, &const_MULTIPLIER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MULTIPLIER_name); + + zval const_GROUPING_SIZE_value; + ZVAL_LONG(&const_GROUPING_SIZE_value, UNUM_GROUPING_SIZE); + zend_string *const_GROUPING_SIZE_name = zend_string_init_interned("GROUPING_SIZE", sizeof("GROUPING_SIZE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GROUPING_SIZE_name, &const_GROUPING_SIZE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GROUPING_SIZE_name); + + zval const_ROUNDING_MODE_value; + ZVAL_LONG(&const_ROUNDING_MODE_value, UNUM_ROUNDING_MODE); + zend_string *const_ROUNDING_MODE_name = zend_string_init_interned("ROUNDING_MODE", sizeof("ROUNDING_MODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUNDING_MODE_name, &const_ROUNDING_MODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUNDING_MODE_name); + + zval const_ROUNDING_INCREMENT_value; + ZVAL_LONG(&const_ROUNDING_INCREMENT_value, UNUM_ROUNDING_INCREMENT); + zend_string *const_ROUNDING_INCREMENT_name = zend_string_init_interned("ROUNDING_INCREMENT", sizeof("ROUNDING_INCREMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ROUNDING_INCREMENT_name, &const_ROUNDING_INCREMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ROUNDING_INCREMENT_name); + + zval const_FORMAT_WIDTH_value; + ZVAL_LONG(&const_FORMAT_WIDTH_value, UNUM_FORMAT_WIDTH); + zend_string *const_FORMAT_WIDTH_name = zend_string_init_interned("FORMAT_WIDTH", sizeof("FORMAT_WIDTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FORMAT_WIDTH_name, &const_FORMAT_WIDTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FORMAT_WIDTH_name); + + zval const_PADDING_POSITION_value; + ZVAL_LONG(&const_PADDING_POSITION_value, UNUM_PADDING_POSITION); + zend_string *const_PADDING_POSITION_name = zend_string_init_interned("PADDING_POSITION", sizeof("PADDING_POSITION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PADDING_POSITION_name, &const_PADDING_POSITION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PADDING_POSITION_name); + + zval const_SECONDARY_GROUPING_SIZE_value; + ZVAL_LONG(&const_SECONDARY_GROUPING_SIZE_value, UNUM_SECONDARY_GROUPING_SIZE); + zend_string *const_SECONDARY_GROUPING_SIZE_name = zend_string_init_interned("SECONDARY_GROUPING_SIZE", sizeof("SECONDARY_GROUPING_SIZE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SECONDARY_GROUPING_SIZE_name, &const_SECONDARY_GROUPING_SIZE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SECONDARY_GROUPING_SIZE_name); + + zval const_SIGNIFICANT_DIGITS_USED_value; + ZVAL_LONG(&const_SIGNIFICANT_DIGITS_USED_value, UNUM_SIGNIFICANT_DIGITS_USED); + zend_string *const_SIGNIFICANT_DIGITS_USED_name = zend_string_init_interned("SIGNIFICANT_DIGITS_USED", sizeof("SIGNIFICANT_DIGITS_USED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SIGNIFICANT_DIGITS_USED_name, &const_SIGNIFICANT_DIGITS_USED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SIGNIFICANT_DIGITS_USED_name); + + zval const_MIN_SIGNIFICANT_DIGITS_value; + ZVAL_LONG(&const_MIN_SIGNIFICANT_DIGITS_value, UNUM_MIN_SIGNIFICANT_DIGITS); + zend_string *const_MIN_SIGNIFICANT_DIGITS_name = zend_string_init_interned("MIN_SIGNIFICANT_DIGITS", sizeof("MIN_SIGNIFICANT_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MIN_SIGNIFICANT_DIGITS_name, &const_MIN_SIGNIFICANT_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MIN_SIGNIFICANT_DIGITS_name); + + zval const_MAX_SIGNIFICANT_DIGITS_value; + ZVAL_LONG(&const_MAX_SIGNIFICANT_DIGITS_value, UNUM_MAX_SIGNIFICANT_DIGITS); + zend_string *const_MAX_SIGNIFICANT_DIGITS_name = zend_string_init_interned("MAX_SIGNIFICANT_DIGITS", sizeof("MAX_SIGNIFICANT_DIGITS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MAX_SIGNIFICANT_DIGITS_name, &const_MAX_SIGNIFICANT_DIGITS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MAX_SIGNIFICANT_DIGITS_name); + + zval const_LENIENT_PARSE_value; + ZVAL_LONG(&const_LENIENT_PARSE_value, UNUM_LENIENT_PARSE); + zend_string *const_LENIENT_PARSE_name = zend_string_init_interned("LENIENT_PARSE", sizeof("LENIENT_PARSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LENIENT_PARSE_name, &const_LENIENT_PARSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LENIENT_PARSE_name); + + zval const_POSITIVE_PREFIX_value; + ZVAL_LONG(&const_POSITIVE_PREFIX_value, UNUM_POSITIVE_PREFIX); + zend_string *const_POSITIVE_PREFIX_name = zend_string_init_interned("POSITIVE_PREFIX", sizeof("POSITIVE_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_POSITIVE_PREFIX_name, &const_POSITIVE_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_POSITIVE_PREFIX_name); + + zval const_POSITIVE_SUFFIX_value; + ZVAL_LONG(&const_POSITIVE_SUFFIX_value, UNUM_POSITIVE_SUFFIX); + zend_string *const_POSITIVE_SUFFIX_name = zend_string_init_interned("POSITIVE_SUFFIX", sizeof("POSITIVE_SUFFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_POSITIVE_SUFFIX_name, &const_POSITIVE_SUFFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_POSITIVE_SUFFIX_name); + + zval const_NEGATIVE_PREFIX_value; + ZVAL_LONG(&const_NEGATIVE_PREFIX_value, UNUM_NEGATIVE_PREFIX); + zend_string *const_NEGATIVE_PREFIX_name = zend_string_init_interned("NEGATIVE_PREFIX", sizeof("NEGATIVE_PREFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NEGATIVE_PREFIX_name, &const_NEGATIVE_PREFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NEGATIVE_PREFIX_name); + + zval const_NEGATIVE_SUFFIX_value; + ZVAL_LONG(&const_NEGATIVE_SUFFIX_value, UNUM_NEGATIVE_SUFFIX); + zend_string *const_NEGATIVE_SUFFIX_name = zend_string_init_interned("NEGATIVE_SUFFIX", sizeof("NEGATIVE_SUFFIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NEGATIVE_SUFFIX_name, &const_NEGATIVE_SUFFIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NEGATIVE_SUFFIX_name); + + zval const_PADDING_CHARACTER_value; + ZVAL_LONG(&const_PADDING_CHARACTER_value, UNUM_PADDING_CHARACTER); + zend_string *const_PADDING_CHARACTER_name = zend_string_init_interned("PADDING_CHARACTER", sizeof("PADDING_CHARACTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PADDING_CHARACTER_name, &const_PADDING_CHARACTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PADDING_CHARACTER_name); + + zval const_CURRENCY_CODE_value; + ZVAL_LONG(&const_CURRENCY_CODE_value, UNUM_CURRENCY_CODE); + zend_string *const_CURRENCY_CODE_name = zend_string_init_interned("CURRENCY_CODE", sizeof("CURRENCY_CODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CURRENCY_CODE_name, &const_CURRENCY_CODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CURRENCY_CODE_name); + + zval const_DEFAULT_RULESET_value; + ZVAL_LONG(&const_DEFAULT_RULESET_value, UNUM_DEFAULT_RULESET); + zend_string *const_DEFAULT_RULESET_name = zend_string_init_interned("DEFAULT_RULESET", sizeof("DEFAULT_RULESET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DEFAULT_RULESET_name, &const_DEFAULT_RULESET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DEFAULT_RULESET_name); + + zval const_PUBLIC_RULESETS_value; + ZVAL_LONG(&const_PUBLIC_RULESETS_value, UNUM_PUBLIC_RULESETS); + zend_string *const_PUBLIC_RULESETS_name = zend_string_init_interned("PUBLIC_RULESETS", sizeof("PUBLIC_RULESETS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PUBLIC_RULESETS_name, &const_PUBLIC_RULESETS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PUBLIC_RULESETS_name); + + zval const_DECIMAL_SEPARATOR_SYMBOL_value; + ZVAL_LONG(&const_DECIMAL_SEPARATOR_SYMBOL_value, UNUM_DECIMAL_SEPARATOR_SYMBOL); + zend_string *const_DECIMAL_SEPARATOR_SYMBOL_name = zend_string_init_interned("DECIMAL_SEPARATOR_SYMBOL", sizeof("DECIMAL_SEPARATOR_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DECIMAL_SEPARATOR_SYMBOL_name, &const_DECIMAL_SEPARATOR_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DECIMAL_SEPARATOR_SYMBOL_name); + + zval const_GROUPING_SEPARATOR_SYMBOL_value; + ZVAL_LONG(&const_GROUPING_SEPARATOR_SYMBOL_value, UNUM_GROUPING_SEPARATOR_SYMBOL); + zend_string *const_GROUPING_SEPARATOR_SYMBOL_name = zend_string_init_interned("GROUPING_SEPARATOR_SYMBOL", sizeof("GROUPING_SEPARATOR_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GROUPING_SEPARATOR_SYMBOL_name, &const_GROUPING_SEPARATOR_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GROUPING_SEPARATOR_SYMBOL_name); + + zval const_PATTERN_SEPARATOR_SYMBOL_value; + ZVAL_LONG(&const_PATTERN_SEPARATOR_SYMBOL_value, UNUM_PATTERN_SEPARATOR_SYMBOL); + zend_string *const_PATTERN_SEPARATOR_SYMBOL_name = zend_string_init_interned("PATTERN_SEPARATOR_SYMBOL", sizeof("PATTERN_SEPARATOR_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PATTERN_SEPARATOR_SYMBOL_name, &const_PATTERN_SEPARATOR_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PATTERN_SEPARATOR_SYMBOL_name); + + zval const_PERCENT_SYMBOL_value; + ZVAL_LONG(&const_PERCENT_SYMBOL_value, UNUM_PERCENT_SYMBOL); + zend_string *const_PERCENT_SYMBOL_name = zend_string_init_interned("PERCENT_SYMBOL", sizeof("PERCENT_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PERCENT_SYMBOL_name, &const_PERCENT_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PERCENT_SYMBOL_name); + + zval const_ZERO_DIGIT_SYMBOL_value; + ZVAL_LONG(&const_ZERO_DIGIT_SYMBOL_value, UNUM_ZERO_DIGIT_SYMBOL); + zend_string *const_ZERO_DIGIT_SYMBOL_name = zend_string_init_interned("ZERO_DIGIT_SYMBOL", sizeof("ZERO_DIGIT_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ZERO_DIGIT_SYMBOL_name, &const_ZERO_DIGIT_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ZERO_DIGIT_SYMBOL_name); + + zval const_DIGIT_SYMBOL_value; + ZVAL_LONG(&const_DIGIT_SYMBOL_value, UNUM_DIGIT_SYMBOL); + zend_string *const_DIGIT_SYMBOL_name = zend_string_init_interned("DIGIT_SYMBOL", sizeof("DIGIT_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DIGIT_SYMBOL_name, &const_DIGIT_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DIGIT_SYMBOL_name); + + zval const_MINUS_SIGN_SYMBOL_value; + ZVAL_LONG(&const_MINUS_SIGN_SYMBOL_value, UNUM_MINUS_SIGN_SYMBOL); + zend_string *const_MINUS_SIGN_SYMBOL_name = zend_string_init_interned("MINUS_SIGN_SYMBOL", sizeof("MINUS_SIGN_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MINUS_SIGN_SYMBOL_name, &const_MINUS_SIGN_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MINUS_SIGN_SYMBOL_name); + + zval const_PLUS_SIGN_SYMBOL_value; + ZVAL_LONG(&const_PLUS_SIGN_SYMBOL_value, UNUM_PLUS_SIGN_SYMBOL); + zend_string *const_PLUS_SIGN_SYMBOL_name = zend_string_init_interned("PLUS_SIGN_SYMBOL", sizeof("PLUS_SIGN_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PLUS_SIGN_SYMBOL_name, &const_PLUS_SIGN_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PLUS_SIGN_SYMBOL_name); + + zval const_CURRENCY_SYMBOL_value; + ZVAL_LONG(&const_CURRENCY_SYMBOL_value, UNUM_CURRENCY_SYMBOL); + zend_string *const_CURRENCY_SYMBOL_name = zend_string_init_interned("CURRENCY_SYMBOL", sizeof("CURRENCY_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CURRENCY_SYMBOL_name, &const_CURRENCY_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CURRENCY_SYMBOL_name); + + zval const_INTL_CURRENCY_SYMBOL_value; + ZVAL_LONG(&const_INTL_CURRENCY_SYMBOL_value, UNUM_INTL_CURRENCY_SYMBOL); + zend_string *const_INTL_CURRENCY_SYMBOL_name = zend_string_init_interned("INTL_CURRENCY_SYMBOL", sizeof("INTL_CURRENCY_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_INTL_CURRENCY_SYMBOL_name, &const_INTL_CURRENCY_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_INTL_CURRENCY_SYMBOL_name); + + zval const_MONETARY_SEPARATOR_SYMBOL_value; + ZVAL_LONG(&const_MONETARY_SEPARATOR_SYMBOL_value, UNUM_MONETARY_SEPARATOR_SYMBOL); + zend_string *const_MONETARY_SEPARATOR_SYMBOL_name = zend_string_init_interned("MONETARY_SEPARATOR_SYMBOL", sizeof("MONETARY_SEPARATOR_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MONETARY_SEPARATOR_SYMBOL_name, &const_MONETARY_SEPARATOR_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MONETARY_SEPARATOR_SYMBOL_name); + + zval const_EXPONENTIAL_SYMBOL_value; + ZVAL_LONG(&const_EXPONENTIAL_SYMBOL_value, UNUM_EXPONENTIAL_SYMBOL); + zend_string *const_EXPONENTIAL_SYMBOL_name = zend_string_init_interned("EXPONENTIAL_SYMBOL", sizeof("EXPONENTIAL_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EXPONENTIAL_SYMBOL_name, &const_EXPONENTIAL_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EXPONENTIAL_SYMBOL_name); + + zval const_PERMILL_SYMBOL_value; + ZVAL_LONG(&const_PERMILL_SYMBOL_value, UNUM_PERMILL_SYMBOL); + zend_string *const_PERMILL_SYMBOL_name = zend_string_init_interned("PERMILL_SYMBOL", sizeof("PERMILL_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PERMILL_SYMBOL_name, &const_PERMILL_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PERMILL_SYMBOL_name); + + zval const_PAD_ESCAPE_SYMBOL_value; + ZVAL_LONG(&const_PAD_ESCAPE_SYMBOL_value, UNUM_PAD_ESCAPE_SYMBOL); + zend_string *const_PAD_ESCAPE_SYMBOL_name = zend_string_init_interned("PAD_ESCAPE_SYMBOL", sizeof("PAD_ESCAPE_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PAD_ESCAPE_SYMBOL_name, &const_PAD_ESCAPE_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PAD_ESCAPE_SYMBOL_name); + + zval const_INFINITY_SYMBOL_value; + ZVAL_LONG(&const_INFINITY_SYMBOL_value, UNUM_INFINITY_SYMBOL); + zend_string *const_INFINITY_SYMBOL_name = zend_string_init_interned("INFINITY_SYMBOL", sizeof("INFINITY_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_INFINITY_SYMBOL_name, &const_INFINITY_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_INFINITY_SYMBOL_name); + + zval const_NAN_SYMBOL_value; + ZVAL_LONG(&const_NAN_SYMBOL_value, UNUM_NAN_SYMBOL); + zend_string *const_NAN_SYMBOL_name = zend_string_init_interned("NAN_SYMBOL", sizeof("NAN_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NAN_SYMBOL_name, &const_NAN_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NAN_SYMBOL_name); + + zval const_SIGNIFICANT_DIGIT_SYMBOL_value; + ZVAL_LONG(&const_SIGNIFICANT_DIGIT_SYMBOL_value, UNUM_SIGNIFICANT_DIGIT_SYMBOL); + zend_string *const_SIGNIFICANT_DIGIT_SYMBOL_name = zend_string_init_interned("SIGNIFICANT_DIGIT_SYMBOL", sizeof("SIGNIFICANT_DIGIT_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SIGNIFICANT_DIGIT_SYMBOL_name, &const_SIGNIFICANT_DIGIT_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SIGNIFICANT_DIGIT_SYMBOL_name); + + zval const_MONETARY_GROUPING_SEPARATOR_SYMBOL_value; + ZVAL_LONG(&const_MONETARY_GROUPING_SEPARATOR_SYMBOL_value, UNUM_MONETARY_GROUPING_SEPARATOR_SYMBOL); + zend_string *const_MONETARY_GROUPING_SEPARATOR_SYMBOL_name = zend_string_init_interned("MONETARY_GROUPING_SEPARATOR_SYMBOL", sizeof("MONETARY_GROUPING_SEPARATOR_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MONETARY_GROUPING_SEPARATOR_SYMBOL_name, &const_MONETARY_GROUPING_SEPARATOR_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MONETARY_GROUPING_SEPARATOR_SYMBOL_name); + + zval const_TYPE_DEFAULT_value; + ZVAL_LONG(&const_TYPE_DEFAULT_value, FORMAT_TYPE_DEFAULT); + zend_string *const_TYPE_DEFAULT_name = zend_string_init_interned("TYPE_DEFAULT", sizeof("TYPE_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_DEFAULT_name, &const_TYPE_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_DEFAULT_name); + + zval const_TYPE_INT32_value; + ZVAL_LONG(&const_TYPE_INT32_value, FORMAT_TYPE_INT32); + zend_string *const_TYPE_INT32_name = zend_string_init_interned("TYPE_INT32", sizeof("TYPE_INT32") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_INT32_name, &const_TYPE_INT32_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_INT32_name); + + zval const_TYPE_INT64_value; + ZVAL_LONG(&const_TYPE_INT64_value, FORMAT_TYPE_INT64); + zend_string *const_TYPE_INT64_name = zend_string_init_interned("TYPE_INT64", sizeof("TYPE_INT64") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_INT64_name, &const_TYPE_INT64_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_INT64_name); + + zval const_TYPE_DOUBLE_value; + ZVAL_LONG(&const_TYPE_DOUBLE_value, FORMAT_TYPE_DOUBLE); + zend_string *const_TYPE_DOUBLE_name = zend_string_init_interned("TYPE_DOUBLE", sizeof("TYPE_DOUBLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_DOUBLE_name, &const_TYPE_DOUBLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_DOUBLE_name); + + zval const_TYPE_CURRENCY_value; + ZVAL_LONG(&const_TYPE_CURRENCY_value, FORMAT_TYPE_CURRENCY); + zend_string *const_TYPE_CURRENCY_name = zend_string_init_interned("TYPE_CURRENCY", sizeof("TYPE_CURRENCY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_CURRENCY_name, &const_TYPE_CURRENCY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_CURRENCY_name); + return class_entry; } diff --git a/ext/intl/formatter/formatter_class.c b/ext/intl/formatter/formatter_class.c index ce71f43a816a2..0c2d8e418153d 100644 --- a/ext/intl/formatter/formatter_class.c +++ b/ext/intl/formatter/formatter_class.c @@ -51,8 +51,6 @@ zend_object *NumberFormatter_object_create(zend_class_entry *ce) zend_object_std_init( &intern->zo, ce ); object_properties_init(&intern->zo, ce); - intern->zo.handlers = &NumberFormatter_handlers; - return &intern->zo; } /* }}} */ @@ -99,6 +97,7 @@ void formatter_register_class( void ) /* Create and register 'NumberFormatter' class. */ NumberFormatter_ce_ptr = register_class_NumberFormatter(); NumberFormatter_ce_ptr->create_object = NumberFormatter_object_create; + NumberFormatter_ce_ptr->default_object_handlers = &NumberFormatter_handlers; memcpy(&NumberFormatter_handlers, &std_object_handlers, sizeof(NumberFormatter_handlers)); diff --git a/ext/intl/grapheme/grapheme.h b/ext/intl/grapheme/grapheme.h index 0ac477a9c1f2a..003e0d49317a9 100644 --- a/ext/intl/grapheme/grapheme.h +++ b/ext/intl/grapheme/grapheme.h @@ -18,7 +18,12 @@ #include #include -void grapheme_register_constants( INIT_FUNC_ARGS ); void grapheme_close_global_iterator( void ); +#define GRAPHEME_EXTRACT_TYPE_COUNT 0 +#define GRAPHEME_EXTRACT_TYPE_MAXBYTES 1 +#define GRAPHEME_EXTRACT_TYPE_MAXCHARS 2 +#define GRAPHEME_EXTRACT_TYPE_MIN GRAPHEME_EXTRACT_TYPE_COUNT +#define GRAPHEME_EXTRACT_TYPE_MAX GRAPHEME_EXTRACT_TYPE_MAXCHARS + #endif // GRAPHEME_GRAPHEME_H diff --git a/ext/intl/grapheme/grapheme_string.c b/ext/intl/grapheme/grapheme_string.c index 6baf0993e9bfc..29bbdf7ff950c 100644 --- a/ext/intl/grapheme/grapheme_string.c +++ b/ext/intl/grapheme/grapheme_string.c @@ -29,24 +29,6 @@ /* }}} */ -#define GRAPHEME_EXTRACT_TYPE_COUNT 0 -#define GRAPHEME_EXTRACT_TYPE_MAXBYTES 1 -#define GRAPHEME_EXTRACT_TYPE_MAXCHARS 2 -#define GRAPHEME_EXTRACT_TYPE_MIN GRAPHEME_EXTRACT_TYPE_COUNT -#define GRAPHEME_EXTRACT_TYPE_MAX GRAPHEME_EXTRACT_TYPE_MAXCHARS - - -/* {{{ grapheme_register_constants - * Register API constants - */ -void grapheme_register_constants( INIT_FUNC_ARGS ) -{ - REGISTER_LONG_CONSTANT("GRAPHEME_EXTR_COUNT", GRAPHEME_EXTRACT_TYPE_COUNT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GRAPHEME_EXTR_MAXBYTES", GRAPHEME_EXTRACT_TYPE_MAXBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("GRAPHEME_EXTR_MAXCHARS", GRAPHEME_EXTRACT_TYPE_MAXCHARS, CONST_CS | CONST_PERSISTENT); -} -/* }}} */ - /* {{{ Get number of graphemes in a string */ PHP_FUNCTION(grapheme_strlen) { diff --git a/ext/intl/idn/idn.c b/ext/intl/idn/idn.c index 7ab0e1daf7c8a..257e0a00ca109 100644 --- a/ext/intl/idn/idn.c +++ b/ext/intl/idn/idn.c @@ -26,69 +26,11 @@ #include #include "ext/standard/php_string.h" +#include "idn.h" #include "intl_error.h" #include "intl_convert.h" /* }}} */ -enum { - INTL_IDN_VARIANT_UTS46 = 1 -}; - -/* {{{ grapheme_register_constants - * Register API constants - */ -void idn_register_constants( INIT_FUNC_ARGS ) -{ - /* OPTIONS */ - - /* Option to prohibit processing of unassigned codepoints in the input and - do not check if the input conforms to STD-3 ASCII rules. */ - REGISTER_LONG_CONSTANT("IDNA_DEFAULT", UIDNA_DEFAULT, CONST_CS | CONST_PERSISTENT); - - /* Option to allow processing of unassigned codepoints in the input */ - REGISTER_LONG_CONSTANT("IDNA_ALLOW_UNASSIGNED", UIDNA_ALLOW_UNASSIGNED, CONST_CS | CONST_PERSISTENT); - - /* Option to check if input conforms to STD-3 ASCII rules */ - REGISTER_LONG_CONSTANT("IDNA_USE_STD3_RULES", UIDNA_USE_STD3_RULES, CONST_CS | CONST_PERSISTENT); - - /* Option to check for whether the input conforms to the BiDi rules. - * Ignored by the IDNA2003 implementation. (IDNA2003 always performs a BiDi check.) */ - REGISTER_LONG_CONSTANT("IDNA_CHECK_BIDI", UIDNA_CHECK_BIDI, CONST_CS | CONST_PERSISTENT); - - /* Option to check for whether the input conforms to the CONTEXTJ rules. - * Ignored by the IDNA2003 implementation. (The CONTEXTJ check is new in IDNA2008.) */ - REGISTER_LONG_CONSTANT("IDNA_CHECK_CONTEXTJ", UIDNA_CHECK_CONTEXTJ, CONST_CS | CONST_PERSISTENT); - - /* Option for nontransitional processing in ToASCII(). - * By default, ToASCII() uses transitional processing. - * Ignored by the IDNA2003 implementation. */ - REGISTER_LONG_CONSTANT("IDNA_NONTRANSITIONAL_TO_ASCII", UIDNA_NONTRANSITIONAL_TO_ASCII, CONST_CS | CONST_PERSISTENT); - - /* Option for nontransitional processing in ToUnicode(). - * By default, ToUnicode() uses transitional processing. - * Ignored by the IDNA2003 implementation. */ - REGISTER_LONG_CONSTANT("IDNA_NONTRANSITIONAL_TO_UNICODE", UIDNA_NONTRANSITIONAL_TO_UNICODE, CONST_CS | CONST_PERSISTENT); - - /* VARIANTS */ - REGISTER_LONG_CONSTANT("INTL_IDNA_VARIANT_UTS46", INTL_IDN_VARIANT_UTS46, CONST_CS | CONST_PERSISTENT); - - /* PINFO ERROR CODES */ - REGISTER_LONG_CONSTANT("IDNA_ERROR_EMPTY_LABEL", UIDNA_ERROR_EMPTY_LABEL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_LABEL_TOO_LONG", UIDNA_ERROR_LABEL_TOO_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_DOMAIN_NAME_TOO_LONG", UIDNA_ERROR_DOMAIN_NAME_TOO_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_LEADING_HYPHEN", UIDNA_ERROR_LEADING_HYPHEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_TRAILING_HYPHEN", UIDNA_ERROR_TRAILING_HYPHEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_HYPHEN_3_4", UIDNA_ERROR_HYPHEN_3_4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_LEADING_COMBINING_MARK", UIDNA_ERROR_LEADING_COMBINING_MARK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_DISALLOWED", UIDNA_ERROR_DISALLOWED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_PUNYCODE", UIDNA_ERROR_PUNYCODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_LABEL_HAS_DOT", UIDNA_ERROR_LABEL_HAS_DOT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_INVALID_ACE_LABEL", UIDNA_ERROR_INVALID_ACE_LABEL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_BIDI", UIDNA_ERROR_BIDI, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IDNA_ERROR_CONTEXTJ", UIDNA_ERROR_CONTEXTJ, CONST_CS | CONST_PERSISTENT); -} -/* }}} */ - enum { INTL_IDN_TO_ASCII = 0, INTL_IDN_TO_UTF8 diff --git a/ext/intl/idn/idn.h b/ext/intl/idn/idn.h index c4d2703059e75..596e63f207e00 100644 --- a/ext/intl/idn/idn.h +++ b/ext/intl/idn/idn.h @@ -19,6 +19,8 @@ #include -void idn_register_constants(INIT_FUNC_ARGS); +enum { + INTL_IDN_VARIANT_UTS46 = 1 +}; #endif /* IDN_IDN_H */ diff --git a/ext/intl/msgformat/msgformat_class.c b/ext/intl/msgformat/msgformat_class.c index 3d7241b0da58e..57378f19bb010 100644 --- a/ext/intl/msgformat/msgformat_class.c +++ b/ext/intl/msgformat/msgformat_class.c @@ -49,8 +49,6 @@ zend_object *MessageFormatter_object_create(zend_class_entry *ce) zend_object_std_init( &intern->zo, ce ); object_properties_init(&intern->zo, ce); - intern->zo.handlers = &MessageFormatter_handlers; - return &intern->zo; } /* }}} */ @@ -98,6 +96,7 @@ void msgformat_register_class( void ) /* Create and register 'MessageFormatter' class. */ MessageFormatter_ce_ptr = register_class_MessageFormatter(); MessageFormatter_ce_ptr->create_object = MessageFormatter_object_create; + MessageFormatter_ce_ptr->default_object_handlers = &MessageFormatter_handlers; memcpy(&MessageFormatter_handlers, &std_object_handlers, sizeof MessageFormatter_handlers); diff --git a/ext/intl/normalizer/normalizer.c b/ext/intl/normalizer/normalizer.c deleted file mode 100644 index 177070df54614..0000000000000 --- a/ext/intl/normalizer/normalizer.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable 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: Ed Batutis | - +----------------------------------------------------------------------+ - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "normalizer_class.h" -#include "normalizer.h" - -#include -#include -#include - -/* {{{ normalizer_register_constants - * Register constants common for the both (OO and procedural) - * APIs. - */ -void normalizer_register_constants( INIT_FUNC_ARGS ) -{ - if( !Normalizer_ce_ptr ) - { - zend_error( E_ERROR, "Normalizer class not defined" ); - return; - } - - #define NORMALIZER_EXPOSE_CONST(x) REGISTER_LONG_CONSTANT(#x, x, CONST_PERSISTENT | CONST_CS) - #define NORMALIZER_EXPOSE_CLASS_CONST(x) zend_declare_class_constant_long( Normalizer_ce_ptr, ZEND_STRS( #x ) - 1, NORMALIZER_##x ); - #define NORMALIZER_EXPOSE_CUSTOM_CLASS_CONST(name, value) zend_declare_class_constant_long( Normalizer_ce_ptr, ZEND_STRS( name ) - 1, value ); - - /* Normalization form constants */ - NORMALIZER_EXPOSE_CLASS_CONST( FORM_D ); - NORMALIZER_EXPOSE_CLASS_CONST( NFD ); - NORMALIZER_EXPOSE_CLASS_CONST( FORM_KD ); - NORMALIZER_EXPOSE_CLASS_CONST( NFKD ); - NORMALIZER_EXPOSE_CLASS_CONST( FORM_C ); - NORMALIZER_EXPOSE_CLASS_CONST( NFC ); - NORMALIZER_EXPOSE_CLASS_CONST( FORM_KC ); - NORMALIZER_EXPOSE_CLASS_CONST( NFKC ); -#if U_ICU_VERSION_MAJOR_NUM >= 56 - NORMALIZER_EXPOSE_CLASS_CONST( FORM_KC_CF ); - NORMALIZER_EXPOSE_CLASS_CONST( NFKC_CF ); -#endif - - #undef NORMALIZER_EXPOSE_CUSTOM_CLASS_CONST - #undef NORMALIZER_EXPOSE_CLASS_CONST - #undef NORMALIZER_EXPOSE_CONST -} -/* }}} */ diff --git a/ext/intl/normalizer/normalizer.h b/ext/intl/normalizer/normalizer.h index 9d8472f10cd1b..9e71f04aaed83 100644 --- a/ext/intl/normalizer/normalizer.h +++ b/ext/intl/normalizer/normalizer.h @@ -45,6 +45,4 @@ #define NORMALIZER_DEFAULT NORMALIZER_FORM_C #endif -void normalizer_register_constants( INIT_FUNC_ARGS ); - #endif // NORMALIZER_NORMALIZER_H diff --git a/ext/intl/normalizer/normalizer.stub.php b/ext/intl/normalizer/normalizer.stub.php index 75052535fc43b..d510c388b1337 100644 --- a/ext/intl/normalizer/normalizer.stub.php +++ b/ext/intl/normalizer/normalizer.stub.php @@ -4,6 +4,59 @@ class Normalizer { + /** + * @var int + * @cvalue NORMALIZER_FORM_D + */ + public const FORM_D = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_NFD + */ + public const NFD = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_FORM_KD + */ + public const FORM_KD = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_NFKD + */ + public const NFKD = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_FORM_C + */ + public const FORM_C = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_NFC + */ + public const NFC = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_FORM_KC + */ + public const FORM_KC = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_NFKC + */ + public const NFKC = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 56 + /** + * @var int + * @cvalue NORMALIZER_FORM_KC_CF + */ + public const FORM_KC_CF = UNKNOWN; + /** + * @var int + * @cvalue NORMALIZER_NFKC_CF + */ + public const NFKC_CF = UNKNOWN; +#endif + /** * @tentative-return-type * @alias normalizer_normalize diff --git a/ext/intl/normalizer/normalizer_arginfo.h b/ext/intl/normalizer/normalizer_arginfo.h index 70262b0ffc97a..1281c1c5e23f6 100644 --- a/ext/intl/normalizer/normalizer_arginfo.h +++ b/ext/intl/normalizer/normalizer_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 71dd44d3b839789639c16a4b6d5b2e4f40703a74 */ + * Stub hash: 451d8875edd23e737c147fb9aab37aa8220d731d */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_MASK_EX(arginfo_class_Normalizer_normalize, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) @@ -42,5 +42,69 @@ static zend_class_entry *register_class_Normalizer(void) INIT_CLASS_ENTRY(ce, "Normalizer", class_Normalizer_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); + zval const_FORM_D_value; + ZVAL_LONG(&const_FORM_D_value, NORMALIZER_FORM_D); + zend_string *const_FORM_D_name = zend_string_init_interned("FORM_D", sizeof("FORM_D") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FORM_D_name, &const_FORM_D_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FORM_D_name); + + zval const_NFD_value; + ZVAL_LONG(&const_NFD_value, NORMALIZER_NFD); + zend_string *const_NFD_name = zend_string_init_interned("NFD", sizeof("NFD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NFD_name, &const_NFD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NFD_name); + + zval const_FORM_KD_value; + ZVAL_LONG(&const_FORM_KD_value, NORMALIZER_FORM_KD); + zend_string *const_FORM_KD_name = zend_string_init_interned("FORM_KD", sizeof("FORM_KD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FORM_KD_name, &const_FORM_KD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FORM_KD_name); + + zval const_NFKD_value; + ZVAL_LONG(&const_NFKD_value, NORMALIZER_NFKD); + zend_string *const_NFKD_name = zend_string_init_interned("NFKD", sizeof("NFKD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NFKD_name, &const_NFKD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NFKD_name); + + zval const_FORM_C_value; + ZVAL_LONG(&const_FORM_C_value, NORMALIZER_FORM_C); + zend_string *const_FORM_C_name = zend_string_init_interned("FORM_C", sizeof("FORM_C") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FORM_C_name, &const_FORM_C_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FORM_C_name); + + zval const_NFC_value; + ZVAL_LONG(&const_NFC_value, NORMALIZER_NFC); + zend_string *const_NFC_name = zend_string_init_interned("NFC", sizeof("NFC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NFC_name, &const_NFC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NFC_name); + + zval const_FORM_KC_value; + ZVAL_LONG(&const_FORM_KC_value, NORMALIZER_FORM_KC); + zend_string *const_FORM_KC_name = zend_string_init_interned("FORM_KC", sizeof("FORM_KC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FORM_KC_name, &const_FORM_KC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FORM_KC_name); + + zval const_NFKC_value; + ZVAL_LONG(&const_NFKC_value, NORMALIZER_NFKC); + zend_string *const_NFKC_name = zend_string_init_interned("NFKC", sizeof("NFKC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NFKC_name, &const_NFKC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NFKC_name); +#if U_ICU_VERSION_MAJOR_NUM >= 56 + + zval const_FORM_KC_CF_value; + ZVAL_LONG(&const_FORM_KC_CF_value, NORMALIZER_FORM_KC_CF); + zend_string *const_FORM_KC_CF_name = zend_string_init_interned("FORM_KC_CF", sizeof("FORM_KC_CF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FORM_KC_CF_name, &const_FORM_KC_CF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FORM_KC_CF_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 56 + + zval const_NFKC_CF_value; + ZVAL_LONG(&const_NFKC_CF_value, NORMALIZER_NFKC_CF); + zend_string *const_NFKC_CF_name = zend_string_init_interned("NFKC_CF", sizeof("NFKC_CF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NFKC_CF_name, &const_NFKC_CF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NFKC_CF_name); +#endif + return class_entry; } diff --git a/ext/intl/normalizer/normalizer_class.c b/ext/intl/normalizer/normalizer_class.c index 5835aa3a98313..d9e413d5e5146 100644 --- a/ext/intl/normalizer/normalizer_class.c +++ b/ext/intl/normalizer/normalizer_class.c @@ -12,6 +12,7 @@ +----------------------------------------------------------------------+ */ +#include "normalizer.h" #include "normalizer_class.h" #include "php_intl.h" #include "normalizer_arginfo.h" diff --git a/ext/intl/php_intl.c b/ext/intl/php_intl.c index 2fa47e46726a8..5bee051441f26 100644 --- a/ext/intl/php_intl.c +++ b/ext/intl/php_intl.c @@ -29,7 +29,6 @@ #include "converter/converter.h" -#include "formatter/formatter.h" #include "formatter/formatter_class.h" #include "formatter/formatter_format.h" @@ -37,7 +36,6 @@ #include "msgformat/msgformat_class.h" -#include "normalizer/normalizer.h" #include "normalizer/normalizer_class.h" #include "locale/locale.h" @@ -60,13 +58,12 @@ #include "breakiterator/breakiterator_class.h" #include "breakiterator/breakiterator_iterators.h" +#include #include "idn/idn.h" #include "uchar/uchar.h" # include "spoofchecker/spoofchecker_class.h" -# include "spoofchecker/spoofchecker.h" -#include "common/common_error.h" #include "common/common_enum.h" #include @@ -157,28 +154,17 @@ PHP_MINIT_FUNCTION( intl ) /* Register 'NumberFormatter' PHP class */ formatter_register_class( ); - /* Expose NumberFormatter constants to PHP scripts */ - formatter_register_constants( INIT_FUNC_ARGS_PASSTHRU ); - /* Register 'Normalizer' PHP class */ normalizer_register_Normalizer_class( ); - /* Expose Normalizer constants to PHP scripts */ - normalizer_register_constants( INIT_FUNC_ARGS_PASSTHRU ); - /* Register 'Locale' PHP class */ locale_register_Locale_class( ); msgformat_register_class(); - grapheme_register_constants( INIT_FUNC_ARGS_PASSTHRU ); - /* Register 'DateFormat' PHP class */ dateformat_register_IntlDateFormatter_class( ); - /* Expose DateFormat constants to PHP scripts */ - dateformat_register_constants( INIT_FUNC_ARGS_PASSTHRU ); - /* Register 'IntlDateTimeFormatter' PHP class */ dateformat_register_IntlDatePatternGenerator_class( ); @@ -188,33 +174,21 @@ PHP_MINIT_FUNCTION( intl ) /* Register 'Transliterator' PHP class */ transliterator_register_Transliterator_class( ); - /* Register Transliterator constants */ - transliterator_register_constants( INIT_FUNC_ARGS_PASSTHRU ); - /* Register 'IntlTimeZone' PHP class */ timezone_register_IntlTimeZone_class( ); /* Register 'IntlCalendar' PHP class */ calendar_register_IntlCalendar_class( ); - /* Expose ICU error codes to PHP scripts. */ - intl_expose_icu_error_codes( INIT_FUNC_ARGS_PASSTHRU ); - - /* Expose IDN constants to PHP scripts. */ - idn_register_constants(INIT_FUNC_ARGS_PASSTHRU); - /* Register 'Spoofchecker' PHP class */ spoofchecker_register_Spoofchecker_class( ); - /* Expose Spoofchecker constants to PHP scripts */ - spoofchecker_register_constants( INIT_FUNC_ARGS_PASSTHRU ); - /* Register 'IntlException' PHP class */ IntlException_ce_ptr = register_class_IntlException(zend_ce_exception); IntlException_ce_ptr->create_object = zend_ce_exception->create_object; - /* Register 'IntlIterator' PHP class */ - intl_register_IntlIterator_class( ); + /* Register common symbols and classes */ + intl_register_common_symbols(module_number); /* Register 'BreakIterator' class */ breakiterator_register_BreakIterator_class( ); @@ -283,7 +257,7 @@ PHP_MINFO_FUNCTION( intl ) #endif php_info_print_table_start(); - php_info_print_table_header( 2, "Internationalization support", "enabled" ); + php_info_print_table_row( 2, "Internationalization support", "enabled" ); php_info_print_table_row( 2, "ICU version", U_ICU_VERSION ); #ifdef U_ICU_DATA_VERSION php_info_print_table_row( 2, "ICU Data version", U_ICU_DATA_VERSION ); diff --git a/ext/intl/php_intl.stub.php b/ext/intl/php_intl.stub.php index 5d1dd192a3e92..c21ad58fa092e 100644 --- a/ext/intl/php_intl.stub.php +++ b/ext/intl/php_intl.stub.php @@ -20,6 +20,153 @@ const INTL_ICU_DATA_VERSION = UNKNOWN; #endif +/** + * @var int + * @cvalue GRAPHEME_EXTRACT_TYPE_COUNT + */ +const GRAPHEME_EXTR_COUNT = UNKNOWN; +/** + * @var int + * @cvalue GRAPHEME_EXTRACT_TYPE_MAXBYTES + */ +const GRAPHEME_EXTR_MAXBYTES = UNKNOWN; +/** + * @var int + * @cvalue GRAPHEME_EXTRACT_TYPE_MAXCHARS + */ +const GRAPHEME_EXTR_MAXCHARS = UNKNOWN; + +/** + * Option to prohibit processing of unassigned codepoints in the input and + * do not check if the input conforms to STD-3 ASCII rules. + * @var int + * @cvalue UIDNA_DEFAULT + */ +const IDNA_DEFAULT = UNKNOWN; + +/** + * Option to allow processing of unassigned codepoints in the input + * @var int + * @cvalue UIDNA_ALLOW_UNASSIGNED + */ +const IDNA_ALLOW_UNASSIGNED = UNKNOWN; + +/** + * Option to check if input conforms to STD-3 ASCII rules + * @var int + * @cvalue UIDNA_USE_STD3_RULES + */ +const IDNA_USE_STD3_RULES = UNKNOWN; + +/** + * Option to check for whether the input conforms to the BiDi rules. + * Ignored by the IDNA2003 implementation. (IDNA2003 always performs a BiDi check.) + * @var int + * @cvalue UIDNA_CHECK_BIDI + */ +const IDNA_CHECK_BIDI = UNKNOWN; + +/** + * Option to check for whether the input conforms to the CONTEXTJ rules. + * Ignored by the IDNA2003 implementation. (The CONTEXTJ check is new in IDNA2008.) + * @var int + * @cvalue UIDNA_CHECK_CONTEXTJ + */ +const IDNA_CHECK_CONTEXTJ = UNKNOWN; + +/** + * Option for nontransitional processing in ToASCII(). + * By default, ToASCII() uses transitional processing. + * Ignored by the IDNA2003 implementation. + * @var int + * @cvalue UIDNA_NONTRANSITIONAL_TO_ASCII + */ +const IDNA_NONTRANSITIONAL_TO_ASCII = UNKNOWN; + +/** + * Option for nontransitional processing in ToUnicode(). + * By default, ToUnicode() uses transitional processing. + * Ignored by the IDNA2003 implementation. + * @var int + * @cvalue UIDNA_NONTRANSITIONAL_TO_UNICODE + */ +const IDNA_NONTRANSITIONAL_TO_UNICODE = UNKNOWN; + +/* VARIANTS */ + +/** + * @var int + * @cvalue INTL_IDN_VARIANT_UTS46 + */ +const INTL_IDNA_VARIANT_UTS46 = UNKNOWN; + +/* PINFO ERROR CODES */ +/** + * @var int + * @cvalue UIDNA_ERROR_EMPTY_LABEL + */ +const IDNA_ERROR_EMPTY_LABEL = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_LABEL_TOO_LONG + */ +const IDNA_ERROR_LABEL_TOO_LONG = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_DOMAIN_NAME_TOO_LONG + */ +const IDNA_ERROR_DOMAIN_NAME_TOO_LONG = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_LEADING_HYPHEN + */ +const IDNA_ERROR_LEADING_HYPHEN = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_TRAILING_HYPHEN + */ +const IDNA_ERROR_TRAILING_HYPHEN = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_HYPHEN_3_4 + */ +const IDNA_ERROR_HYPHEN_3_4 = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_LEADING_COMBINING_MARK + */ +const IDNA_ERROR_LEADING_COMBINING_MARK = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_DISALLOWED + */ +const IDNA_ERROR_DISALLOWED = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_PUNYCODE + */ +const IDNA_ERROR_PUNYCODE = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_LABEL_HAS_DOT + */ +const IDNA_ERROR_LABEL_HAS_DOT = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_INVALID_ACE_LABEL + */ +const IDNA_ERROR_INVALID_ACE_LABEL = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_BIDI + */ +const IDNA_ERROR_BIDI = UNKNOWN; +/** + * @var int + * @cvalue UIDNA_ERROR_CONTEXTJ + */ +const IDNA_ERROR_CONTEXTJ = UNKNOWN; + class IntlException extends Exception { } diff --git a/ext/intl/php_intl_arginfo.h b/ext/intl/php_intl_arginfo.h index bbdbb23b300a7..b715413989145 100644 --- a/ext/intl/php_intl_arginfo.h +++ b/ext/intl/php_intl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 00c129ef1fe3ff8227fd6926f8702e05582a33a8 */ + * Stub hash: 7008d442eba36e2bc468cc4a7a30eb859d10c07d */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_intlcal_create_instance, 0, 0, IntlCalendar, 1) ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, timezone, "null") @@ -1173,11 +1173,35 @@ static const zend_function_entry class_IntlException_methods[] = { static void register_php_intl_symbols(int module_number) { - REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INTL_MAX_LOCALE_LEN", INTL_MAX_LOCALE_LEN, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("INTL_ICU_VERSION", U_ICU_VERSION, CONST_PERSISTENT); #if defined(U_ICU_DATA_VERSION) - REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", U_ICU_DATA_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("INTL_ICU_DATA_VERSION", U_ICU_DATA_VERSION, CONST_PERSISTENT); #endif + REGISTER_LONG_CONSTANT("GRAPHEME_EXTR_COUNT", GRAPHEME_EXTRACT_TYPE_COUNT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GRAPHEME_EXTR_MAXBYTES", GRAPHEME_EXTRACT_TYPE_MAXBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GRAPHEME_EXTR_MAXCHARS", GRAPHEME_EXTRACT_TYPE_MAXCHARS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_DEFAULT", UIDNA_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ALLOW_UNASSIGNED", UIDNA_ALLOW_UNASSIGNED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_USE_STD3_RULES", UIDNA_USE_STD3_RULES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_CHECK_BIDI", UIDNA_CHECK_BIDI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_CHECK_CONTEXTJ", UIDNA_CHECK_CONTEXTJ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_NONTRANSITIONAL_TO_ASCII", UIDNA_NONTRANSITIONAL_TO_ASCII, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_NONTRANSITIONAL_TO_UNICODE", UIDNA_NONTRANSITIONAL_TO_UNICODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INTL_IDNA_VARIANT_UTS46", INTL_IDN_VARIANT_UTS46, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_EMPTY_LABEL", UIDNA_ERROR_EMPTY_LABEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_LABEL_TOO_LONG", UIDNA_ERROR_LABEL_TOO_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_DOMAIN_NAME_TOO_LONG", UIDNA_ERROR_DOMAIN_NAME_TOO_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_LEADING_HYPHEN", UIDNA_ERROR_LEADING_HYPHEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_TRAILING_HYPHEN", UIDNA_ERROR_TRAILING_HYPHEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_HYPHEN_3_4", UIDNA_ERROR_HYPHEN_3_4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_LEADING_COMBINING_MARK", UIDNA_ERROR_LEADING_COMBINING_MARK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_DISALLOWED", UIDNA_ERROR_DISALLOWED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_PUNYCODE", UIDNA_ERROR_PUNYCODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_LABEL_HAS_DOT", UIDNA_ERROR_LABEL_HAS_DOT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_INVALID_ACE_LABEL", UIDNA_ERROR_INVALID_ACE_LABEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_BIDI", UIDNA_ERROR_BIDI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IDNA_ERROR_CONTEXTJ", UIDNA_ERROR_CONTEXTJ, CONST_PERSISTENT); } static zend_class_entry *register_class_IntlException(zend_class_entry *class_entry_Exception) diff --git a/ext/intl/resourcebundle/resourcebundle_class.c b/ext/intl/resourcebundle/resourcebundle_class.c index 5e1e9e5312e29..9e86b41e761a2 100644 --- a/ext/intl/resourcebundle/resourcebundle_class.c +++ b/ext/intl/resourcebundle/resourcebundle_class.c @@ -67,8 +67,6 @@ static zend_object *ResourceBundle_object_create( zend_class_entry *ce ) rb->me = NULL; rb->child = NULL; - rb->zend.handlers = &ResourceBundle_object_handlers; - return &rb->zend; } /* }}} */ @@ -375,6 +373,7 @@ void resourcebundle_register_class( void ) { ResourceBundle_ce_ptr = register_class_ResourceBundle(zend_ce_aggregate, zend_ce_countable); ResourceBundle_ce_ptr->create_object = ResourceBundle_object_create; + ResourceBundle_ce_ptr->default_object_handlers = &ResourceBundle_object_handlers; ResourceBundle_ce_ptr->get_iterator = resourcebundle_get_iterator; ResourceBundle_object_handlers = std_object_handlers; diff --git a/ext/intl/spoofchecker/spoofchecker.c b/ext/intl/spoofchecker/spoofchecker.c deleted file mode 100644 index f0ed155726deb..0000000000000 --- a/ext/intl/spoofchecker/spoofchecker.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable 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: Scott MacVicar | - +----------------------------------------------------------------------+ - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "spoofchecker_class.h" -#include "spoofchecker.h" - -#include - - -/* {{{ spoofchecker_register_constants - * Register constants - */ -void spoofchecker_register_constants(INIT_FUNC_ARGS) -{ - if (!Spoofchecker_ce_ptr) - { - zend_error(E_ERROR, "Spoofchecker class not defined"); - return; - } - - #define SPOOFCHECKER_EXPOSE_CLASS_CONST(x) zend_declare_class_constant_long(Spoofchecker_ce_ptr, ZEND_STRS( #x ) - 1, USPOOF_##x); - - SPOOFCHECKER_EXPOSE_CLASS_CONST(SINGLE_SCRIPT_CONFUSABLE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(MIXED_SCRIPT_CONFUSABLE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(WHOLE_SCRIPT_CONFUSABLE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(ANY_CASE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(SINGLE_SCRIPT) - SPOOFCHECKER_EXPOSE_CLASS_CONST(INVISIBLE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(CHAR_LIMIT) - -#if U_ICU_VERSION_MAJOR_NUM >= 58 - SPOOFCHECKER_EXPOSE_CLASS_CONST(ASCII) - SPOOFCHECKER_EXPOSE_CLASS_CONST(HIGHLY_RESTRICTIVE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(MODERATELY_RESTRICTIVE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(MINIMALLY_RESTRICTIVE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(UNRESTRICTIVE) - SPOOFCHECKER_EXPOSE_CLASS_CONST(SINGLE_SCRIPT_RESTRICTIVE) -#endif - - #undef SPOOFCHECKER_EXPOSE_CLASS_CONST -} -/* }}} */ diff --git a/ext/intl/spoofchecker/spoofchecker.h b/ext/intl/spoofchecker/spoofchecker.h deleted file mode 100644 index 8d706f4356299..0000000000000 --- a/ext/intl/spoofchecker/spoofchecker.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable 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: Scott MacVicar | - +----------------------------------------------------------------------+ - */ - -#ifndef SPOOFCHECKER_SPOOFCHECKER_H -#define SPOOFCHECKER_SPOOFCHECKER_H - -#include - -void spoofchecker_register_constants(INIT_FUNC_ARGS); - -#endif // SPOOFCHECKER_SPOOFCHECKER_H diff --git a/ext/intl/spoofchecker/spoofchecker.stub.php b/ext/intl/spoofchecker/spoofchecker.stub.php index dc414949b0ab8..71f6ad0f2e208 100644 --- a/ext/intl/spoofchecker/spoofchecker.stub.php +++ b/ext/intl/spoofchecker/spoofchecker.stub.php @@ -5,6 +5,74 @@ /** @not-serializable */ class Spoofchecker { + /** + * @var int + * @cvalue USPOOF_SINGLE_SCRIPT_CONFUSABLE + */ + public const SINGLE_SCRIPT_CONFUSABLE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_MIXED_SCRIPT_CONFUSABLE + */ + public const MIXED_SCRIPT_CONFUSABLE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_WHOLE_SCRIPT_CONFUSABLE + */ + public const WHOLE_SCRIPT_CONFUSABLE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_ANY_CASE + */ + public const ANY_CASE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_SINGLE_SCRIPT + */ + public const SINGLE_SCRIPT = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_INVISIBLE + */ + public const INVISIBLE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_CHAR_LIMIT + */ + public const CHAR_LIMIT = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 58 + /** + * @var int + * @cvalue USPOOF_ASCII + */ + public const ASCII = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_HIGHLY_RESTRICTIVE + */ + public const HIGHLY_RESTRICTIVE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_MODERATELY_RESTRICTIVE + */ + public const MODERATELY_RESTRICTIVE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_MINIMALLY_RESTRICTIVE + */ + public const MINIMALLY_RESTRICTIVE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_UNRESTRICTIVE + */ + public const UNRESTRICTIVE = UNKNOWN; + /** + * @var int + * @cvalue USPOOF_SINGLE_SCRIPT_RESTRICTIVE + */ + public const SINGLE_SCRIPT_RESTRICTIVE = UNKNOWN; +#endif + public function __construct() {} /** diff --git a/ext/intl/spoofchecker/spoofchecker_arginfo.h b/ext/intl/spoofchecker/spoofchecker_arginfo.h index c030015d49c86..98df10a3350a4 100644 --- a/ext/intl/spoofchecker/spoofchecker_arginfo.h +++ b/ext/intl/spoofchecker/spoofchecker_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: f1c86958a39aa8f89ee468a0753f6a5b232c3e1f */ + * Stub hash: eb2f5a660053b4a38858045968b746bdb3be072e */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Spoofchecker___construct, 0, 0, 0) ZEND_END_ARG_INFO() @@ -60,5 +60,95 @@ static zend_class_entry *register_class_Spoofchecker(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_SINGLE_SCRIPT_CONFUSABLE_value; + ZVAL_LONG(&const_SINGLE_SCRIPT_CONFUSABLE_value, USPOOF_SINGLE_SCRIPT_CONFUSABLE); + zend_string *const_SINGLE_SCRIPT_CONFUSABLE_name = zend_string_init_interned("SINGLE_SCRIPT_CONFUSABLE", sizeof("SINGLE_SCRIPT_CONFUSABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SINGLE_SCRIPT_CONFUSABLE_name, &const_SINGLE_SCRIPT_CONFUSABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SINGLE_SCRIPT_CONFUSABLE_name); + + zval const_MIXED_SCRIPT_CONFUSABLE_value; + ZVAL_LONG(&const_MIXED_SCRIPT_CONFUSABLE_value, USPOOF_MIXED_SCRIPT_CONFUSABLE); + zend_string *const_MIXED_SCRIPT_CONFUSABLE_name = zend_string_init_interned("MIXED_SCRIPT_CONFUSABLE", sizeof("MIXED_SCRIPT_CONFUSABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MIXED_SCRIPT_CONFUSABLE_name, &const_MIXED_SCRIPT_CONFUSABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MIXED_SCRIPT_CONFUSABLE_name); + + zval const_WHOLE_SCRIPT_CONFUSABLE_value; + ZVAL_LONG(&const_WHOLE_SCRIPT_CONFUSABLE_value, USPOOF_WHOLE_SCRIPT_CONFUSABLE); + zend_string *const_WHOLE_SCRIPT_CONFUSABLE_name = zend_string_init_interned("WHOLE_SCRIPT_CONFUSABLE", sizeof("WHOLE_SCRIPT_CONFUSABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WHOLE_SCRIPT_CONFUSABLE_name, &const_WHOLE_SCRIPT_CONFUSABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WHOLE_SCRIPT_CONFUSABLE_name); + + zval const_ANY_CASE_value; + ZVAL_LONG(&const_ANY_CASE_value, USPOOF_ANY_CASE); + zend_string *const_ANY_CASE_name = zend_string_init_interned("ANY_CASE", sizeof("ANY_CASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ANY_CASE_name, &const_ANY_CASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ANY_CASE_name); + + zval const_SINGLE_SCRIPT_value; + ZVAL_LONG(&const_SINGLE_SCRIPT_value, USPOOF_SINGLE_SCRIPT); + zend_string *const_SINGLE_SCRIPT_name = zend_string_init_interned("SINGLE_SCRIPT", sizeof("SINGLE_SCRIPT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SINGLE_SCRIPT_name, &const_SINGLE_SCRIPT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SINGLE_SCRIPT_name); + + zval const_INVISIBLE_value; + ZVAL_LONG(&const_INVISIBLE_value, USPOOF_INVISIBLE); + zend_string *const_INVISIBLE_name = zend_string_init_interned("INVISIBLE", sizeof("INVISIBLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_INVISIBLE_name, &const_INVISIBLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_INVISIBLE_name); + + zval const_CHAR_LIMIT_value; + ZVAL_LONG(&const_CHAR_LIMIT_value, USPOOF_CHAR_LIMIT); + zend_string *const_CHAR_LIMIT_name = zend_string_init_interned("CHAR_LIMIT", sizeof("CHAR_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_LIMIT_name, &const_CHAR_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_LIMIT_name); +#if U_ICU_VERSION_MAJOR_NUM >= 58 + + zval const_ASCII_value; + ZVAL_LONG(&const_ASCII_value, USPOOF_ASCII); + zend_string *const_ASCII_name = zend_string_init_interned("ASCII", sizeof("ASCII") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ASCII_name, &const_ASCII_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ASCII_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 58 + + zval const_HIGHLY_RESTRICTIVE_value; + ZVAL_LONG(&const_HIGHLY_RESTRICTIVE_value, USPOOF_HIGHLY_RESTRICTIVE); + zend_string *const_HIGHLY_RESTRICTIVE_name = zend_string_init_interned("HIGHLY_RESTRICTIVE", sizeof("HIGHLY_RESTRICTIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HIGHLY_RESTRICTIVE_name, &const_HIGHLY_RESTRICTIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HIGHLY_RESTRICTIVE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 58 + + zval const_MODERATELY_RESTRICTIVE_value; + ZVAL_LONG(&const_MODERATELY_RESTRICTIVE_value, USPOOF_MODERATELY_RESTRICTIVE); + zend_string *const_MODERATELY_RESTRICTIVE_name = zend_string_init_interned("MODERATELY_RESTRICTIVE", sizeof("MODERATELY_RESTRICTIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MODERATELY_RESTRICTIVE_name, &const_MODERATELY_RESTRICTIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MODERATELY_RESTRICTIVE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 58 + + zval const_MINIMALLY_RESTRICTIVE_value; + ZVAL_LONG(&const_MINIMALLY_RESTRICTIVE_value, USPOOF_MINIMALLY_RESTRICTIVE); + zend_string *const_MINIMALLY_RESTRICTIVE_name = zend_string_init_interned("MINIMALLY_RESTRICTIVE", sizeof("MINIMALLY_RESTRICTIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_MINIMALLY_RESTRICTIVE_name, &const_MINIMALLY_RESTRICTIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_MINIMALLY_RESTRICTIVE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 58 + + zval const_UNRESTRICTIVE_value; + ZVAL_LONG(&const_UNRESTRICTIVE_value, USPOOF_UNRESTRICTIVE); + zend_string *const_UNRESTRICTIVE_name = zend_string_init_interned("UNRESTRICTIVE", sizeof("UNRESTRICTIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UNRESTRICTIVE_name, &const_UNRESTRICTIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UNRESTRICTIVE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 58 + + zval const_SINGLE_SCRIPT_RESTRICTIVE_value; + ZVAL_LONG(&const_SINGLE_SCRIPT_RESTRICTIVE_value, USPOOF_SINGLE_SCRIPT_RESTRICTIVE); + zend_string *const_SINGLE_SCRIPT_RESTRICTIVE_name = zend_string_init_interned("SINGLE_SCRIPT_RESTRICTIVE", sizeof("SINGLE_SCRIPT_RESTRICTIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SINGLE_SCRIPT_RESTRICTIVE_name, &const_SINGLE_SCRIPT_RESTRICTIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SINGLE_SCRIPT_RESTRICTIVE_name); +#endif + return class_entry; } diff --git a/ext/intl/spoofchecker/spoofchecker_class.c b/ext/intl/spoofchecker/spoofchecker_class.c index ed343ec1bed01..5687c26900fc4 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.c +++ b/ext/intl/spoofchecker/spoofchecker_class.c @@ -47,8 +47,6 @@ zend_object *Spoofchecker_object_create(zend_class_entry *ce) zend_object_std_init(&intern->zo, ce); object_properties_init(&intern->zo, ce); - intern->zo.handlers = &Spoofchecker_handlers; - return &intern->zo; } /* }}} */ @@ -93,6 +91,7 @@ void spoofchecker_register_Spoofchecker_class(void) /* Create and register 'Spoofchecker' class. */ Spoofchecker_ce_ptr = register_class_Spoofchecker(); Spoofchecker_ce_ptr->create_object = Spoofchecker_object_create; + Spoofchecker_ce_ptr->default_object_handlers = &Spoofchecker_handlers; memcpy(&Spoofchecker_handlers, &std_object_handlers, sizeof Spoofchecker_handlers); @@ -130,6 +129,13 @@ void spoofchecker_object_destroy(Spoofchecker_object* co) co->uspoof = NULL; } +#if U_ICU_VERSION_MAJOR_NUM >= 58 + if (co->uspoofres) { + uspoof_closeCheckResult(co->uspoofres); + co->uspoofres = NULL; + } +#endif + intl_error_reset(SPOOFCHECKER_ERROR_P(co)); } /* }}} */ diff --git a/ext/intl/spoofchecker/spoofchecker_class.h b/ext/intl/spoofchecker/spoofchecker_class.h index 79b7c5bf17a78..480eeeb476ffb 100644 --- a/ext/intl/spoofchecker/spoofchecker_class.h +++ b/ext/intl/spoofchecker/spoofchecker_class.h @@ -28,7 +28,10 @@ typedef struct { intl_error err; // ICU Spoofchecker - USpoofChecker* uspoof; + USpoofChecker* uspoof; +#if U_ICU_VERSION_MAJOR_NUM >= 58 + USpoofCheckResult* uspoofres; +#endif zend_object zo; } Spoofchecker_object; diff --git a/ext/intl/spoofchecker/spoofchecker_create.c b/ext/intl/spoofchecker/spoofchecker_create.c index 7e39863a19dd6..54470808c93c4 100644 --- a/ext/intl/spoofchecker/spoofchecker_create.c +++ b/ext/intl/spoofchecker/spoofchecker_create.c @@ -49,6 +49,7 @@ PHP_METHOD(Spoofchecker, __construct) uspoof_check2 APIs when it became stable, to use extended check result APIs. Subsequent changes in the unicode security algos are to be watched.*/ uspoof_setRestrictionLevel(co->uspoof, SPOOFCHECKER_DEFAULT_RESTRICTION_LEVEL); + co->uspoofres = uspoof_openCheckResult(SPOOFCHECKER_ERROR_CODE_P(co)); #else /* Single-script enforcement is on by default. This fails for languages like Japanese that legally use multiple scripts within a single word, diff --git a/ext/intl/spoofchecker/spoofchecker_main.c b/ext/intl/spoofchecker/spoofchecker_main.c index 35f7aef810223..a45d772a26f47 100644 --- a/ext/intl/spoofchecker/spoofchecker_main.c +++ b/ext/intl/spoofchecker/spoofchecker_main.c @@ -22,7 +22,7 @@ /* {{{ Checks if a given text contains any suspicious characters */ PHP_METHOD(Spoofchecker, isSuspicious) { - int ret; + int32_t ret, errmask; char *text; size_t text_len; zval *error_code = NULL; @@ -34,10 +34,21 @@ PHP_METHOD(Spoofchecker, isSuspicious) SPOOFCHECKER_METHOD_FETCH_OBJECT; +#if U_ICU_VERSION_MAJOR_NUM >= 58 + ret = uspoof_check2UTF8(co->uspoof, text, text_len, co->uspoofres, SPOOFCHECKER_ERROR_CODE_P(co)); +#else ret = uspoof_checkUTF8(co->uspoof, text, text_len, NULL, SPOOFCHECKER_ERROR_CODE_P(co)); +#endif if (U_FAILURE(SPOOFCHECKER_ERROR_CODE(co))) { php_error_docref(NULL, E_WARNING, "(%d) %s", SPOOFCHECKER_ERROR_CODE(co), u_errorName(SPOOFCHECKER_ERROR_CODE(co))); +#if U_ICU_VERSION_MAJOR_NUM >= 58 + errmask = uspoof_getCheckResultChecks(co->uspoofres, SPOOFCHECKER_ERROR_CODE_P(co)); + + if (errmask != ret) { + php_error_docref(NULL, E_WARNING, "unexpected error (%d), does not relate to the flags passed to setChecks (%d)", ret, errmask); + } +#endif RETURN_TRUE; } diff --git a/ext/intl/tests/dateformat_formatObject_error.phpt b/ext/intl/tests/dateformat_formatObject_error.phpt index 1bf84027b08bf..9f5a43c831f2b 100644 --- a/ext/intl/tests/dateformat_formatObject_error.phpt +++ b/ext/intl/tests/dateformat_formatObject_error.phpt @@ -29,7 +29,7 @@ var_dump(IntlDateFormatter::formatObject($cal, "")); ?> --EXPECTF-- -Warning: IntlDateFormatter::formatObject(): datefmt_format_object: the passed object must be an instance of either IntlCalendar or DateTime in %s on line %d +Warning: IntlDateFormatter::formatObject(): datefmt_format_object: the passed object must be an instance of either IntlCalendar or DateTimeInterface in %s on line %d bool(false) Warning: IntlDateFormatter::formatObject(): datefmt_format_object: bad IntlCalendar instance: not initialized properly in %s on line %d diff --git a/ext/intl/timezone/timezone.stub.php b/ext/intl/timezone/timezone.stub.php index 55592a386cc0f..a62219f441098 100644 --- a/ext/intl/timezone/timezone.stub.php +++ b/ext/intl/timezone/timezone.stub.php @@ -5,6 +5,64 @@ /** @not-serializable */ class IntlTimeZone { + /** + * @var int + * @cvalue TimeZone::SHORT + */ + public const DISPLAY_SHORT = UNKNOWN; + /** + * @var int + * @cvalue TimeZone::LONG + */ + public const DISPLAY_LONG = UNKNOWN; + + /** + * @var int + * @cvalue TimeZone::SHORT_GENERIC + */ + public const DISPLAY_SHORT_GENERIC = UNKNOWN; + /** + * @var int + * @cvalue TimeZone::LONG_GENERIC + */ + public const DISPLAY_LONG_GENERIC = UNKNOWN; + /** + * @var int + * @cvalue TimeZone::SHORT_GMT + */ + public const DISPLAY_SHORT_GMT = UNKNOWN; + /** + * @var int + * @cvalue TimeZone::LONG_GMT + */ + public const DISPLAY_LONG_GMT = UNKNOWN; + /** + * @var int + * @cvalue TimeZone::SHORT_COMMONLY_USED + */ + public const DISPLAY_SHORT_COMMONLY_USED = UNKNOWN; + /** + * @var int + * @cvalue TimeZone::GENERIC_LOCATION + */ + public const DISPLAY_GENERIC_LOCATION = UNKNOWN; + + /** + * @var int + * @cvalue UCAL_ZONE_TYPE_ANY + */ + public const TYPE_ANY = UNKNOWN; + /** + * @var int + * @cvalue UCAL_ZONE_TYPE_CANONICAL + */ + public const TYPE_CANONICAL = UNKNOWN; + /** + * @var int + * @cvalue UCAL_ZONE_TYPE_CANONICAL_LOCATION + */ + public const TYPE_CANONICAL_LOCATION = UNKNOWN; + private function __construct() {} /** diff --git a/ext/intl/timezone/timezone_arginfo.h b/ext/intl/timezone/timezone_arginfo.h index d0d1e94d2f84f..d1098d81b370e 100644 --- a/ext/intl/timezone/timezone_arginfo.h +++ b/ext/intl/timezone/timezone_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 2ec7a46ca205dfeb9ef0dc3c8e8d78bce1cf43be */ + * Stub hash: 0617d5cab74655058d97581f60f3a486e2875beb */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_IntlTimeZone___construct, 0, 0, 0) ZEND_END_ARG_INFO() @@ -171,5 +171,71 @@ static zend_class_entry *register_class_IntlTimeZone(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_DISPLAY_SHORT_value; + ZVAL_LONG(&const_DISPLAY_SHORT_value, TimeZone::SHORT); + zend_string *const_DISPLAY_SHORT_name = zend_string_init_interned("DISPLAY_SHORT", sizeof("DISPLAY_SHORT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_SHORT_name, &const_DISPLAY_SHORT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_SHORT_name); + + zval const_DISPLAY_LONG_value; + ZVAL_LONG(&const_DISPLAY_LONG_value, TimeZone::LONG); + zend_string *const_DISPLAY_LONG_name = zend_string_init_interned("DISPLAY_LONG", sizeof("DISPLAY_LONG") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_LONG_name, &const_DISPLAY_LONG_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_LONG_name); + + zval const_DISPLAY_SHORT_GENERIC_value; + ZVAL_LONG(&const_DISPLAY_SHORT_GENERIC_value, TimeZone::SHORT_GENERIC); + zend_string *const_DISPLAY_SHORT_GENERIC_name = zend_string_init_interned("DISPLAY_SHORT_GENERIC", sizeof("DISPLAY_SHORT_GENERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_SHORT_GENERIC_name, &const_DISPLAY_SHORT_GENERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_SHORT_GENERIC_name); + + zval const_DISPLAY_LONG_GENERIC_value; + ZVAL_LONG(&const_DISPLAY_LONG_GENERIC_value, TimeZone::LONG_GENERIC); + zend_string *const_DISPLAY_LONG_GENERIC_name = zend_string_init_interned("DISPLAY_LONG_GENERIC", sizeof("DISPLAY_LONG_GENERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_LONG_GENERIC_name, &const_DISPLAY_LONG_GENERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_LONG_GENERIC_name); + + zval const_DISPLAY_SHORT_GMT_value; + ZVAL_LONG(&const_DISPLAY_SHORT_GMT_value, TimeZone::SHORT_GMT); + zend_string *const_DISPLAY_SHORT_GMT_name = zend_string_init_interned("DISPLAY_SHORT_GMT", sizeof("DISPLAY_SHORT_GMT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_SHORT_GMT_name, &const_DISPLAY_SHORT_GMT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_SHORT_GMT_name); + + zval const_DISPLAY_LONG_GMT_value; + ZVAL_LONG(&const_DISPLAY_LONG_GMT_value, TimeZone::LONG_GMT); + zend_string *const_DISPLAY_LONG_GMT_name = zend_string_init_interned("DISPLAY_LONG_GMT", sizeof("DISPLAY_LONG_GMT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_LONG_GMT_name, &const_DISPLAY_LONG_GMT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_LONG_GMT_name); + + zval const_DISPLAY_SHORT_COMMONLY_USED_value; + ZVAL_LONG(&const_DISPLAY_SHORT_COMMONLY_USED_value, TimeZone::SHORT_COMMONLY_USED); + zend_string *const_DISPLAY_SHORT_COMMONLY_USED_name = zend_string_init_interned("DISPLAY_SHORT_COMMONLY_USED", sizeof("DISPLAY_SHORT_COMMONLY_USED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_SHORT_COMMONLY_USED_name, &const_DISPLAY_SHORT_COMMONLY_USED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_SHORT_COMMONLY_USED_name); + + zval const_DISPLAY_GENERIC_LOCATION_value; + ZVAL_LONG(&const_DISPLAY_GENERIC_LOCATION_value, TimeZone::GENERIC_LOCATION); + zend_string *const_DISPLAY_GENERIC_LOCATION_name = zend_string_init_interned("DISPLAY_GENERIC_LOCATION", sizeof("DISPLAY_GENERIC_LOCATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DISPLAY_GENERIC_LOCATION_name, &const_DISPLAY_GENERIC_LOCATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DISPLAY_GENERIC_LOCATION_name); + + zval const_TYPE_ANY_value; + ZVAL_LONG(&const_TYPE_ANY_value, UCAL_ZONE_TYPE_ANY); + zend_string *const_TYPE_ANY_name = zend_string_init_interned("TYPE_ANY", sizeof("TYPE_ANY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_ANY_name, &const_TYPE_ANY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_ANY_name); + + zval const_TYPE_CANONICAL_value; + ZVAL_LONG(&const_TYPE_CANONICAL_value, UCAL_ZONE_TYPE_CANONICAL); + zend_string *const_TYPE_CANONICAL_name = zend_string_init_interned("TYPE_CANONICAL", sizeof("TYPE_CANONICAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_CANONICAL_name, &const_TYPE_CANONICAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_CANONICAL_name); + + zval const_TYPE_CANONICAL_LOCATION_value; + ZVAL_LONG(&const_TYPE_CANONICAL_LOCATION_value, UCAL_ZONE_TYPE_CANONICAL_LOCATION); + zend_string *const_TYPE_CANONICAL_LOCATION_name = zend_string_init_interned("TYPE_CANONICAL_LOCATION", sizeof("TYPE_CANONICAL_LOCATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_TYPE_CANONICAL_LOCATION_name, &const_TYPE_CANONICAL_LOCATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_TYPE_CANONICAL_LOCATION_name); + return class_entry; } diff --git a/ext/intl/timezone/timezone_class.cpp b/ext/intl/timezone/timezone_class.cpp index 64dec44f0eb3b..df1da4c021daa 100644 --- a/ext/intl/timezone/timezone_class.cpp +++ b/ext/intl/timezone/timezone_class.cpp @@ -377,8 +377,6 @@ static zend_object *TimeZone_object_create(zend_class_entry *ce) object_properties_init(&intern->zo, ce); TimeZone_object_init(intern); - intern->zo.handlers = &TimeZone_handlers; - return &intern->zo; } /* }}} */ @@ -391,6 +389,7 @@ U_CFUNC void timezone_register_IntlTimeZone_class(void) /* Create and register 'IntlTimeZone' class. */ TimeZone_ce_ptr = register_class_IntlTimeZone(); TimeZone_ce_ptr->create_object = TimeZone_object_create; + TimeZone_ce_ptr->default_object_handlers = &TimeZone_handlers; memcpy(&TimeZone_handlers, &std_object_handlers, sizeof TimeZone_handlers); @@ -399,28 +398,5 @@ U_CFUNC void timezone_register_IntlTimeZone_class(void) TimeZone_handlers.compare = TimeZone_compare_objects; TimeZone_handlers.get_debug_info = TimeZone_get_debug_info; TimeZone_handlers.free_obj = TimeZone_objects_free; - - - /* Declare 'IntlTimeZone' class constants */ -#define TIMEZONE_DECL_LONG_CONST(name, val) \ - zend_declare_class_constant_long(TimeZone_ce_ptr, name, sizeof(name) - 1, \ - val) - - TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT", TimeZone::SHORT); - TIMEZONE_DECL_LONG_CONST("DISPLAY_LONG", TimeZone::LONG); - - TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT_GENERIC", TimeZone::SHORT_GENERIC); - TIMEZONE_DECL_LONG_CONST("DISPLAY_LONG_GENERIC", TimeZone::LONG_GENERIC); - TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT_GMT", TimeZone::SHORT_GMT); - TIMEZONE_DECL_LONG_CONST("DISPLAY_LONG_GMT", TimeZone::LONG_GMT); - TIMEZONE_DECL_LONG_CONST("DISPLAY_SHORT_COMMONLY_USED", TimeZone::SHORT_COMMONLY_USED); - TIMEZONE_DECL_LONG_CONST("DISPLAY_GENERIC_LOCATION", TimeZone::GENERIC_LOCATION); - - TIMEZONE_DECL_LONG_CONST("TYPE_ANY", UCAL_ZONE_TYPE_ANY); - TIMEZONE_DECL_LONG_CONST("TYPE_CANONICAL", UCAL_ZONE_TYPE_CANONICAL); - TIMEZONE_DECL_LONG_CONST("TYPE_CANONICAL_LOCATION", UCAL_ZONE_TYPE_CANONICAL_LOCATION); - - /* Declare 'IntlTimeZone' class properties */ - } /* }}} */ diff --git a/ext/intl/transliterator/transliterator.c b/ext/intl/transliterator/transliterator.c deleted file mode 100644 index 2a6b403874dce..0000000000000 --- a/ext/intl/transliterator/transliterator.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | This source file is subject to version 3.01 of the PHP license, | - | that is bundled with this package in the file LICENSE, and is | - | available through the world-wide-web at the following url: | - | https://www.php.net/license/3_01.txt | - | If you did not receive a copy of the PHP license and are unable 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: Gustavo Lopes | - +----------------------------------------------------------------------+ - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "transliterator_class.h" -#include "transliterator.h" -#include "intl_convert.h" - -#include - -/* {{{ transliterator_register_constants - * Register constants common for both (OO and procedural) APIs. - */ -void transliterator_register_constants( INIT_FUNC_ARGS ) -{ - if( !Transliterator_ce_ptr ) - { - zend_error( E_ERROR, "Transliterator class not defined" ); - return; - } - - #define TRANSLITERATOR_EXPOSE_CONST( x ) REGISTER_LONG_CONSTANT( #x, x, CONST_PERSISTENT | CONST_CS ) - #define TRANSLITERATOR_EXPOSE_CLASS_CONST( x ) zend_declare_class_constant_long( Transliterator_ce_ptr, ZEND_STRS( #x ) - 1, TRANSLITERATOR_##x ); - #define TRANSLITERATOR_EXPOSE_CUSTOM_CLASS_CONST( name, value ) zend_declare_class_constant_long( Transliterator_ce_ptr, ZEND_STRS( name ) - 1, value );*/ - - /* Normalization form constants */ - TRANSLITERATOR_EXPOSE_CLASS_CONST( FORWARD ); - TRANSLITERATOR_EXPOSE_CLASS_CONST( REVERSE ); - - #undef NORMALIZER_EXPOSE_CUSTOM_CLASS_CONST - #undef NORMALIZER_EXPOSE_CLASS_CONST - #undef NORMALIZER_EXPOSE_CONST -} -/* }}} */ diff --git a/ext/intl/transliterator/transliterator.h b/ext/intl/transliterator/transliterator.h index f1082a30fd351..6824321ac4738 100644 --- a/ext/intl/transliterator/transliterator.h +++ b/ext/intl/transliterator/transliterator.h @@ -16,12 +16,10 @@ #define TRANSLITERATOR_TRANSLITERATOR_H #include -#include #include #include "zend_smart_str.h" -void transliterator_register_constants( INIT_FUNC_ARGS ); smart_str transliterator_parse_error_to_string( UParseError* pe ); #endif /* #ifndef TRANSLITERATOR_TRANSLITERATOR_H */ diff --git a/ext/intl/transliterator/transliterator.stub.php b/ext/intl/transliterator/transliterator.stub.php index 8180eeff2300a..57f7603cfe047 100644 --- a/ext/intl/transliterator/transliterator.stub.php +++ b/ext/intl/transliterator/transliterator.stub.php @@ -5,6 +5,17 @@ /** @not-serializable */ class Transliterator { + /** + * @var int + * @cvalue TRANSLITERATOR_FORWARD + */ + public const FORWARD = UNKNOWN; + /** + * @var int + * @cvalue TRANSLITERATOR_REVERSE + */ + public const REVERSE = UNKNOWN; + public readonly string $id; final private function __construct() {} diff --git a/ext/intl/transliterator/transliterator_arginfo.h b/ext/intl/transliterator/transliterator_arginfo.h index daf24231f00a3..05a5275cbb1ee 100644 --- a/ext/intl/transliterator/transliterator_arginfo.h +++ b/ext/intl/transliterator/transliterator_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 11e030b63f10d1362c41cc5c71aa0d4f014c1ffb */ + * Stub hash: dc2edb1b4d2c4fde746a2f29613ffba447cb5ee6 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Transliterator___construct, 0, 0, 0) ZEND_END_ARG_INFO() @@ -63,6 +63,18 @@ static zend_class_entry *register_class_Transliterator(void) class_entry = zend_register_internal_class_ex(&ce, NULL); class_entry->ce_flags |= ZEND_ACC_NOT_SERIALIZABLE; + zval const_FORWARD_value; + ZVAL_LONG(&const_FORWARD_value, TRANSLITERATOR_FORWARD); + zend_string *const_FORWARD_name = zend_string_init_interned("FORWARD", sizeof("FORWARD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FORWARD_name, &const_FORWARD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FORWARD_name); + + zval const_REVERSE_value; + ZVAL_LONG(&const_REVERSE_value, TRANSLITERATOR_REVERSE); + zend_string *const_REVERSE_name = zend_string_init_interned("REVERSE", sizeof("REVERSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_REVERSE_name, &const_REVERSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_REVERSE_name); + zval property_id_default_value; ZVAL_UNDEF(&property_id_default_value); zend_string *property_id_name = zend_string_init("id", sizeof("id") - 1, 1); diff --git a/ext/intl/transliterator/transliterator_class.c b/ext/intl/transliterator/transliterator_class.c index 7e84f471e1273..78c6d562d2f93 100644 --- a/ext/intl/transliterator/transliterator_class.c +++ b/ext/intl/transliterator/transliterator_class.c @@ -117,8 +117,6 @@ static zend_object *Transliterator_object_create( zend_class_entry *ce ) object_properties_init( &intern->zo, ce ); transliterator_object_init( intern ); - intern->zo.handlers = &Transliterator_handlers; - return &intern->zo; } /* }}} */ @@ -184,12 +182,10 @@ void transliterator_register_Transliterator_class( void ) /* Create and register 'Transliterator' class. */ Transliterator_ce_ptr = register_class_Transliterator(); Transliterator_ce_ptr->create_object = Transliterator_object_create; + Transliterator_ce_ptr->default_object_handlers = &Transliterator_handlers; memcpy( &Transliterator_handlers, &std_object_handlers, sizeof Transliterator_handlers ); Transliterator_handlers.offset = XtOffsetOf(Transliterator_object, zo); Transliterator_handlers.free_obj = Transliterator_objects_free; Transliterator_handlers.clone_obj = Transliterator_clone_obj; - - /* constants are declared in transliterator_register_constants, called from MINIT */ - } /* }}} */ diff --git a/ext/intl/uchar/ublockcode-enum.h b/ext/intl/uchar/ublockcode-enum.h deleted file mode 100644 index 489a2da89a693..0000000000000 --- a/ext/intl/uchar/ublockcode-enum.h +++ /dev/null @@ -1,260 +0,0 @@ -/* UBlockCode http://icu-project.org/apiref/icu4c/uchar_8h.html#a19f1662c9c33c31593612d05777ea901*/ -UBLOCKCODE(NO_BLOCK) -UBLOCKCODE(BASIC_LATIN) -UBLOCKCODE(LATIN_1_SUPPLEMENT) -UBLOCKCODE(LATIN_EXTENDED_A) -UBLOCKCODE(LATIN_EXTENDED_B) -UBLOCKCODE(IPA_EXTENSIONS) -UBLOCKCODE(SPACING_MODIFIER_LETTERS) -UBLOCKCODE(COMBINING_DIACRITICAL_MARKS) -UBLOCKCODE(GREEK) -UBLOCKCODE(CYRILLIC) -UBLOCKCODE(ARMENIAN) -UBLOCKCODE(HEBREW) -UBLOCKCODE(ARABIC) -UBLOCKCODE(SYRIAC) -UBLOCKCODE(THAANA) -UBLOCKCODE(DEVANAGARI) -UBLOCKCODE(BENGALI) -UBLOCKCODE(GURMUKHI) -UBLOCKCODE(GUJARATI) -UBLOCKCODE(ORIYA) -UBLOCKCODE(TAMIL) -UBLOCKCODE(TELUGU) -UBLOCKCODE(KANNADA) -UBLOCKCODE(MALAYALAM) -UBLOCKCODE(SINHALA) -UBLOCKCODE(THAI) -UBLOCKCODE(LAO) -UBLOCKCODE(TIBETAN) -UBLOCKCODE(MYANMAR) -UBLOCKCODE(GEORGIAN) -UBLOCKCODE(HANGUL_JAMO) -UBLOCKCODE(ETHIOPIC) -UBLOCKCODE(CHEROKEE) -UBLOCKCODE(UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS) -UBLOCKCODE(OGHAM) -UBLOCKCODE(RUNIC) -UBLOCKCODE(KHMER) -UBLOCKCODE(MONGOLIAN) -UBLOCKCODE(LATIN_EXTENDED_ADDITIONAL) -UBLOCKCODE(GREEK_EXTENDED) -UBLOCKCODE(GENERAL_PUNCTUATION) -UBLOCKCODE(SUPERSCRIPTS_AND_SUBSCRIPTS) -UBLOCKCODE(CURRENCY_SYMBOLS) -UBLOCKCODE(COMBINING_MARKS_FOR_SYMBOLS) -UBLOCKCODE(LETTERLIKE_SYMBOLS) -UBLOCKCODE(NUMBER_FORMS) -UBLOCKCODE(ARROWS) -UBLOCKCODE(MATHEMATICAL_OPERATORS) -UBLOCKCODE(MISCELLANEOUS_TECHNICAL) -UBLOCKCODE(CONTROL_PICTURES) -UBLOCKCODE(OPTICAL_CHARACTER_RECOGNITION) -UBLOCKCODE(ENCLOSED_ALPHANUMERICS) -UBLOCKCODE(BOX_DRAWING) -UBLOCKCODE(BLOCK_ELEMENTS) -UBLOCKCODE(GEOMETRIC_SHAPES) -UBLOCKCODE(MISCELLANEOUS_SYMBOLS) -UBLOCKCODE(DINGBATS) -UBLOCKCODE(BRAILLE_PATTERNS) -UBLOCKCODE(CJK_RADICALS_SUPPLEMENT) -UBLOCKCODE(KANGXI_RADICALS) -UBLOCKCODE(IDEOGRAPHIC_DESCRIPTION_CHARACTERS) -UBLOCKCODE(CJK_SYMBOLS_AND_PUNCTUATION) -UBLOCKCODE(HIRAGANA) -UBLOCKCODE(KATAKANA) -UBLOCKCODE(BOPOMOFO) -UBLOCKCODE(HANGUL_COMPATIBILITY_JAMO) -UBLOCKCODE(KANBUN) -UBLOCKCODE(BOPOMOFO_EXTENDED) -UBLOCKCODE(ENCLOSED_CJK_LETTERS_AND_MONTHS) -UBLOCKCODE(CJK_COMPATIBILITY) -UBLOCKCODE(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A) -UBLOCKCODE(CJK_UNIFIED_IDEOGRAPHS) -UBLOCKCODE(YI_SYLLABLES) -UBLOCKCODE(YI_RADICALS) -UBLOCKCODE(HANGUL_SYLLABLES) -UBLOCKCODE(HIGH_SURROGATES) -UBLOCKCODE(HIGH_PRIVATE_USE_SURROGATES) -UBLOCKCODE(LOW_SURROGATES) -UBLOCKCODE(PRIVATE_USE_AREA) -UBLOCKCODE(PRIVATE_USE) -UBLOCKCODE(CJK_COMPATIBILITY_IDEOGRAPHS) -UBLOCKCODE(ALPHABETIC_PRESENTATION_FORMS) -UBLOCKCODE(ARABIC_PRESENTATION_FORMS_A) -UBLOCKCODE(COMBINING_HALF_MARKS) -UBLOCKCODE(CJK_COMPATIBILITY_FORMS) -UBLOCKCODE(SMALL_FORM_VARIANTS) -UBLOCKCODE(ARABIC_PRESENTATION_FORMS_B) -UBLOCKCODE(SPECIALS) -UBLOCKCODE(HALFWIDTH_AND_FULLWIDTH_FORMS) -UBLOCKCODE(OLD_ITALIC) -UBLOCKCODE(GOTHIC) -UBLOCKCODE(DESERET) -UBLOCKCODE(BYZANTINE_MUSICAL_SYMBOLS) -UBLOCKCODE(MUSICAL_SYMBOLS) -UBLOCKCODE(MATHEMATICAL_ALPHANUMERIC_SYMBOLS) -UBLOCKCODE(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B) -UBLOCKCODE(CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT) -UBLOCKCODE(TAGS) -UBLOCKCODE(CYRILLIC_SUPPLEMENT) -UBLOCKCODE(CYRILLIC_SUPPLEMENTARY) -UBLOCKCODE(TAGALOG) -UBLOCKCODE(HANUNOO) -UBLOCKCODE(BUHID) -UBLOCKCODE(TAGBANWA) -UBLOCKCODE(MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A) -UBLOCKCODE(SUPPLEMENTAL_ARROWS_A) -UBLOCKCODE(SUPPLEMENTAL_ARROWS_B) -UBLOCKCODE(MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B) -UBLOCKCODE(SUPPLEMENTAL_MATHEMATICAL_OPERATORS) -UBLOCKCODE(KATAKANA_PHONETIC_EXTENSIONS) -UBLOCKCODE(VARIATION_SELECTORS) -UBLOCKCODE(SUPPLEMENTARY_PRIVATE_USE_AREA_A) -UBLOCKCODE(SUPPLEMENTARY_PRIVATE_USE_AREA_B) -UBLOCKCODE(LIMBU) -UBLOCKCODE(TAI_LE) -UBLOCKCODE(KHMER_SYMBOLS) -UBLOCKCODE(PHONETIC_EXTENSIONS) -UBLOCKCODE(MISCELLANEOUS_SYMBOLS_AND_ARROWS) -UBLOCKCODE(YIJING_HEXAGRAM_SYMBOLS) -UBLOCKCODE(LINEAR_B_SYLLABARY) -UBLOCKCODE(LINEAR_B_IDEOGRAMS) -UBLOCKCODE(AEGEAN_NUMBERS) -UBLOCKCODE(UGARITIC) -UBLOCKCODE(SHAVIAN) -UBLOCKCODE(OSMANYA) -UBLOCKCODE(CYPRIOT_SYLLABARY) -UBLOCKCODE(TAI_XUAN_JING_SYMBOLS) -UBLOCKCODE(VARIATION_SELECTORS_SUPPLEMENT) -UBLOCKCODE(ANCIENT_GREEK_MUSICAL_NOTATION) -UBLOCKCODE(ANCIENT_GREEK_NUMBERS) -UBLOCKCODE(ARABIC_SUPPLEMENT) -UBLOCKCODE(BUGINESE) -UBLOCKCODE(CJK_STROKES) -UBLOCKCODE(COMBINING_DIACRITICAL_MARKS_SUPPLEMENT) -UBLOCKCODE(COPTIC) -UBLOCKCODE(ETHIOPIC_EXTENDED) -UBLOCKCODE(ETHIOPIC_SUPPLEMENT) -UBLOCKCODE(GEORGIAN_SUPPLEMENT) -UBLOCKCODE(GLAGOLITIC) -UBLOCKCODE(KHAROSHTHI) -UBLOCKCODE(MODIFIER_TONE_LETTERS) -UBLOCKCODE(NEW_TAI_LUE) -UBLOCKCODE(OLD_PERSIAN) -UBLOCKCODE(PHONETIC_EXTENSIONS_SUPPLEMENT) -UBLOCKCODE(SUPPLEMENTAL_PUNCTUATION) -UBLOCKCODE(SYLOTI_NAGRI) -UBLOCKCODE(TIFINAGH) -UBLOCKCODE(VERTICAL_FORMS) -UBLOCKCODE(NKO) -UBLOCKCODE(BALINESE) -UBLOCKCODE(LATIN_EXTENDED_C) -UBLOCKCODE(LATIN_EXTENDED_D) -UBLOCKCODE(PHAGS_PA) -UBLOCKCODE(PHOENICIAN) -UBLOCKCODE(CUNEIFORM) -UBLOCKCODE(CUNEIFORM_NUMBERS_AND_PUNCTUATION) -UBLOCKCODE(COUNTING_ROD_NUMERALS) -UBLOCKCODE(SUNDANESE) -UBLOCKCODE(LEPCHA) -UBLOCKCODE(OL_CHIKI) -UBLOCKCODE(CYRILLIC_EXTENDED_A) -UBLOCKCODE(VAI) -UBLOCKCODE(CYRILLIC_EXTENDED_B) -UBLOCKCODE(SAURASHTRA) -UBLOCKCODE(KAYAH_LI) -UBLOCKCODE(REJANG) -UBLOCKCODE(CHAM) -UBLOCKCODE(ANCIENT_SYMBOLS) -UBLOCKCODE(PHAISTOS_DISC) -UBLOCKCODE(LYCIAN) -UBLOCKCODE(CARIAN) -UBLOCKCODE(LYDIAN) -UBLOCKCODE(MAHJONG_TILES) -UBLOCKCODE(DOMINO_TILES) -UBLOCKCODE(SAMARITAN) -UBLOCKCODE(UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED) -UBLOCKCODE(TAI_THAM) -UBLOCKCODE(VEDIC_EXTENSIONS) -UBLOCKCODE(LISU) -UBLOCKCODE(BAMUM) -UBLOCKCODE(COMMON_INDIC_NUMBER_FORMS) -UBLOCKCODE(DEVANAGARI_EXTENDED) -UBLOCKCODE(HANGUL_JAMO_EXTENDED_A) -UBLOCKCODE(JAVANESE) -UBLOCKCODE(MYANMAR_EXTENDED_A) -UBLOCKCODE(TAI_VIET) -UBLOCKCODE(MEETEI_MAYEK) -UBLOCKCODE(HANGUL_JAMO_EXTENDED_B) -UBLOCKCODE(IMPERIAL_ARAMAIC) -UBLOCKCODE(OLD_SOUTH_ARABIAN) -UBLOCKCODE(AVESTAN) -UBLOCKCODE(INSCRIPTIONAL_PARTHIAN) -UBLOCKCODE(INSCRIPTIONAL_PAHLAVI) -UBLOCKCODE(OLD_TURKIC) -UBLOCKCODE(RUMI_NUMERAL_SYMBOLS) -UBLOCKCODE(KAITHI) -UBLOCKCODE(EGYPTIAN_HIEROGLYPHS) -UBLOCKCODE(ENCLOSED_ALPHANUMERIC_SUPPLEMENT) -UBLOCKCODE(ENCLOSED_IDEOGRAPHIC_SUPPLEMENT) -UBLOCKCODE(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C) -UBLOCKCODE(MANDAIC) -UBLOCKCODE(BATAK) -UBLOCKCODE(ETHIOPIC_EXTENDED_A) -UBLOCKCODE(BRAHMI) -UBLOCKCODE(BAMUM_SUPPLEMENT) -UBLOCKCODE(KANA_SUPPLEMENT) -UBLOCKCODE(PLAYING_CARDS) -UBLOCKCODE(MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS) -UBLOCKCODE(EMOTICONS) -UBLOCKCODE(TRANSPORT_AND_MAP_SYMBOLS) -UBLOCKCODE(ALCHEMICAL_SYMBOLS) -UBLOCKCODE(CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D) -UBLOCKCODE(ARABIC_EXTENDED_A) -UBLOCKCODE(ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS) -UBLOCKCODE(CHAKMA) -UBLOCKCODE(MEETEI_MAYEK_EXTENSIONS) -UBLOCKCODE(MEROITIC_CURSIVE) -UBLOCKCODE(MEROITIC_HIEROGLYPHS) -UBLOCKCODE(MIAO) -UBLOCKCODE(SHARADA) -UBLOCKCODE(SORA_SOMPENG) -UBLOCKCODE(SUNDANESE_SUPPLEMENT) -UBLOCKCODE(TAKRI) -#if U_ICU_VERSION_MAJOR_NUM >= 54 -UBLOCKCODE(BASSA_VAH) -UBLOCKCODE(CAUCASIAN_ALBANIAN) -UBLOCKCODE(COPTIC_EPACT_NUMBERS) -UBLOCKCODE(COMBINING_DIACRITICAL_MARKS_EXTENDED) -UBLOCKCODE(DUPLOYAN) -UBLOCKCODE(ELBASAN) -UBLOCKCODE(GEOMETRIC_SHAPES_EXTENDED) -UBLOCKCODE(GRANTHA) -UBLOCKCODE(KHOJKI) -UBLOCKCODE(KHUDAWADI) -UBLOCKCODE(LATIN_EXTENDED_E) -UBLOCKCODE(LINEAR_A) -UBLOCKCODE(MAHAJANI) -UBLOCKCODE(MANICHAEAN) -UBLOCKCODE(MENDE_KIKAKUI) -UBLOCKCODE(MODI) -UBLOCKCODE(MRO) -UBLOCKCODE(MYANMAR_EXTENDED_B) -UBLOCKCODE(NABATAEAN) -UBLOCKCODE(OLD_NORTH_ARABIAN) -UBLOCKCODE(OLD_PERMIC) -UBLOCKCODE(ORNAMENTAL_DINGBATS) -UBLOCKCODE(PAHAWH_HMONG) -UBLOCKCODE(PALMYRENE) -UBLOCKCODE(PAU_CIN_HAU) -UBLOCKCODE(PSALTER_PAHLAVI) -UBLOCKCODE(SHORTHAND_FORMAT_CONTROLS) -UBLOCKCODE(SIDDHAM) -UBLOCKCODE(SINHALA_ARCHAIC_NUMBERS) -UBLOCKCODE(SUPPLEMENTAL_ARROWS_C) -UBLOCKCODE(TIRHUTA) -UBLOCKCODE(WARANG_CITI) -#endif /* ICU >= 54 */ -UBLOCKCODE(COUNT) -UBLOCKCODE(INVALID_CODE) diff --git a/ext/intl/uchar/uchar.c b/ext/intl/uchar/uchar.c index 43fe38314fbb2..771805925827f 100644 --- a/ext/intl/uchar/uchar.c +++ b/ext/intl/uchar/uchar.c @@ -1,11 +1,12 @@ #include "uchar.h" #include "intl_data.h" #include "intl_convert.h" -#include "uchar_arginfo.h" #include #include +#include "uchar_arginfo.h" + #define IC_METHOD(mname) PHP_METHOD(IntlChar, mname) static inline int convert_cp(UChar32* pcp, zend_string *string_codepoint, zend_long int_codepoint) { @@ -612,45 +613,7 @@ IC_CHAR_METHOD_CHAR(getBidiPairedBracket) /* }}} */ int php_uchar_minit(INIT_FUNC_ARGS) { - zend_class_entry *ce; - - ce = register_class_IntlChar(); - -#define IC_CONSTL(name, val) \ - zend_declare_class_constant_long(ce, name, strlen(name), val); - - zend_declare_class_constant_string(ce, "UNICODE_VERSION", sizeof("UNICODE_VERISON")-1, U_UNICODE_VERSION); - IC_CONSTL("CODEPOINT_MIN", UCHAR_MIN_VALUE) - IC_CONSTL("CODEPOINT_MAX", UCHAR_MAX_VALUE) - zend_declare_class_constant_double(ce, "NO_NUMERIC_VALUE", sizeof("NO_NUMERIC_VALUE")-1, U_NO_NUMERIC_VALUE); - - /* All enums used by the uchar APIs. There are a LOT of them, - * so they're separated out into include files, - * leaving this source file for actual implementation. - */ -#define UPROPERTY(name) IC_CONSTL("PROPERTY_" #name, UCHAR_##name) -#include "uproperty-enum.h" -#undef UPROPERTY - -#define UCHARCATEGORY(name) IC_CONSTL("CHAR_CATEGORY_" #name, U_##name) -#include "ucharcategory-enum.h" -#undef UCHARCATEGORY - -#define UCHARDIRECTION(name) IC_CONSTL("CHAR_DIRECTION_" #name, U_##name) -#include "uchardirection-enum.h" -#undef UCHARDIRECTION - -#define UBLOCKCODE(name) IC_CONSTL("BLOCK_CODE_" #name, UBLOCK_##name) -#include "ublockcode-enum.h" -#undef UBLOCKCODE - - /* Smaller, self-destribing enums */ -#define UOTHER(name) IC_CONSTL(#name, U_##name) -#include "uother-enum.h" -#undef UOTHER - -#undef IC_CONSTL -#undef IC_CONSTS + register_class_IntlChar(); return SUCCESS; } diff --git a/ext/intl/uchar/uchar.stub.php b/ext/intl/uchar/uchar.stub.php index d246c2b25c2ec..d789684fc8f95 100644 --- a/ext/intl/uchar/uchar.stub.php +++ b/ext/intl/uchar/uchar.stub.php @@ -4,6 +4,3382 @@ class IntlChar { + /** + * @var string + * @cvalue U_UNICODE_VERSION + */ + public const UNICODE_VERSION = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_MIN_VALUE + */ + public const CODEPOINT_MIN = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_MAX_VALUE + */ + public const CODEPOINT_MAX = UNKNOWN; + /** + * @var float + * @cvalue U_NO_NUMERIC_VALUE + */ + public const NO_NUMERIC_VALUE = UNKNOWN; + + /** + * @var int + * @cvalue UCHAR_ALPHABETIC + */ + public const PROPERTY_ALPHABETIC = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_BINARY_START + */ + public const PROPERTY_BINARY_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_ASCII_HEX_DIGIT + */ + public const PROPERTY_ASCII_HEX_DIGIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_BIDI_CONTROL + */ + public const PROPERTY_BIDI_CONTROL = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_BIDI_MIRRORED + */ + public const PROPERTY_BIDI_MIRRORED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_DASH + */ + public const PROPERTY_DASH = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_DEFAULT_IGNORABLE_CODE_POINT + */ + public const PROPERTY_DEFAULT_IGNORABLE_CODE_POINT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_DEPRECATED + */ + public const PROPERTY_DEPRECATED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_DIACRITIC + */ + public const PROPERTY_DIACRITIC = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_EXTENDER + */ + public const PROPERTY_EXTENDER = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_FULL_COMPOSITION_EXCLUSION + */ + public const PROPERTY_FULL_COMPOSITION_EXCLUSION = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_GRAPHEME_BASE + */ + public const PROPERTY_GRAPHEME_BASE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_GRAPHEME_EXTEND + */ + public const PROPERTY_GRAPHEME_EXTEND = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_GRAPHEME_LINK + */ + public const PROPERTY_GRAPHEME_LINK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_HEX_DIGIT + */ + public const PROPERTY_HEX_DIGIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_HYPHEN + */ + public const PROPERTY_HYPHEN = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_ID_CONTINUE + */ + public const PROPERTY_ID_CONTINUE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_ID_START + */ + public const PROPERTY_ID_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_IDEOGRAPHIC + */ + public const PROPERTY_IDEOGRAPHIC = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_IDS_BINARY_OPERATOR + */ + public const PROPERTY_IDS_BINARY_OPERATOR = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_IDS_TRINARY_OPERATOR + */ + public const PROPERTY_IDS_TRINARY_OPERATOR = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_JOIN_CONTROL + */ + public const PROPERTY_JOIN_CONTROL = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_LOGICAL_ORDER_EXCEPTION + */ + public const PROPERTY_LOGICAL_ORDER_EXCEPTION = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_LOWERCASE + */ + public const PROPERTY_LOWERCASE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_MATH + */ + public const PROPERTY_MATH = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NONCHARACTER_CODE_POINT + */ + public const PROPERTY_NONCHARACTER_CODE_POINT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_QUOTATION_MARK + */ + public const PROPERTY_QUOTATION_MARK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_RADICAL + */ + public const PROPERTY_RADICAL = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SOFT_DOTTED + */ + public const PROPERTY_SOFT_DOTTED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_TERMINAL_PUNCTUATION + */ + public const PROPERTY_TERMINAL_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_UNIFIED_IDEOGRAPH + */ + public const PROPERTY_UNIFIED_IDEOGRAPH = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_UPPERCASE + */ + public const PROPERTY_UPPERCASE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_WHITE_SPACE + */ + public const PROPERTY_WHITE_SPACE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_XID_CONTINUE + */ + public const PROPERTY_XID_CONTINUE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_XID_START + */ + public const PROPERTY_XID_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CASE_SENSITIVE + */ + public const PROPERTY_CASE_SENSITIVE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_S_TERM + */ + public const PROPERTY_S_TERM = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_VARIATION_SELECTOR + */ + public const PROPERTY_VARIATION_SELECTOR = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFD_INERT + */ + public const PROPERTY_NFD_INERT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFKD_INERT + */ + public const PROPERTY_NFKD_INERT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFC_INERT + */ + public const PROPERTY_NFC_INERT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFKC_INERT + */ + public const PROPERTY_NFKC_INERT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SEGMENT_STARTER + */ + public const PROPERTY_SEGMENT_STARTER = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_PATTERN_SYNTAX + */ + public const PROPERTY_PATTERN_SYNTAX = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_PATTERN_WHITE_SPACE + */ + public const PROPERTY_PATTERN_WHITE_SPACE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_POSIX_ALNUM + */ + public const PROPERTY_POSIX_ALNUM = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_POSIX_BLANK + */ + public const PROPERTY_POSIX_BLANK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_POSIX_GRAPH + */ + public const PROPERTY_POSIX_GRAPH = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_POSIX_PRINT + */ + public const PROPERTY_POSIX_PRINT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_POSIX_XDIGIT + */ + public const PROPERTY_POSIX_XDIGIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CASED + */ + public const PROPERTY_CASED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CASE_IGNORABLE + */ + public const PROPERTY_CASE_IGNORABLE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CHANGES_WHEN_LOWERCASED + */ + public const PROPERTY_CHANGES_WHEN_LOWERCASED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CHANGES_WHEN_UPPERCASED + */ + public const PROPERTY_CHANGES_WHEN_UPPERCASED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CHANGES_WHEN_TITLECASED + */ + public const PROPERTY_CHANGES_WHEN_TITLECASED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CHANGES_WHEN_CASEFOLDED + */ + public const PROPERTY_CHANGES_WHEN_CASEFOLDED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CHANGES_WHEN_CASEMAPPED + */ + public const PROPERTY_CHANGES_WHEN_CASEMAPPED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED + */ + public const PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_BINARY_LIMIT + */ + public const PROPERTY_BINARY_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_BIDI_CLASS + */ + public const PROPERTY_BIDI_CLASS = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_INT_START + */ + public const PROPERTY_INT_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_BLOCK + */ + public const PROPERTY_BLOCK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CANONICAL_COMBINING_CLASS + */ + public const PROPERTY_CANONICAL_COMBINING_CLASS = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_DECOMPOSITION_TYPE + */ + public const PROPERTY_DECOMPOSITION_TYPE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_EAST_ASIAN_WIDTH + */ + public const PROPERTY_EAST_ASIAN_WIDTH = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_GENERAL_CATEGORY + */ + public const PROPERTY_GENERAL_CATEGORY = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_JOINING_GROUP + */ + public const PROPERTY_JOINING_GROUP = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_JOINING_TYPE + */ + public const PROPERTY_JOINING_TYPE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_LINE_BREAK + */ + public const PROPERTY_LINE_BREAK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NUMERIC_TYPE + */ + public const PROPERTY_NUMERIC_TYPE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SCRIPT + */ + public const PROPERTY_SCRIPT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_HANGUL_SYLLABLE_TYPE + */ + public const PROPERTY_HANGUL_SYLLABLE_TYPE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFD_QUICK_CHECK + */ + public const PROPERTY_NFD_QUICK_CHECK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFKD_QUICK_CHECK + */ + public const PROPERTY_NFKD_QUICK_CHECK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFC_QUICK_CHECK + */ + public const PROPERTY_NFC_QUICK_CHECK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NFKC_QUICK_CHECK + */ + public const PROPERTY_NFKC_QUICK_CHECK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_LEAD_CANONICAL_COMBINING_CLASS + */ + public const PROPERTY_LEAD_CANONICAL_COMBINING_CLASS = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_TRAIL_CANONICAL_COMBINING_CLASS + */ + public const PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_GRAPHEME_CLUSTER_BREAK + */ + public const PROPERTY_GRAPHEME_CLUSTER_BREAK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SENTENCE_BREAK + */ + public const PROPERTY_SENTENCE_BREAK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_WORD_BREAK + */ + public const PROPERTY_WORD_BREAK = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 52 + /** + * @var int + * @cvalue UCHAR_BIDI_PAIRED_BRACKET_TYPE + */ + public const PROPERTY_BIDI_PAIRED_BRACKET_TYPE = UNKNOWN; +#endif + /** + * @var int + * @cvalue UCHAR_INT_LIMIT + */ + public const PROPERTY_INT_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_GENERAL_CATEGORY_MASK + */ + public const PROPERTY_GENERAL_CATEGORY_MASK = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_MASK_START + */ + public const PROPERTY_MASK_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_MASK_LIMIT + */ + public const PROPERTY_MASK_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NUMERIC_VALUE + */ + public const PROPERTY_NUMERIC_VALUE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_DOUBLE_START + */ + public const PROPERTY_DOUBLE_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_DOUBLE_LIMIT + */ + public const PROPERTY_DOUBLE_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_AGE + */ + public const PROPERTY_AGE = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_STRING_START + */ + public const PROPERTY_STRING_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_BIDI_MIRRORING_GLYPH + */ + public const PROPERTY_BIDI_MIRRORING_GLYPH = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_CASE_FOLDING + */ + public const PROPERTY_CASE_FOLDING = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_ISO_COMMENT + */ + public const PROPERTY_ISO_COMMENT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_LOWERCASE_MAPPING + */ + public const PROPERTY_LOWERCASE_MAPPING = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_NAME + */ + public const PROPERTY_NAME = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SIMPLE_CASE_FOLDING + */ + public const PROPERTY_SIMPLE_CASE_FOLDING = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SIMPLE_LOWERCASE_MAPPING + */ + public const PROPERTY_SIMPLE_LOWERCASE_MAPPING = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SIMPLE_TITLECASE_MAPPING + */ + public const PROPERTY_SIMPLE_TITLECASE_MAPPING = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SIMPLE_UPPERCASE_MAPPING + */ + public const PROPERTY_SIMPLE_UPPERCASE_MAPPING = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_TITLECASE_MAPPING + */ + public const PROPERTY_TITLECASE_MAPPING = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_UNICODE_1_NAME + */ + public const PROPERTY_UNICODE_1_NAME = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_UPPERCASE_MAPPING + */ + public const PROPERTY_UPPERCASE_MAPPING = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 52 + /** + * @var int + * @cvalue UCHAR_BIDI_PAIRED_BRACKET + */ + public const PROPERTY_BIDI_PAIRED_BRACKET = UNKNOWN; +#endif + /** + * @var int + * @cvalue UCHAR_STRING_LIMIT + */ + public const PROPERTY_STRING_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_SCRIPT_EXTENSIONS + */ + public const PROPERTY_SCRIPT_EXTENSIONS = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_OTHER_PROPERTY_START + */ + public const PROPERTY_OTHER_PROPERTY_START = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_OTHER_PROPERTY_LIMIT + */ + public const PROPERTY_OTHER_PROPERTY_LIMIT = UNKNOWN; + /** + * @var int + * @cvalue UCHAR_INVALID_CODE + */ + public const PROPERTY_INVALID_CODE = UNKNOWN; + + /** + * @var int + * @cvalue U_UNASSIGNED + */ + public const CHAR_CATEGORY_UNASSIGNED = UNKNOWN; + /** + * @var int + * @cvalue U_GENERAL_OTHER_TYPES + */ + public const CHAR_CATEGORY_GENERAL_OTHER_TYPES = UNKNOWN; + /** + * @var int + * @cvalue U_UPPERCASE_LETTER + */ + public const CHAR_CATEGORY_UPPERCASE_LETTER = UNKNOWN; + /** + * @var int + * @cvalue U_LOWERCASE_LETTER + */ + public const CHAR_CATEGORY_LOWERCASE_LETTER = UNKNOWN; + /** + * @var int + * @cvalue U_TITLECASE_LETTER + */ + public const CHAR_CATEGORY_TITLECASE_LETTER = UNKNOWN; + /** + * @var int + * @cvalue U_MODIFIER_LETTER + */ + public const CHAR_CATEGORY_MODIFIER_LETTER = UNKNOWN; + /** + * @var int + * @cvalue U_OTHER_LETTER + */ + public const CHAR_CATEGORY_OTHER_LETTER = UNKNOWN; + /** + * @var int + * @cvalue U_NON_SPACING_MARK + */ + public const CHAR_CATEGORY_NON_SPACING_MARK = UNKNOWN; + /** + * @var int + * @cvalue U_ENCLOSING_MARK + */ + public const CHAR_CATEGORY_ENCLOSING_MARK = UNKNOWN; + /** + * @var int + * @cvalue U_COMBINING_SPACING_MARK + */ + public const CHAR_CATEGORY_COMBINING_SPACING_MARK = UNKNOWN; + /** + * @var int + * @cvalue U_DECIMAL_DIGIT_NUMBER + */ + public const CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER = UNKNOWN; + /** + * @var int + * @cvalue U_LETTER_NUMBER + */ + public const CHAR_CATEGORY_LETTER_NUMBER = UNKNOWN; + /** + * @var int + * @cvalue U_OTHER_NUMBER + */ + public const CHAR_CATEGORY_OTHER_NUMBER = UNKNOWN; + /** + * @var int + * @cvalue U_SPACE_SEPARATOR + */ + public const CHAR_CATEGORY_SPACE_SEPARATOR = UNKNOWN; + /** + * @var int + * @cvalue U_LINE_SEPARATOR + */ + public const CHAR_CATEGORY_LINE_SEPARATOR = UNKNOWN; + /** + * @var int + * @cvalue U_PARAGRAPH_SEPARATOR + */ + public const CHAR_CATEGORY_PARAGRAPH_SEPARATOR = UNKNOWN; + /** + * @var int + * @cvalue U_CONTROL_CHAR + */ + public const CHAR_CATEGORY_CONTROL_CHAR = UNKNOWN; + /** + * @var int + * @cvalue U_FORMAT_CHAR + */ + public const CHAR_CATEGORY_FORMAT_CHAR = UNKNOWN; + /** + * @var int + * @cvalue U_PRIVATE_USE_CHAR + */ + public const CHAR_CATEGORY_PRIVATE_USE_CHAR = UNKNOWN; + /** + * @var int + * @cvalue U_SURROGATE + */ + public const CHAR_CATEGORY_SURROGATE = UNKNOWN; + /** + * @var int + * @cvalue U_DASH_PUNCTUATION + */ + public const CHAR_CATEGORY_DASH_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_START_PUNCTUATION + */ + public const CHAR_CATEGORY_START_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_END_PUNCTUATION + */ + public const CHAR_CATEGORY_END_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_CONNECTOR_PUNCTUATION + */ + public const CHAR_CATEGORY_CONNECTOR_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_OTHER_PUNCTUATION + */ + public const CHAR_CATEGORY_OTHER_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_MATH_SYMBOL + */ + public const CHAR_CATEGORY_MATH_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue U_CURRENCY_SYMBOL + */ + public const CHAR_CATEGORY_CURRENCY_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue U_MODIFIER_SYMBOL + */ + public const CHAR_CATEGORY_MODIFIER_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue U_OTHER_SYMBOL + */ + public const CHAR_CATEGORY_OTHER_SYMBOL = UNKNOWN; + /** + * @var int + * @cvalue U_INITIAL_PUNCTUATION + */ + public const CHAR_CATEGORY_INITIAL_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_FINAL_PUNCTUATION + */ + public const CHAR_CATEGORY_FINAL_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_CHAR_CATEGORY_COUNT + */ + public const CHAR_CATEGORY_CHAR_CATEGORY_COUNT = UNKNOWN; + + /** + * @var int + * @cvalue U_LEFT_TO_RIGHT + */ + public const CHAR_DIRECTION_LEFT_TO_RIGHT = UNKNOWN; + /** + * @var int + * @cvalue U_RIGHT_TO_LEFT + */ + public const CHAR_DIRECTION_RIGHT_TO_LEFT = UNKNOWN; + /** + * @var int + * @cvalue U_EUROPEAN_NUMBER + */ + public const CHAR_DIRECTION_EUROPEAN_NUMBER = UNKNOWN; + /** + * @var int + * @cvalue U_EUROPEAN_NUMBER_SEPARATOR + */ + public const CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR = UNKNOWN; + /** + * @var int + * @cvalue U_EUROPEAN_NUMBER_TERMINATOR + */ + public const CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR = UNKNOWN; + /** + * @var int + * @cvalue U_ARABIC_NUMBER + */ + public const CHAR_DIRECTION_ARABIC_NUMBER = UNKNOWN; + /** + * @var int + * @cvalue U_COMMON_NUMBER_SEPARATOR + */ + public const CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR = UNKNOWN; + /** + * @var int + * @cvalue U_BLOCK_SEPARATOR + */ + public const CHAR_DIRECTION_BLOCK_SEPARATOR = UNKNOWN; + /** + * @var int + * @cvalue U_SEGMENT_SEPARATOR + */ + public const CHAR_DIRECTION_SEGMENT_SEPARATOR = UNKNOWN; + /** + * @var int + * @cvalue U_WHITE_SPACE_NEUTRAL + */ + public const CHAR_DIRECTION_WHITE_SPACE_NEUTRAL = UNKNOWN; + /** + * @var int + * @cvalue U_OTHER_NEUTRAL + */ + public const CHAR_DIRECTION_OTHER_NEUTRAL = UNKNOWN; + /** + * @var int + * @cvalue U_LEFT_TO_RIGHT_EMBEDDING + */ + public const CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING = UNKNOWN; + /** + * @var int + * @cvalue U_LEFT_TO_RIGHT_OVERRIDE + */ + public const CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE = UNKNOWN; + /** + * @var int + * @cvalue U_RIGHT_TO_LEFT_ARABIC + */ + public const CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC = UNKNOWN; + /** + * @var int + * @cvalue U_RIGHT_TO_LEFT_EMBEDDING + */ + public const CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING = UNKNOWN; + /** + * @var int + * @cvalue U_RIGHT_TO_LEFT_OVERRIDE + */ + public const CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE = UNKNOWN; + /** + * @var int + * @cvalue U_POP_DIRECTIONAL_FORMAT + */ + public const CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT = UNKNOWN; + /** + * @var int + * @cvalue U_DIR_NON_SPACING_MARK + */ + public const CHAR_DIRECTION_DIR_NON_SPACING_MARK = UNKNOWN; + /** + * @var int + * @cvalue U_BOUNDARY_NEUTRAL + */ + public const CHAR_DIRECTION_BOUNDARY_NEUTRAL = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 52 + /** + * @var int + * @cvalue U_FIRST_STRONG_ISOLATE + */ + public const CHAR_DIRECTION_FIRST_STRONG_ISOLATE = UNKNOWN; + /** + * @var int + * @cvalue U_LEFT_TO_RIGHT_ISOLATE + */ + public const CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE = UNKNOWN; + /** + * @var int + * @cvalue U_RIGHT_TO_LEFT_ISOLATE + */ + public const CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE = UNKNOWN; + /** + * @var int + * @cvalue U_POP_DIRECTIONAL_ISOLATE + */ + public const CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE = UNKNOWN; +#endif + /** + * @var int + * @cvalue U_CHAR_DIRECTION_COUNT + */ + public const CHAR_DIRECTION_CHAR_DIRECTION_COUNT = UNKNOWN; + + /** + * @var int + * @cvalue UBLOCK_NO_BLOCK + */ + public const BLOCK_CODE_NO_BLOCK = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BASIC_LATIN + */ + public const BLOCK_CODE_BASIC_LATIN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LATIN_1_SUPPLEMENT + */ + public const BLOCK_CODE_LATIN_1_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LATIN_EXTENDED_A + */ + public const BLOCK_CODE_LATIN_EXTENDED_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LATIN_EXTENDED_B + */ + public const BLOCK_CODE_LATIN_EXTENDED_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_IPA_EXTENSIONS + */ + public const BLOCK_CODE_IPA_EXTENSIONS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SPACING_MODIFIER_LETTERS + */ + public const BLOCK_CODE_SPACING_MODIFIER_LETTERS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS + */ + public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GREEK + */ + public const BLOCK_CODE_GREEK = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CYRILLIC + */ + public const BLOCK_CODE_CYRILLIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARMENIAN + */ + public const BLOCK_CODE_ARMENIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HEBREW + */ + public const BLOCK_CODE_HEBREW = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARABIC + */ + public const BLOCK_CODE_ARABIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SYRIAC + */ + public const BLOCK_CODE_SYRIAC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_THAANA + */ + public const BLOCK_CODE_THAANA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_DEVANAGARI + */ + public const BLOCK_CODE_DEVANAGARI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BENGALI + */ + public const BLOCK_CODE_BENGALI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GURMUKHI + */ + public const BLOCK_CODE_GURMUKHI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GUJARATI + */ + public const BLOCK_CODE_GUJARATI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ORIYA + */ + public const BLOCK_CODE_ORIYA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAMIL + */ + public const BLOCK_CODE_TAMIL = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TELUGU + */ + public const BLOCK_CODE_TELUGU = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KANNADA + */ + public const BLOCK_CODE_KANNADA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MALAYALAM + */ + public const BLOCK_CODE_MALAYALAM = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SINHALA + */ + public const BLOCK_CODE_SINHALA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_THAI + */ + public const BLOCK_CODE_THAI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LAO + */ + public const BLOCK_CODE_LAO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TIBETAN + */ + public const BLOCK_CODE_TIBETAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MYANMAR + */ + public const BLOCK_CODE_MYANMAR = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GEORGIAN + */ + public const BLOCK_CODE_GEORGIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HANGUL_JAMO + */ + public const BLOCK_CODE_HANGUL_JAMO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ETHIOPIC + */ + public const BLOCK_CODE_ETHIOPIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CHEROKEE + */ + public const BLOCK_CODE_CHEROKEE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS + */ + public const BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OGHAM + */ + public const BLOCK_CODE_OGHAM = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_RUNIC + */ + public const BLOCK_CODE_RUNIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KHMER + */ + public const BLOCK_CODE_KHMER = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MONGOLIAN + */ + public const BLOCK_CODE_MONGOLIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LATIN_EXTENDED_ADDITIONAL + */ + public const BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GREEK_EXTENDED + */ + public const BLOCK_CODE_GREEK_EXTENDED = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GENERAL_PUNCTUATION + */ + public const BLOCK_CODE_GENERAL_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS + */ + public const BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CURRENCY_SYMBOLS + */ + public const BLOCK_CODE_CURRENCY_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COMBINING_MARKS_FOR_SYMBOLS + */ + public const BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LETTERLIKE_SYMBOLS + */ + public const BLOCK_CODE_LETTERLIKE_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_NUMBER_FORMS + */ + public const BLOCK_CODE_NUMBER_FORMS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARROWS + */ + public const BLOCK_CODE_ARROWS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MATHEMATICAL_OPERATORS + */ + public const BLOCK_CODE_MATHEMATICAL_OPERATORS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MISCELLANEOUS_TECHNICAL + */ + public const BLOCK_CODE_MISCELLANEOUS_TECHNICAL = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CONTROL_PICTURES + */ + public const BLOCK_CODE_CONTROL_PICTURES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OPTICAL_CHARACTER_RECOGNITION + */ + public const BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ENCLOSED_ALPHANUMERICS + */ + public const BLOCK_CODE_ENCLOSED_ALPHANUMERICS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BOX_DRAWING + */ + public const BLOCK_CODE_BOX_DRAWING = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BLOCK_ELEMENTS + */ + public const BLOCK_CODE_BLOCK_ELEMENTS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GEOMETRIC_SHAPES + */ + public const BLOCK_CODE_GEOMETRIC_SHAPES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS + */ + public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_DINGBATS + */ + public const BLOCK_CODE_DINGBATS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BRAILLE_PATTERNS + */ + public const BLOCK_CODE_BRAILLE_PATTERNS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_RADICALS_SUPPLEMENT + */ + public const BLOCK_CODE_CJK_RADICALS_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KANGXI_RADICALS + */ + public const BLOCK_CODE_KANGXI_RADICALS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS + */ + public const BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION + */ + public const BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HIRAGANA + */ + public const BLOCK_CODE_HIRAGANA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KATAKANA + */ + public const BLOCK_CODE_KATAKANA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BOPOMOFO + */ + public const BLOCK_CODE_BOPOMOFO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HANGUL_COMPATIBILITY_JAMO + */ + public const BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KANBUN + */ + public const BLOCK_CODE_KANBUN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BOPOMOFO_EXTENDED + */ + public const BLOCK_CODE_BOPOMOFO_EXTENDED = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS + */ + public const BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_COMPATIBILITY + */ + public const BLOCK_CODE_CJK_COMPATIBILITY = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A + */ + public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS + */ + public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_YI_SYLLABLES + */ + public const BLOCK_CODE_YI_SYLLABLES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_YI_RADICALS + */ + public const BLOCK_CODE_YI_RADICALS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HANGUL_SYLLABLES + */ + public const BLOCK_CODE_HANGUL_SYLLABLES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HIGH_SURROGATES + */ + public const BLOCK_CODE_HIGH_SURROGATES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HIGH_PRIVATE_USE_SURROGATES + */ + public const BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LOW_SURROGATES + */ + public const BLOCK_CODE_LOW_SURROGATES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PRIVATE_USE_AREA + */ + public const BLOCK_CODE_PRIVATE_USE_AREA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PRIVATE_USE + */ + public const BLOCK_CODE_PRIVATE_USE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS + */ + public const BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ALPHABETIC_PRESENTATION_FORMS + */ + public const BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARABIC_PRESENTATION_FORMS_A + */ + public const BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COMBINING_HALF_MARKS + */ + public const BLOCK_CODE_COMBINING_HALF_MARKS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_COMPATIBILITY_FORMS + */ + public const BLOCK_CODE_CJK_COMPATIBILITY_FORMS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SMALL_FORM_VARIANTS + */ + public const BLOCK_CODE_SMALL_FORM_VARIANTS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARABIC_PRESENTATION_FORMS_B + */ + public const BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SPECIALS + */ + public const BLOCK_CODE_SPECIALS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS + */ + public const BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OLD_ITALIC + */ + public const BLOCK_CODE_OLD_ITALIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GOTHIC + */ + public const BLOCK_CODE_GOTHIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_DESERET + */ + public const BLOCK_CODE_DESERET = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BYZANTINE_MUSICAL_SYMBOLS + */ + public const BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MUSICAL_SYMBOLS + */ + public const BLOCK_CODE_MUSICAL_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS + */ + public const BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B + */ + public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT + */ + public const BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAGS + */ + public const BLOCK_CODE_TAGS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CYRILLIC_SUPPLEMENT + */ + public const BLOCK_CODE_CYRILLIC_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CYRILLIC_SUPPLEMENTARY + */ + public const BLOCK_CODE_CYRILLIC_SUPPLEMENTARY = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAGALOG + */ + public const BLOCK_CODE_TAGALOG = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HANUNOO + */ + public const BLOCK_CODE_HANUNOO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BUHID + */ + public const BLOCK_CODE_BUHID = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAGBANWA + */ + public const BLOCK_CODE_TAGBANWA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A + */ + public const BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_A + */ + public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_B + */ + public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B + */ + public const BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS + */ + public const BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KATAKANA_PHONETIC_EXTENSIONS + */ + public const BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_VARIATION_SELECTORS + */ + public const BLOCK_CODE_VARIATION_SELECTORS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A + */ + public const BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B + */ + public const BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LIMBU + */ + public const BLOCK_CODE_LIMBU = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAI_LE + */ + public const BLOCK_CODE_TAI_LE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KHMER_SYMBOLS + */ + public const BLOCK_CODE_KHMER_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PHONETIC_EXTENSIONS + */ + public const BLOCK_CODE_PHONETIC_EXTENSIONS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS + */ + public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_YIJING_HEXAGRAM_SYMBOLS + */ + public const BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LINEAR_B_SYLLABARY + */ + public const BLOCK_CODE_LINEAR_B_SYLLABARY = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LINEAR_B_IDEOGRAMS + */ + public const BLOCK_CODE_LINEAR_B_IDEOGRAMS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_AEGEAN_NUMBERS + */ + public const BLOCK_CODE_AEGEAN_NUMBERS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_UGARITIC + */ + public const BLOCK_CODE_UGARITIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SHAVIAN + */ + public const BLOCK_CODE_SHAVIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OSMANYA + */ + public const BLOCK_CODE_OSMANYA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CYPRIOT_SYLLABARY + */ + public const BLOCK_CODE_CYPRIOT_SYLLABARY = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAI_XUAN_JING_SYMBOLS + */ + public const BLOCK_CODE_TAI_XUAN_JING_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_VARIATION_SELECTORS_SUPPLEMENT + */ + public const BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION + */ + public const BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ANCIENT_GREEK_NUMBERS + */ + public const BLOCK_CODE_ANCIENT_GREEK_NUMBERS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARABIC_SUPPLEMENT + */ + public const BLOCK_CODE_ARABIC_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BUGINESE + */ + public const BLOCK_CODE_BUGINESE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_STROKES + */ + public const BLOCK_CODE_CJK_STROKES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT + */ + public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COPTIC + */ + public const BLOCK_CODE_COPTIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ETHIOPIC_EXTENDED + */ + public const BLOCK_CODE_ETHIOPIC_EXTENDED = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ETHIOPIC_SUPPLEMENT + */ + public const BLOCK_CODE_ETHIOPIC_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GEORGIAN_SUPPLEMENT + */ + public const BLOCK_CODE_GEORGIAN_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GLAGOLITIC + */ + public const BLOCK_CODE_GLAGOLITIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KHAROSHTHI + */ + public const BLOCK_CODE_KHAROSHTHI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MODIFIER_TONE_LETTERS + */ + public const BLOCK_CODE_MODIFIER_TONE_LETTERS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_NEW_TAI_LUE + */ + public const BLOCK_CODE_NEW_TAI_LUE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OLD_PERSIAN + */ + public const BLOCK_CODE_OLD_PERSIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT + */ + public const BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPPLEMENTAL_PUNCTUATION + */ + public const BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SYLOTI_NAGRI + */ + public const BLOCK_CODE_SYLOTI_NAGRI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TIFINAGH + */ + public const BLOCK_CODE_TIFINAGH = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_VERTICAL_FORMS + */ + public const BLOCK_CODE_VERTICAL_FORMS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_NKO + */ + public const BLOCK_CODE_NKO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BALINESE + */ + public const BLOCK_CODE_BALINESE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LATIN_EXTENDED_C + */ + public const BLOCK_CODE_LATIN_EXTENDED_C = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LATIN_EXTENDED_D + */ + public const BLOCK_CODE_LATIN_EXTENDED_D = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PHAGS_PA + */ + public const BLOCK_CODE_PHAGS_PA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PHOENICIAN + */ + public const BLOCK_CODE_PHOENICIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CUNEIFORM + */ + public const BLOCK_CODE_CUNEIFORM = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION + */ + public const BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COUNTING_ROD_NUMERALS + */ + public const BLOCK_CODE_COUNTING_ROD_NUMERALS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUNDANESE + */ + public const BLOCK_CODE_SUNDANESE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LEPCHA + */ + public const BLOCK_CODE_LEPCHA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OL_CHIKI + */ + public const BLOCK_CODE_OL_CHIKI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CYRILLIC_EXTENDED_A + */ + public const BLOCK_CODE_CYRILLIC_EXTENDED_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_VAI + */ + public const BLOCK_CODE_VAI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CYRILLIC_EXTENDED_B + */ + public const BLOCK_CODE_CYRILLIC_EXTENDED_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SAURASHTRA + */ + public const BLOCK_CODE_SAURASHTRA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KAYAH_LI + */ + public const BLOCK_CODE_KAYAH_LI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_REJANG + */ + public const BLOCK_CODE_REJANG = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CHAM + */ + public const BLOCK_CODE_CHAM = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ANCIENT_SYMBOLS + */ + public const BLOCK_CODE_ANCIENT_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PHAISTOS_DISC + */ + public const BLOCK_CODE_PHAISTOS_DISC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LYCIAN + */ + public const BLOCK_CODE_LYCIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CARIAN + */ + public const BLOCK_CODE_CARIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LYDIAN + */ + public const BLOCK_CODE_LYDIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MAHJONG_TILES + */ + public const BLOCK_CODE_MAHJONG_TILES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_DOMINO_TILES + */ + public const BLOCK_CODE_DOMINO_TILES = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SAMARITAN + */ + public const BLOCK_CODE_SAMARITAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED + */ + public const BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAI_THAM + */ + public const BLOCK_CODE_TAI_THAM = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_VEDIC_EXTENSIONS + */ + public const BLOCK_CODE_VEDIC_EXTENSIONS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LISU + */ + public const BLOCK_CODE_LISU = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BAMUM + */ + public const BLOCK_CODE_BAMUM = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COMMON_INDIC_NUMBER_FORMS + */ + public const BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_DEVANAGARI_EXTENDED + */ + public const BLOCK_CODE_DEVANAGARI_EXTENDED = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HANGUL_JAMO_EXTENDED_A + */ + public const BLOCK_CODE_HANGUL_JAMO_EXTENDED_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_JAVANESE + */ + public const BLOCK_CODE_JAVANESE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MYANMAR_EXTENDED_A + */ + public const BLOCK_CODE_MYANMAR_EXTENDED_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAI_VIET + */ + public const BLOCK_CODE_TAI_VIET = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MEETEI_MAYEK + */ + public const BLOCK_CODE_MEETEI_MAYEK = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_HANGUL_JAMO_EXTENDED_B + */ + public const BLOCK_CODE_HANGUL_JAMO_EXTENDED_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_IMPERIAL_ARAMAIC + */ + public const BLOCK_CODE_IMPERIAL_ARAMAIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OLD_SOUTH_ARABIAN + */ + public const BLOCK_CODE_OLD_SOUTH_ARABIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_AVESTAN + */ + public const BLOCK_CODE_AVESTAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_INSCRIPTIONAL_PARTHIAN + */ + public const BLOCK_CODE_INSCRIPTIONAL_PARTHIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_INSCRIPTIONAL_PAHLAVI + */ + public const BLOCK_CODE_INSCRIPTIONAL_PAHLAVI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OLD_TURKIC + */ + public const BLOCK_CODE_OLD_TURKIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_RUMI_NUMERAL_SYMBOLS + */ + public const BLOCK_CODE_RUMI_NUMERAL_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KAITHI + */ + public const BLOCK_CODE_KAITHI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_EGYPTIAN_HIEROGLYPHS + */ + public const BLOCK_CODE_EGYPTIAN_HIEROGLYPHS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT + */ + public const BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT + */ + public const BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C + */ + public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MANDAIC + */ + public const BLOCK_CODE_MANDAIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BATAK + */ + public const BLOCK_CODE_BATAK = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ETHIOPIC_EXTENDED_A + */ + public const BLOCK_CODE_ETHIOPIC_EXTENDED_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BRAHMI + */ + public const BLOCK_CODE_BRAHMI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_BAMUM_SUPPLEMENT + */ + public const BLOCK_CODE_BAMUM_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KANA_SUPPLEMENT + */ + public const BLOCK_CODE_KANA_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PLAYING_CARDS + */ + public const BLOCK_CODE_PLAYING_CARDS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS + */ + public const BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_EMOTICONS + */ + public const BLOCK_CODE_EMOTICONS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TRANSPORT_AND_MAP_SYMBOLS + */ + public const BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ALCHEMICAL_SYMBOLS + */ + public const BLOCK_CODE_ALCHEMICAL_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D + */ + public const BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARABIC_EXTENDED_A + */ + public const BLOCK_CODE_ARABIC_EXTENDED_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS + */ + public const BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CHAKMA + */ + public const BLOCK_CODE_CHAKMA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MEETEI_MAYEK_EXTENSIONS + */ + public const BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MEROITIC_CURSIVE + */ + public const BLOCK_CODE_MEROITIC_CURSIVE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MEROITIC_HIEROGLYPHS + */ + public const BLOCK_CODE_MEROITIC_HIEROGLYPHS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MIAO + */ + public const BLOCK_CODE_MIAO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SHARADA + */ + public const BLOCK_CODE_SHARADA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SORA_SOMPENG + */ + public const BLOCK_CODE_SORA_SOMPENG = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUNDANESE_SUPPLEMENT + */ + public const BLOCK_CODE_SUNDANESE_SUPPLEMENT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TAKRI + */ + public const BLOCK_CODE_TAKRI = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 54 + /** + * @var int + * @cvalue UBLOCK_BASSA_VAH + */ + public const BLOCK_CODE_BASSA_VAH = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_CAUCASIAN_ALBANIAN + */ + public const BLOCK_CODE_CAUCASIAN_ALBANIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COPTIC_EPACT_NUMBERS + */ + public const BLOCK_CODE_COPTIC_EPACT_NUMBERS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED + */ + public const BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_DUPLOYAN + */ + public const BLOCK_CODE_DUPLOYAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ELBASAN + */ + public const BLOCK_CODE_ELBASAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GEOMETRIC_SHAPES_EXTENDED + */ + public const BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_GRANTHA + */ + public const BLOCK_CODE_GRANTHA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KHOJKI + */ + public const BLOCK_CODE_KHOJKI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_KHUDAWADI + */ + public const BLOCK_CODE_KHUDAWADI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LATIN_EXTENDED_E + */ + public const BLOCK_CODE_LATIN_EXTENDED_E = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_LINEAR_A + */ + public const BLOCK_CODE_LINEAR_A = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MAHAJANI + */ + public const BLOCK_CODE_MAHAJANI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MANICHAEAN + */ + public const BLOCK_CODE_MANICHAEAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MENDE_KIKAKUI + */ + public const BLOCK_CODE_MENDE_KIKAKUI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MODI + */ + public const BLOCK_CODE_MODI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MRO + */ + public const BLOCK_CODE_MRO = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_MYANMAR_EXTENDED_B + */ + public const BLOCK_CODE_MYANMAR_EXTENDED_B = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_NABATAEAN + */ + public const BLOCK_CODE_NABATAEAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OLD_NORTH_ARABIAN + */ + public const BLOCK_CODE_OLD_NORTH_ARABIAN = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_OLD_PERMIC + */ + public const BLOCK_CODE_OLD_PERMIC = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_ORNAMENTAL_DINGBATS + */ + public const BLOCK_CODE_ORNAMENTAL_DINGBATS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PAHAWH_HMONG + */ + public const BLOCK_CODE_PAHAWH_HMONG = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PALMYRENE + */ + public const BLOCK_CODE_PALMYRENE = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PAU_CIN_HAU + */ + public const BLOCK_CODE_PAU_CIN_HAU = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_PSALTER_PAHLAVI + */ + public const BLOCK_CODE_PSALTER_PAHLAVI = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SHORTHAND_FORMAT_CONTROLS + */ + public const BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SIDDHAM + */ + public const BLOCK_CODE_SIDDHAM = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SINHALA_ARCHAIC_NUMBERS + */ + public const BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_SUPPLEMENTAL_ARROWS_C + */ + public const BLOCK_CODE_SUPPLEMENTAL_ARROWS_C = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_TIRHUTA + */ + public const BLOCK_CODE_TIRHUTA = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_WARANG_CITI + */ + public const BLOCK_CODE_WARANG_CITI = UNKNOWN; +#endif + /** + * @var int + * @cvalue UBLOCK_COUNT + */ + public const BLOCK_CODE_COUNT = UNKNOWN; + /** + * @var int + * @cvalue UBLOCK_INVALID_CODE + */ + public const BLOCK_CODE_INVALID_CODE = UNKNOWN; + + /* UBidiPairedBracketType - http://icu-project.org/apiref/icu4c/uchar_8h.html#af954219aa1df452657ec355221c6703d */ + +#if U_ICU_VERSION_MAJOR_NUM >= 52 + /** + * @var int + * @cvalue U_BPT_NONE + */ + public const BPT_NONE = UNKNOWN; + /** + * @var int + * @cvalue U_BPT_OPEN + */ + public const BPT_OPEN = UNKNOWN; + /** + * @var int + * @cvalue U_BPT_CLOSE + */ + public const BPT_CLOSE = UNKNOWN; + /** + * @var int + * @cvalue U_BPT_COUNT + */ + public const BPT_COUNT = UNKNOWN; +#endif + + /* UEastAsianWidth - http://icu-project.org/apiref/icu4c/uchar_8h.html#a95cc2ca2f9cfd6d0c63eee2c65951333 */ + + /** + * @var int + * @cvalue U_EA_NEUTRAL + */ + public const EA_NEUTRAL = UNKNOWN; + /** + * @var int + * @cvalue U_EA_AMBIGUOUS + */ + public const EA_AMBIGUOUS = UNKNOWN; + /** + * @var int + * @cvalue U_EA_HALFWIDTH + */ + public const EA_HALFWIDTH = UNKNOWN; + /** + * @var int + * @cvalue U_EA_FULLWIDTH + */ + public const EA_FULLWIDTH = UNKNOWN; + /** + * @var int + * @cvalue U_EA_NARROW + */ + public const EA_NARROW = UNKNOWN; + /** + * @var int + * @cvalue U_EA_WIDE + */ + public const EA_WIDE = UNKNOWN; + /** + * @var int + * @cvalue U_EA_COUNT + */ + public const EA_COUNT = UNKNOWN; + + /* UCharNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a2ba37edcca62eff48226e8096035addf */ + + /** + * @var int + * @cvalue U_UNICODE_CHAR_NAME + */ + public const UNICODE_CHAR_NAME = UNKNOWN; + /** + * @var int + * @cvalue U_UNICODE_10_CHAR_NAME + */ + public const UNICODE_10_CHAR_NAME = UNKNOWN; + /** + * @var int + * @cvalue U_EXTENDED_CHAR_NAME + */ + public const EXTENDED_CHAR_NAME = UNKNOWN; + /** + * @var int + * @cvalue U_CHAR_NAME_ALIAS + */ + public const CHAR_NAME_ALIAS = UNKNOWN; + /** + * @var int + * @cvalue U_CHAR_NAME_CHOICE_COUNT + */ + public const CHAR_NAME_CHOICE_COUNT = UNKNOWN; + + /* UPropertyNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5056494c7d5a2c7185f3c464f48fe5d1 */ + + /** + * @var int + * @cvalue U_SHORT_PROPERTY_NAME + */ + public const SHORT_PROPERTY_NAME = UNKNOWN; + /** + * @var int + * @cvalue U_LONG_PROPERTY_NAME + */ + public const LONG_PROPERTY_NAME = UNKNOWN; + /** + * @var int + * @cvalue U_PROPERTY_NAME_CHOICE_COUNT + */ + public const PROPERTY_NAME_CHOICE_COUNT = UNKNOWN; + + /* UDecompositionType - http://icu-project.org/apiref/icu4c/uchar_8h.html#ae2c56994fcf28062c7e77beb671533f5 */ + + /** + * @var int + * @cvalue U_DT_NONE + */ + public const DT_NONE = UNKNOWN; + /** + * @var int + * @cvalue U_DT_CANONICAL + */ + public const DT_CANONICAL = UNKNOWN; + /** + * @var int + * @cvalue U_DT_COMPAT + */ + public const DT_COMPAT = UNKNOWN; + /** + * @var int + * @cvalue U_DT_CIRCLE + */ + public const DT_CIRCLE = UNKNOWN; + /** + * @var int + * @cvalue U_DT_FINAL + */ + public const DT_FINAL = UNKNOWN; + /** + * @var int + * @cvalue U_DT_FONT + */ + public const DT_FONT = UNKNOWN; + /** + * @var int + * @cvalue U_DT_FRACTION + */ + public const DT_FRACTION = UNKNOWN; + /** + * @var int + * @cvalue U_DT_INITIAL + */ + public const DT_INITIAL = UNKNOWN; + /** + * @var int + * @cvalue U_DT_ISOLATED + */ + public const DT_ISOLATED = UNKNOWN; + /** + * @var int + * @cvalue U_DT_MEDIAL + */ + public const DT_MEDIAL = UNKNOWN; + /** + * @var int + * @cvalue U_DT_NARROW + */ + public const DT_NARROW = UNKNOWN; + /** + * @var int + * @cvalue U_DT_NOBREAK + */ + public const DT_NOBREAK = UNKNOWN; + /** + * @var int + * @cvalue U_DT_SMALL + */ + public const DT_SMALL = UNKNOWN; + /** + * @var int + * @cvalue U_DT_SQUARE + */ + public const DT_SQUARE = UNKNOWN; + /** + * @var int + * @cvalue U_DT_SUB + */ + public const DT_SUB = UNKNOWN; + /** + * @var int + * @cvalue U_DT_SUPER + */ + public const DT_SUPER = UNKNOWN; + /** + * @var int + * @cvalue U_DT_VERTICAL + */ + public const DT_VERTICAL = UNKNOWN; + /** + * @var int + * @cvalue U_DT_WIDE + */ + public const DT_WIDE = UNKNOWN; + /** + * @var int + * @cvalue U_DT_COUNT + */ + public const DT_COUNT = UNKNOWN; + + /* UJoiningType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a3ce1ce20e7f3b8534eb3490ad3aba3dd */ + + /** + * @var int + * @cvalue U_JT_NON_JOINING + */ + public const JT_NON_JOINING = UNKNOWN; + /** + * @var int + * @cvalue U_JT_JOIN_CAUSING + */ + public const JT_JOIN_CAUSING = UNKNOWN; + /** + * @var int + * @cvalue U_JT_DUAL_JOINING + */ + public const JT_DUAL_JOINING = UNKNOWN; + /** + * @var int + * @cvalue U_JT_LEFT_JOINING + */ + public const JT_LEFT_JOINING = UNKNOWN; + /** + * @var int + * @cvalue U_JT_RIGHT_JOINING + */ + public const JT_RIGHT_JOINING = UNKNOWN; + /** + * @var int + * @cvalue U_JT_TRANSPARENT + */ + public const JT_TRANSPARENT = UNKNOWN; + /** + * @var int + * @cvalue U_JT_COUNT + */ + public const JT_COUNT = UNKNOWN; + + /* UJoiningGroup - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7887844ec0872e6e9a283e0825fcae65 */ + + /** + * @var int + * @cvalue U_JG_NO_JOINING_GROUP + */ + public const JG_NO_JOINING_GROUP = UNKNOWN; + /** + * @var int + * @cvalue U_JG_AIN + */ + public const JG_AIN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_ALAPH + */ + public const JG_ALAPH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_ALEF + */ + public const JG_ALEF = UNKNOWN; + /** + * @var int + * @cvalue U_JG_BEH + */ + public const JG_BEH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_BETH + */ + public const JG_BETH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_DAL + */ + public const JG_DAL = UNKNOWN; + /** + * @var int + * @cvalue U_JG_DALATH_RISH + */ + public const JG_DALATH_RISH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_E + */ + public const JG_E = UNKNOWN; + /** + * @var int + * @cvalue U_JG_FEH + */ + public const JG_FEH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_FINAL_SEMKATH + */ + public const JG_FINAL_SEMKATH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_GAF + */ + public const JG_GAF = UNKNOWN; + /** + * @var int + * @cvalue U_JG_GAMAL + */ + public const JG_GAMAL = UNKNOWN; + /** + * @var int + * @cvalue U_JG_HAH + */ + public const JG_HAH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_TEH_MARBUTA_GOAL + */ + public const JG_TEH_MARBUTA_GOAL = UNKNOWN; + /** + * @var int + * @cvalue U_JG_HAMZA_ON_HEH_GOAL + */ + public const JG_HAMZA_ON_HEH_GOAL = UNKNOWN; + /** + * @var int + * @cvalue U_JG_HE + */ + public const JG_HE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_HEH + */ + public const JG_HEH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_HEH_GOAL + */ + public const JG_HEH_GOAL = UNKNOWN; + /** + * @var int + * @cvalue U_JG_HETH + */ + public const JG_HETH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_KAF + */ + public const JG_KAF = UNKNOWN; + /** + * @var int + * @cvalue U_JG_KAPH + */ + public const JG_KAPH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_KNOTTED_HEH + */ + public const JG_KNOTTED_HEH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_LAM + */ + public const JG_LAM = UNKNOWN; + /** + * @var int + * @cvalue U_JG_LAMADH + */ + public const JG_LAMADH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MEEM + */ + public const JG_MEEM = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MIM + */ + public const JG_MIM = UNKNOWN; + /** + * @var int + * @cvalue U_JG_NOON + */ + public const JG_NOON = UNKNOWN; + /** + * @var int + * @cvalue U_JG_NUN + */ + public const JG_NUN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_PE + */ + public const JG_PE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_QAF + */ + public const JG_QAF = UNKNOWN; + /** + * @var int + * @cvalue U_JG_QAPH + */ + public const JG_QAPH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_REH + */ + public const JG_REH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_REVERSED_PE + */ + public const JG_REVERSED_PE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_SAD + */ + public const JG_SAD = UNKNOWN; + /** + * @var int + * @cvalue U_JG_SADHE + */ + public const JG_SADHE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_SEEN + */ + public const JG_SEEN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_SEMKATH + */ + public const JG_SEMKATH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_SHIN + */ + public const JG_SHIN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_SWASH_KAF + */ + public const JG_SWASH_KAF = UNKNOWN; + /** + * @var int + * @cvalue U_JG_SYRIAC_WAW + */ + public const JG_SYRIAC_WAW = UNKNOWN; + /** + * @var int + * @cvalue U_JG_TAH + */ + public const JG_TAH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_TAW + */ + public const JG_TAW = UNKNOWN; + /** + * @var int + * @cvalue U_JG_TEH_MARBUTA + */ + public const JG_TEH_MARBUTA = UNKNOWN; + /** + * @var int + * @cvalue U_JG_TETH + */ + public const JG_TETH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_WAW + */ + public const JG_WAW = UNKNOWN; + /** + * @var int + * @cvalue U_JG_YEH + */ + public const JG_YEH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_YEH_BARREE + */ + public const JG_YEH_BARREE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_YEH_WITH_TAIL + */ + public const JG_YEH_WITH_TAIL = UNKNOWN; + /** + * @var int + * @cvalue U_JG_YUDH + */ + public const JG_YUDH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_YUDH_HE + */ + public const JG_YUDH_HE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_ZAIN + */ + public const JG_ZAIN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_FE + */ + public const JG_FE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_KHAPH + */ + public const JG_KHAPH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_ZHAIN + */ + public const JG_ZHAIN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_BURUSHASKI_YEH_BARREE + */ + public const JG_BURUSHASKI_YEH_BARREE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_FARSI_YEH + */ + public const JG_FARSI_YEH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_NYA + */ + public const JG_NYA = UNKNOWN; + /** + * @var int + * @cvalue U_JG_ROHINGYA_YEH + */ + public const JG_ROHINGYA_YEH = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 54 + /** + * @var int + * @cvalue U_JG_MANICHAEAN_ALEPH + */ + public const JG_MANICHAEAN_ALEPH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_AYIN + */ + public const JG_MANICHAEAN_AYIN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_BETH + */ + public const JG_MANICHAEAN_BETH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_DALETH + */ + public const JG_MANICHAEAN_DALETH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_DHAMEDH + */ + public const JG_MANICHAEAN_DHAMEDH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_FIVE + */ + public const JG_MANICHAEAN_FIVE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_GIMEL + */ + public const JG_MANICHAEAN_GIMEL = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_HETH + */ + public const JG_MANICHAEAN_HETH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_HUNDRED + */ + public const JG_MANICHAEAN_HUNDRED = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_KAPH + */ + public const JG_MANICHAEAN_KAPH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_LAMEDH + */ + public const JG_MANICHAEAN_LAMEDH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_MEM + */ + public const JG_MANICHAEAN_MEM = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_NUN + */ + public const JG_MANICHAEAN_NUN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_ONE + */ + public const JG_MANICHAEAN_ONE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_PE + */ + public const JG_MANICHAEAN_PE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_QOPH + */ + public const JG_MANICHAEAN_QOPH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_RESH + */ + public const JG_MANICHAEAN_RESH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_SADHE + */ + public const JG_MANICHAEAN_SADHE = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_SAMEKH + */ + public const JG_MANICHAEAN_SAMEKH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_TAW + */ + public const JG_MANICHAEAN_TAW = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_TEN + */ + public const JG_MANICHAEAN_TEN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_TETH + */ + public const JG_MANICHAEAN_TETH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_THAMEDH + */ + public const JG_MANICHAEAN_THAMEDH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_TWENTY + */ + public const JG_MANICHAEAN_TWENTY = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_WAW + */ + public const JG_MANICHAEAN_WAW = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_YODH + */ + public const JG_MANICHAEAN_YODH = UNKNOWN; + /** + * @var int + * @cvalue U_JG_MANICHAEAN_ZAYIN + */ + public const JG_MANICHAEAN_ZAYIN = UNKNOWN; + /** + * @var int + * @cvalue U_JG_STRAIGHT_WAW + */ + public const JG_STRAIGHT_WAW = UNKNOWN; +#endif + /** + * @var int + * @cvalue U_JG_COUNT + */ + public const JG_COUNT = UNKNOWN; + + /* UGraphemeClusterBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#abb9bae7d2a1c80ce342be4647661fde1 */ + + /** + * @var int + * @cvalue U_GCB_OTHER + */ + public const GCB_OTHER = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_CONTROL + */ + public const GCB_CONTROL = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_CR + */ + public const GCB_CR = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_EXTEND + */ + public const GCB_EXTEND = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_L + */ + public const GCB_L = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_LF + */ + public const GCB_LF = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_LV + */ + public const GCB_LV = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_LVT + */ + public const GCB_LVT = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_T + */ + public const GCB_T = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_V + */ + public const GCB_V = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_SPACING_MARK + */ + public const GCB_SPACING_MARK = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_PREPEND + */ + public const GCB_PREPEND = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_REGIONAL_INDICATOR + */ + public const GCB_REGIONAL_INDICATOR = UNKNOWN; + /** + * @var int + * @cvalue U_GCB_COUNT + */ + public const GCB_COUNT = UNKNOWN; + + /* UWordBreakValues - http://icu-project.org/apiref/icu4c/uchar_8h.html#af70ee907368e663f8dd4b90c7196e15c */ + + /** + * @var int + * @cvalue U_WB_OTHER + */ + public const WB_OTHER = UNKNOWN; + /** + * @var int + * @cvalue U_WB_ALETTER + */ + public const WB_ALETTER = UNKNOWN; + /** + * @var int + * @cvalue U_WB_FORMAT + */ + public const WB_FORMAT = UNKNOWN; + /** + * @var int + * @cvalue U_WB_KATAKANA + */ + public const WB_KATAKANA = UNKNOWN; + /** + * @var int + * @cvalue U_WB_MIDLETTER + */ + public const WB_MIDLETTER = UNKNOWN; + /** + * @var int + * @cvalue U_WB_MIDNUM + */ + public const WB_MIDNUM = UNKNOWN; + /** + * @var int + * @cvalue U_WB_NUMERIC + */ + public const WB_NUMERIC = UNKNOWN; + /** + * @var int + * @cvalue U_WB_EXTENDNUMLET + */ + public const WB_EXTENDNUMLET = UNKNOWN; + /** + * @var int + * @cvalue U_WB_CR + */ + public const WB_CR = UNKNOWN; + /** + * @var int + * @cvalue U_WB_EXTEND + */ + public const WB_EXTEND = UNKNOWN; + /** + * @var int + * @cvalue U_WB_LF + */ + public const WB_LF = UNKNOWN; + /** + * @var int + * @cvalue U_WB_MIDNUMLET + */ + public const WB_MIDNUMLET = UNKNOWN; + /** + * @var int + * @cvalue U_WB_NEWLINE + */ + public const WB_NEWLINE = UNKNOWN; + /** + * @var int + * @cvalue U_WB_REGIONAL_INDICATOR + */ + public const WB_REGIONAL_INDICATOR = UNKNOWN; +#if U_ICU_VERSION_MAJOR_NUM >= 52 + /** + * @var int + * @cvalue U_WB_HEBREW_LETTER + */ + public const WB_HEBREW_LETTER = UNKNOWN; + /** + * @var int + * @cvalue U_WB_SINGLE_QUOTE + */ + public const WB_SINGLE_QUOTE = UNKNOWN; + /** + * @var int + * @cvalue U_WB_DOUBLE_QUOTE + */ + public const WB_DOUBLE_QUOTE = UNKNOWN; +#endif + /** + * @var int + * @cvalue U_WB_COUNT + */ + public const WB_COUNT = UNKNOWN; + + /* USentenceBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a89e9e463c3bae1d2d46b1dbb6f90de0f */ + + /** + * @var int + * @cvalue U_SB_OTHER + */ + public const SB_OTHER = UNKNOWN; + /** + * @var int + * @cvalue U_SB_ATERM + */ + public const SB_ATERM = UNKNOWN; + /** + * @var int + * @cvalue U_SB_CLOSE + */ + public const SB_CLOSE = UNKNOWN; + /** + * @var int + * @cvalue U_SB_FORMAT + */ + public const SB_FORMAT = UNKNOWN; + /** + * @var int + * @cvalue U_SB_LOWER + */ + public const SB_LOWER = UNKNOWN; + /** + * @var int + * @cvalue U_SB_NUMERIC + */ + public const SB_NUMERIC = UNKNOWN; + /** + * @var int + * @cvalue U_SB_OLETTER + */ + public const SB_OLETTER = UNKNOWN; + /** + * @var int + * @cvalue U_SB_SEP + */ + public const SB_SEP = UNKNOWN; + /** + * @var int + * @cvalue U_SB_SP + */ + public const SB_SP = UNKNOWN; + /** + * @var int + * @cvalue U_SB_STERM + */ + public const SB_STERM = UNKNOWN; + /** + * @var int + * @cvalue U_SB_UPPER + */ + public const SB_UPPER = UNKNOWN; + /** + * @var int + * @cvalue U_SB_CR + */ + public const SB_CR = UNKNOWN; + /** + * @var int + * @cvalue U_SB_EXTEND + */ + public const SB_EXTEND = UNKNOWN; + /** + * @var int + * @cvalue U_SB_LF + */ + public const SB_LF = UNKNOWN; + /** + * @var int + * @cvalue U_SB_SCONTINUE + */ + public const SB_SCONTINUE = UNKNOWN; + /** + * @var int + * @cvalue U_SB_COUNT + */ + public const SB_COUNT = UNKNOWN; + + /* ULineBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5d1abdf05be22cb9599f804a8506277c */ + + /** + * @var int + * @cvalue U_LB_UNKNOWN + */ + public const LB_UNKNOWN = UNKNOWN; + /** + * @var int + * @cvalue U_LB_AMBIGUOUS + */ + public const LB_AMBIGUOUS = UNKNOWN; + /** + * @var int + * @cvalue U_LB_ALPHABETIC + */ + public const LB_ALPHABETIC = UNKNOWN; + /** + * @var int + * @cvalue U_LB_BREAK_BOTH + */ + public const LB_BREAK_BOTH = UNKNOWN; + /** + * @var int + * @cvalue U_LB_BREAK_AFTER + */ + public const LB_BREAK_AFTER = UNKNOWN; + /** + * @var int + * @cvalue U_LB_BREAK_BEFORE + */ + public const LB_BREAK_BEFORE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_MANDATORY_BREAK + */ + public const LB_MANDATORY_BREAK = UNKNOWN; + /** + * @var int + * @cvalue U_LB_CONTINGENT_BREAK + */ + public const LB_CONTINGENT_BREAK = UNKNOWN; + /** + * @var int + * @cvalue U_LB_CLOSE_PUNCTUATION + */ + public const LB_CLOSE_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_LB_COMBINING_MARK + */ + public const LB_COMBINING_MARK = UNKNOWN; + /** + * @var int + * @cvalue U_LB_CARRIAGE_RETURN + */ + public const LB_CARRIAGE_RETURN = UNKNOWN; + /** + * @var int + * @cvalue U_LB_EXCLAMATION + */ + public const LB_EXCLAMATION = UNKNOWN; + /** + * @var int + * @cvalue U_LB_GLUE + */ + public const LB_GLUE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_HYPHEN + */ + public const LB_HYPHEN = UNKNOWN; + /** + * @var int + * @cvalue U_LB_IDEOGRAPHIC + */ + public const LB_IDEOGRAPHIC = UNKNOWN; + /** + * @var int + * @cvalue U_LB_INSEPARABLE + */ + public const LB_INSEPARABLE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_INSEPERABLE + */ + public const LB_INSEPERABLE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_INFIX_NUMERIC + */ + public const LB_INFIX_NUMERIC = UNKNOWN; + /** + * @var int + * @cvalue U_LB_LINE_FEED + */ + public const LB_LINE_FEED = UNKNOWN; + /** + * @var int + * @cvalue U_LB_NONSTARTER + */ + public const LB_NONSTARTER = UNKNOWN; + /** + * @var int + * @cvalue U_LB_NUMERIC + */ + public const LB_NUMERIC = UNKNOWN; + /** + * @var int + * @cvalue U_LB_OPEN_PUNCTUATION + */ + public const LB_OPEN_PUNCTUATION = UNKNOWN; + /** + * @var int + * @cvalue U_LB_POSTFIX_NUMERIC + */ + public const LB_POSTFIX_NUMERIC = UNKNOWN; + /** + * @var int + * @cvalue U_LB_PREFIX_NUMERIC + */ + public const LB_PREFIX_NUMERIC = UNKNOWN; + /** + * @var int + * @cvalue U_LB_QUOTATION + */ + public const LB_QUOTATION = UNKNOWN; + /** + * @var int + * @cvalue U_LB_COMPLEX_CONTEXT + */ + public const LB_COMPLEX_CONTEXT = UNKNOWN; + /** + * @var int + * @cvalue U_LB_SURROGATE + */ + public const LB_SURROGATE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_SPACE + */ + public const LB_SPACE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_BREAK_SYMBOLS + */ + public const LB_BREAK_SYMBOLS = UNKNOWN; + /** + * @var int + * @cvalue U_LB_ZWSPACE + */ + public const LB_ZWSPACE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_NEXT_LINE + */ + public const LB_NEXT_LINE = UNKNOWN; + /** + * @var int + * @cvalue U_LB_WORD_JOINER + */ + public const LB_WORD_JOINER = UNKNOWN; + /** + * @var int + * @cvalue U_LB_H2 + */ + public const LB_H2 = UNKNOWN; + /** + * @var int + * @cvalue U_LB_H3 + */ + public const LB_H3 = UNKNOWN; + /** + * @var int + * @cvalue U_LB_JL + */ + public const LB_JL = UNKNOWN; + /** + * @var int + * @cvalue U_LB_JT + */ + public const LB_JT = UNKNOWN; + /** + * @var int + * @cvalue U_LB_JV + */ + public const LB_JV = UNKNOWN; + /** + * @var int + * @cvalue U_LB_CLOSE_PARENTHESIS + */ + public const LB_CLOSE_PARENTHESIS = UNKNOWN; + /** + * @var int + * @cvalue U_LB_CONDITIONAL_JAPANESE_STARTER + */ + public const LB_CONDITIONAL_JAPANESE_STARTER = UNKNOWN; + /** + * @var int + * @cvalue U_LB_HEBREW_LETTER + */ + public const LB_HEBREW_LETTER = UNKNOWN; + /** + * @var int + * @cvalue U_LB_REGIONAL_INDICATOR + */ + public const LB_REGIONAL_INDICATOR = UNKNOWN; + /** + * @var int + * @cvalue U_LB_COUNT + */ + public const LB_COUNT = UNKNOWN; + + /* UNumericType - http://icu-project.org/apiref/icu4c/uchar_8h.html#adec3e7a6ae3a00274c019b3b2ddaecbe */ + + /** + * @var int + * @cvalue U_NT_NONE + */ + public const NT_NONE = UNKNOWN; + /** + * @var int + * @cvalue U_NT_DECIMAL + */ + public const NT_DECIMAL = UNKNOWN; + /** + * @var int + * @cvalue U_NT_DIGIT + */ + public const NT_DIGIT = UNKNOWN; + /** + * @var int + * @cvalue U_NT_NUMERIC + */ + public const NT_NUMERIC = UNKNOWN; + /** + * @var int + * @cvalue U_NT_COUNT + */ + public const NT_COUNT = UNKNOWN; + + /* UHangulSyllableType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7cb09027c37ad73571cf541caf002c8f */ + + /** + * @var int + * @cvalue U_HST_NOT_APPLICABLE + */ + public const HST_NOT_APPLICABLE = UNKNOWN; + /** + * @var int + * @cvalue U_HST_LEADING_JAMO + */ + public const HST_LEADING_JAMO = UNKNOWN; + /** + * @var int + * @cvalue U_HST_VOWEL_JAMO + */ + public const HST_VOWEL_JAMO = UNKNOWN; + /** + * @var int + * @cvalue U_HST_TRAILING_JAMO + */ + public const HST_TRAILING_JAMO = UNKNOWN; + /** + * @var int + * @cvalue U_HST_LV_SYLLABLE + */ + public const HST_LV_SYLLABLE = UNKNOWN; + /** + * @var int + * @cvalue U_HST_LVT_SYLLABLE + */ + public const HST_LVT_SYLLABLE = UNKNOWN; + /** + * @var int + * @cvalue U_HST_COUNT + */ + public const HST_COUNT = UNKNOWN; + + /* StringOptions - http://icu-project.org/apiref/icu4c/stringoptions_8h.html */ + + /** + * @var int + * @cvalue U_FOLD_CASE_DEFAULT + */ + public const FOLD_CASE_DEFAULT = UNKNOWN; + /** + * @var int + * @cvalue U_FOLD_CASE_EXCLUDE_SPECIAL_I + */ + public const FOLD_CASE_EXCLUDE_SPECIAL_I = UNKNOWN; + /** @tentative-return-type */ public static function hasBinaryProperty(int|string $codepoint, int $property): ?bool {} diff --git a/ext/intl/uchar/uchar_arginfo.h b/ext/intl/uchar/uchar_arginfo.h index 9721bbbb8f939..43481573431fb 100644 --- a/ext/intl/uchar/uchar_arginfo.h +++ b/ext/intl/uchar/uchar_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 2b8605be915f05929dc0ade2edfb6f6ab942218c */ + * Stub hash: e8d6cf16660b6389922160f8a2c9c07ca2d58404 */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_IntlChar_hasBinaryProperty, 0, 2, _IS_BOOL, 1) ZEND_ARG_TYPE_MASK(0, codepoint, MAY_BE_LONG|MAY_BE_STRING, NULL) @@ -318,5 +318,4130 @@ static zend_class_entry *register_class_IntlChar(void) INIT_CLASS_ENTRY(ce, "IntlChar", class_IntlChar_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); + zval const_UNICODE_VERSION_value; + zend_string *const_UNICODE_VERSION_value_str = zend_string_init(U_UNICODE_VERSION, sizeof(U_UNICODE_VERSION) - 1, 1); + ZVAL_STR(&const_UNICODE_VERSION_value, const_UNICODE_VERSION_value_str); + zend_string *const_UNICODE_VERSION_name = zend_string_init_interned("UNICODE_VERSION", sizeof("UNICODE_VERSION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UNICODE_VERSION_name, &const_UNICODE_VERSION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UNICODE_VERSION_name); + + zval const_CODEPOINT_MIN_value; + ZVAL_LONG(&const_CODEPOINT_MIN_value, UCHAR_MIN_VALUE); + zend_string *const_CODEPOINT_MIN_name = zend_string_init_interned("CODEPOINT_MIN", sizeof("CODEPOINT_MIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CODEPOINT_MIN_name, &const_CODEPOINT_MIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CODEPOINT_MIN_name); + + zval const_CODEPOINT_MAX_value; + ZVAL_LONG(&const_CODEPOINT_MAX_value, UCHAR_MAX_VALUE); + zend_string *const_CODEPOINT_MAX_name = zend_string_init_interned("CODEPOINT_MAX", sizeof("CODEPOINT_MAX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CODEPOINT_MAX_name, &const_CODEPOINT_MAX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CODEPOINT_MAX_name); + + zval const_NO_NUMERIC_VALUE_value; + ZVAL_DOUBLE(&const_NO_NUMERIC_VALUE_value, U_NO_NUMERIC_VALUE); + zend_string *const_NO_NUMERIC_VALUE_name = zend_string_init_interned("NO_NUMERIC_VALUE", sizeof("NO_NUMERIC_VALUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NO_NUMERIC_VALUE_name, &const_NO_NUMERIC_VALUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NO_NUMERIC_VALUE_name); + + zval const_PROPERTY_ALPHABETIC_value; + ZVAL_LONG(&const_PROPERTY_ALPHABETIC_value, UCHAR_ALPHABETIC); + zend_string *const_PROPERTY_ALPHABETIC_name = zend_string_init_interned("PROPERTY_ALPHABETIC", sizeof("PROPERTY_ALPHABETIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_ALPHABETIC_name, &const_PROPERTY_ALPHABETIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_ALPHABETIC_name); + + zval const_PROPERTY_BINARY_START_value; + ZVAL_LONG(&const_PROPERTY_BINARY_START_value, UCHAR_BINARY_START); + zend_string *const_PROPERTY_BINARY_START_name = zend_string_init_interned("PROPERTY_BINARY_START", sizeof("PROPERTY_BINARY_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BINARY_START_name, &const_PROPERTY_BINARY_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BINARY_START_name); + + zval const_PROPERTY_ASCII_HEX_DIGIT_value; + ZVAL_LONG(&const_PROPERTY_ASCII_HEX_DIGIT_value, UCHAR_ASCII_HEX_DIGIT); + zend_string *const_PROPERTY_ASCII_HEX_DIGIT_name = zend_string_init_interned("PROPERTY_ASCII_HEX_DIGIT", sizeof("PROPERTY_ASCII_HEX_DIGIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_ASCII_HEX_DIGIT_name, &const_PROPERTY_ASCII_HEX_DIGIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_ASCII_HEX_DIGIT_name); + + zval const_PROPERTY_BIDI_CONTROL_value; + ZVAL_LONG(&const_PROPERTY_BIDI_CONTROL_value, UCHAR_BIDI_CONTROL); + zend_string *const_PROPERTY_BIDI_CONTROL_name = zend_string_init_interned("PROPERTY_BIDI_CONTROL", sizeof("PROPERTY_BIDI_CONTROL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BIDI_CONTROL_name, &const_PROPERTY_BIDI_CONTROL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BIDI_CONTROL_name); + + zval const_PROPERTY_BIDI_MIRRORED_value; + ZVAL_LONG(&const_PROPERTY_BIDI_MIRRORED_value, UCHAR_BIDI_MIRRORED); + zend_string *const_PROPERTY_BIDI_MIRRORED_name = zend_string_init_interned("PROPERTY_BIDI_MIRRORED", sizeof("PROPERTY_BIDI_MIRRORED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BIDI_MIRRORED_name, &const_PROPERTY_BIDI_MIRRORED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BIDI_MIRRORED_name); + + zval const_PROPERTY_DASH_value; + ZVAL_LONG(&const_PROPERTY_DASH_value, UCHAR_DASH); + zend_string *const_PROPERTY_DASH_name = zend_string_init_interned("PROPERTY_DASH", sizeof("PROPERTY_DASH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_DASH_name, &const_PROPERTY_DASH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_DASH_name); + + zval const_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_value; + ZVAL_LONG(&const_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_value, UCHAR_DEFAULT_IGNORABLE_CODE_POINT); + zend_string *const_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_name = zend_string_init_interned("PROPERTY_DEFAULT_IGNORABLE_CODE_POINT", sizeof("PROPERTY_DEFAULT_IGNORABLE_CODE_POINT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_name, &const_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_name); + + zval const_PROPERTY_DEPRECATED_value; + ZVAL_LONG(&const_PROPERTY_DEPRECATED_value, UCHAR_DEPRECATED); + zend_string *const_PROPERTY_DEPRECATED_name = zend_string_init_interned("PROPERTY_DEPRECATED", sizeof("PROPERTY_DEPRECATED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_DEPRECATED_name, &const_PROPERTY_DEPRECATED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_DEPRECATED_name); + + zval const_PROPERTY_DIACRITIC_value; + ZVAL_LONG(&const_PROPERTY_DIACRITIC_value, UCHAR_DIACRITIC); + zend_string *const_PROPERTY_DIACRITIC_name = zend_string_init_interned("PROPERTY_DIACRITIC", sizeof("PROPERTY_DIACRITIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_DIACRITIC_name, &const_PROPERTY_DIACRITIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_DIACRITIC_name); + + zval const_PROPERTY_EXTENDER_value; + ZVAL_LONG(&const_PROPERTY_EXTENDER_value, UCHAR_EXTENDER); + zend_string *const_PROPERTY_EXTENDER_name = zend_string_init_interned("PROPERTY_EXTENDER", sizeof("PROPERTY_EXTENDER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_EXTENDER_name, &const_PROPERTY_EXTENDER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_EXTENDER_name); + + zval const_PROPERTY_FULL_COMPOSITION_EXCLUSION_value; + ZVAL_LONG(&const_PROPERTY_FULL_COMPOSITION_EXCLUSION_value, UCHAR_FULL_COMPOSITION_EXCLUSION); + zend_string *const_PROPERTY_FULL_COMPOSITION_EXCLUSION_name = zend_string_init_interned("PROPERTY_FULL_COMPOSITION_EXCLUSION", sizeof("PROPERTY_FULL_COMPOSITION_EXCLUSION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_FULL_COMPOSITION_EXCLUSION_name, &const_PROPERTY_FULL_COMPOSITION_EXCLUSION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_FULL_COMPOSITION_EXCLUSION_name); + + zval const_PROPERTY_GRAPHEME_BASE_value; + ZVAL_LONG(&const_PROPERTY_GRAPHEME_BASE_value, UCHAR_GRAPHEME_BASE); + zend_string *const_PROPERTY_GRAPHEME_BASE_name = zend_string_init_interned("PROPERTY_GRAPHEME_BASE", sizeof("PROPERTY_GRAPHEME_BASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_GRAPHEME_BASE_name, &const_PROPERTY_GRAPHEME_BASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_GRAPHEME_BASE_name); + + zval const_PROPERTY_GRAPHEME_EXTEND_value; + ZVAL_LONG(&const_PROPERTY_GRAPHEME_EXTEND_value, UCHAR_GRAPHEME_EXTEND); + zend_string *const_PROPERTY_GRAPHEME_EXTEND_name = zend_string_init_interned("PROPERTY_GRAPHEME_EXTEND", sizeof("PROPERTY_GRAPHEME_EXTEND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_GRAPHEME_EXTEND_name, &const_PROPERTY_GRAPHEME_EXTEND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_GRAPHEME_EXTEND_name); + + zval const_PROPERTY_GRAPHEME_LINK_value; + ZVAL_LONG(&const_PROPERTY_GRAPHEME_LINK_value, UCHAR_GRAPHEME_LINK); + zend_string *const_PROPERTY_GRAPHEME_LINK_name = zend_string_init_interned("PROPERTY_GRAPHEME_LINK", sizeof("PROPERTY_GRAPHEME_LINK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_GRAPHEME_LINK_name, &const_PROPERTY_GRAPHEME_LINK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_GRAPHEME_LINK_name); + + zval const_PROPERTY_HEX_DIGIT_value; + ZVAL_LONG(&const_PROPERTY_HEX_DIGIT_value, UCHAR_HEX_DIGIT); + zend_string *const_PROPERTY_HEX_DIGIT_name = zend_string_init_interned("PROPERTY_HEX_DIGIT", sizeof("PROPERTY_HEX_DIGIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_HEX_DIGIT_name, &const_PROPERTY_HEX_DIGIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_HEX_DIGIT_name); + + zval const_PROPERTY_HYPHEN_value; + ZVAL_LONG(&const_PROPERTY_HYPHEN_value, UCHAR_HYPHEN); + zend_string *const_PROPERTY_HYPHEN_name = zend_string_init_interned("PROPERTY_HYPHEN", sizeof("PROPERTY_HYPHEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_HYPHEN_name, &const_PROPERTY_HYPHEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_HYPHEN_name); + + zval const_PROPERTY_ID_CONTINUE_value; + ZVAL_LONG(&const_PROPERTY_ID_CONTINUE_value, UCHAR_ID_CONTINUE); + zend_string *const_PROPERTY_ID_CONTINUE_name = zend_string_init_interned("PROPERTY_ID_CONTINUE", sizeof("PROPERTY_ID_CONTINUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_ID_CONTINUE_name, &const_PROPERTY_ID_CONTINUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_ID_CONTINUE_name); + + zval const_PROPERTY_ID_START_value; + ZVAL_LONG(&const_PROPERTY_ID_START_value, UCHAR_ID_START); + zend_string *const_PROPERTY_ID_START_name = zend_string_init_interned("PROPERTY_ID_START", sizeof("PROPERTY_ID_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_ID_START_name, &const_PROPERTY_ID_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_ID_START_name); + + zval const_PROPERTY_IDEOGRAPHIC_value; + ZVAL_LONG(&const_PROPERTY_IDEOGRAPHIC_value, UCHAR_IDEOGRAPHIC); + zend_string *const_PROPERTY_IDEOGRAPHIC_name = zend_string_init_interned("PROPERTY_IDEOGRAPHIC", sizeof("PROPERTY_IDEOGRAPHIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_IDEOGRAPHIC_name, &const_PROPERTY_IDEOGRAPHIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_IDEOGRAPHIC_name); + + zval const_PROPERTY_IDS_BINARY_OPERATOR_value; + ZVAL_LONG(&const_PROPERTY_IDS_BINARY_OPERATOR_value, UCHAR_IDS_BINARY_OPERATOR); + zend_string *const_PROPERTY_IDS_BINARY_OPERATOR_name = zend_string_init_interned("PROPERTY_IDS_BINARY_OPERATOR", sizeof("PROPERTY_IDS_BINARY_OPERATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_IDS_BINARY_OPERATOR_name, &const_PROPERTY_IDS_BINARY_OPERATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_IDS_BINARY_OPERATOR_name); + + zval const_PROPERTY_IDS_TRINARY_OPERATOR_value; + ZVAL_LONG(&const_PROPERTY_IDS_TRINARY_OPERATOR_value, UCHAR_IDS_TRINARY_OPERATOR); + zend_string *const_PROPERTY_IDS_TRINARY_OPERATOR_name = zend_string_init_interned("PROPERTY_IDS_TRINARY_OPERATOR", sizeof("PROPERTY_IDS_TRINARY_OPERATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_IDS_TRINARY_OPERATOR_name, &const_PROPERTY_IDS_TRINARY_OPERATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_IDS_TRINARY_OPERATOR_name); + + zval const_PROPERTY_JOIN_CONTROL_value; + ZVAL_LONG(&const_PROPERTY_JOIN_CONTROL_value, UCHAR_JOIN_CONTROL); + zend_string *const_PROPERTY_JOIN_CONTROL_name = zend_string_init_interned("PROPERTY_JOIN_CONTROL", sizeof("PROPERTY_JOIN_CONTROL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_JOIN_CONTROL_name, &const_PROPERTY_JOIN_CONTROL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_JOIN_CONTROL_name); + + zval const_PROPERTY_LOGICAL_ORDER_EXCEPTION_value; + ZVAL_LONG(&const_PROPERTY_LOGICAL_ORDER_EXCEPTION_value, UCHAR_LOGICAL_ORDER_EXCEPTION); + zend_string *const_PROPERTY_LOGICAL_ORDER_EXCEPTION_name = zend_string_init_interned("PROPERTY_LOGICAL_ORDER_EXCEPTION", sizeof("PROPERTY_LOGICAL_ORDER_EXCEPTION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_LOGICAL_ORDER_EXCEPTION_name, &const_PROPERTY_LOGICAL_ORDER_EXCEPTION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_LOGICAL_ORDER_EXCEPTION_name); + + zval const_PROPERTY_LOWERCASE_value; + ZVAL_LONG(&const_PROPERTY_LOWERCASE_value, UCHAR_LOWERCASE); + zend_string *const_PROPERTY_LOWERCASE_name = zend_string_init_interned("PROPERTY_LOWERCASE", sizeof("PROPERTY_LOWERCASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_LOWERCASE_name, &const_PROPERTY_LOWERCASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_LOWERCASE_name); + + zval const_PROPERTY_MATH_value; + ZVAL_LONG(&const_PROPERTY_MATH_value, UCHAR_MATH); + zend_string *const_PROPERTY_MATH_name = zend_string_init_interned("PROPERTY_MATH", sizeof("PROPERTY_MATH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_MATH_name, &const_PROPERTY_MATH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_MATH_name); + + zval const_PROPERTY_NONCHARACTER_CODE_POINT_value; + ZVAL_LONG(&const_PROPERTY_NONCHARACTER_CODE_POINT_value, UCHAR_NONCHARACTER_CODE_POINT); + zend_string *const_PROPERTY_NONCHARACTER_CODE_POINT_name = zend_string_init_interned("PROPERTY_NONCHARACTER_CODE_POINT", sizeof("PROPERTY_NONCHARACTER_CODE_POINT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NONCHARACTER_CODE_POINT_name, &const_PROPERTY_NONCHARACTER_CODE_POINT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NONCHARACTER_CODE_POINT_name); + + zval const_PROPERTY_QUOTATION_MARK_value; + ZVAL_LONG(&const_PROPERTY_QUOTATION_MARK_value, UCHAR_QUOTATION_MARK); + zend_string *const_PROPERTY_QUOTATION_MARK_name = zend_string_init_interned("PROPERTY_QUOTATION_MARK", sizeof("PROPERTY_QUOTATION_MARK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_QUOTATION_MARK_name, &const_PROPERTY_QUOTATION_MARK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_QUOTATION_MARK_name); + + zval const_PROPERTY_RADICAL_value; + ZVAL_LONG(&const_PROPERTY_RADICAL_value, UCHAR_RADICAL); + zend_string *const_PROPERTY_RADICAL_name = zend_string_init_interned("PROPERTY_RADICAL", sizeof("PROPERTY_RADICAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_RADICAL_name, &const_PROPERTY_RADICAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_RADICAL_name); + + zval const_PROPERTY_SOFT_DOTTED_value; + ZVAL_LONG(&const_PROPERTY_SOFT_DOTTED_value, UCHAR_SOFT_DOTTED); + zend_string *const_PROPERTY_SOFT_DOTTED_name = zend_string_init_interned("PROPERTY_SOFT_DOTTED", sizeof("PROPERTY_SOFT_DOTTED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SOFT_DOTTED_name, &const_PROPERTY_SOFT_DOTTED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SOFT_DOTTED_name); + + zval const_PROPERTY_TERMINAL_PUNCTUATION_value; + ZVAL_LONG(&const_PROPERTY_TERMINAL_PUNCTUATION_value, UCHAR_TERMINAL_PUNCTUATION); + zend_string *const_PROPERTY_TERMINAL_PUNCTUATION_name = zend_string_init_interned("PROPERTY_TERMINAL_PUNCTUATION", sizeof("PROPERTY_TERMINAL_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_TERMINAL_PUNCTUATION_name, &const_PROPERTY_TERMINAL_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_TERMINAL_PUNCTUATION_name); + + zval const_PROPERTY_UNIFIED_IDEOGRAPH_value; + ZVAL_LONG(&const_PROPERTY_UNIFIED_IDEOGRAPH_value, UCHAR_UNIFIED_IDEOGRAPH); + zend_string *const_PROPERTY_UNIFIED_IDEOGRAPH_name = zend_string_init_interned("PROPERTY_UNIFIED_IDEOGRAPH", sizeof("PROPERTY_UNIFIED_IDEOGRAPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_UNIFIED_IDEOGRAPH_name, &const_PROPERTY_UNIFIED_IDEOGRAPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_UNIFIED_IDEOGRAPH_name); + + zval const_PROPERTY_UPPERCASE_value; + ZVAL_LONG(&const_PROPERTY_UPPERCASE_value, UCHAR_UPPERCASE); + zend_string *const_PROPERTY_UPPERCASE_name = zend_string_init_interned("PROPERTY_UPPERCASE", sizeof("PROPERTY_UPPERCASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_UPPERCASE_name, &const_PROPERTY_UPPERCASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_UPPERCASE_name); + + zval const_PROPERTY_WHITE_SPACE_value; + ZVAL_LONG(&const_PROPERTY_WHITE_SPACE_value, UCHAR_WHITE_SPACE); + zend_string *const_PROPERTY_WHITE_SPACE_name = zend_string_init_interned("PROPERTY_WHITE_SPACE", sizeof("PROPERTY_WHITE_SPACE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_WHITE_SPACE_name, &const_PROPERTY_WHITE_SPACE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_WHITE_SPACE_name); + + zval const_PROPERTY_XID_CONTINUE_value; + ZVAL_LONG(&const_PROPERTY_XID_CONTINUE_value, UCHAR_XID_CONTINUE); + zend_string *const_PROPERTY_XID_CONTINUE_name = zend_string_init_interned("PROPERTY_XID_CONTINUE", sizeof("PROPERTY_XID_CONTINUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_XID_CONTINUE_name, &const_PROPERTY_XID_CONTINUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_XID_CONTINUE_name); + + zval const_PROPERTY_XID_START_value; + ZVAL_LONG(&const_PROPERTY_XID_START_value, UCHAR_XID_START); + zend_string *const_PROPERTY_XID_START_name = zend_string_init_interned("PROPERTY_XID_START", sizeof("PROPERTY_XID_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_XID_START_name, &const_PROPERTY_XID_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_XID_START_name); + + zval const_PROPERTY_CASE_SENSITIVE_value; + ZVAL_LONG(&const_PROPERTY_CASE_SENSITIVE_value, UCHAR_CASE_SENSITIVE); + zend_string *const_PROPERTY_CASE_SENSITIVE_name = zend_string_init_interned("PROPERTY_CASE_SENSITIVE", sizeof("PROPERTY_CASE_SENSITIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CASE_SENSITIVE_name, &const_PROPERTY_CASE_SENSITIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CASE_SENSITIVE_name); + + zval const_PROPERTY_S_TERM_value; + ZVAL_LONG(&const_PROPERTY_S_TERM_value, UCHAR_S_TERM); + zend_string *const_PROPERTY_S_TERM_name = zend_string_init_interned("PROPERTY_S_TERM", sizeof("PROPERTY_S_TERM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_S_TERM_name, &const_PROPERTY_S_TERM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_S_TERM_name); + + zval const_PROPERTY_VARIATION_SELECTOR_value; + ZVAL_LONG(&const_PROPERTY_VARIATION_SELECTOR_value, UCHAR_VARIATION_SELECTOR); + zend_string *const_PROPERTY_VARIATION_SELECTOR_name = zend_string_init_interned("PROPERTY_VARIATION_SELECTOR", sizeof("PROPERTY_VARIATION_SELECTOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_VARIATION_SELECTOR_name, &const_PROPERTY_VARIATION_SELECTOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_VARIATION_SELECTOR_name); + + zval const_PROPERTY_NFD_INERT_value; + ZVAL_LONG(&const_PROPERTY_NFD_INERT_value, UCHAR_NFD_INERT); + zend_string *const_PROPERTY_NFD_INERT_name = zend_string_init_interned("PROPERTY_NFD_INERT", sizeof("PROPERTY_NFD_INERT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFD_INERT_name, &const_PROPERTY_NFD_INERT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFD_INERT_name); + + zval const_PROPERTY_NFKD_INERT_value; + ZVAL_LONG(&const_PROPERTY_NFKD_INERT_value, UCHAR_NFKD_INERT); + zend_string *const_PROPERTY_NFKD_INERT_name = zend_string_init_interned("PROPERTY_NFKD_INERT", sizeof("PROPERTY_NFKD_INERT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFKD_INERT_name, &const_PROPERTY_NFKD_INERT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFKD_INERT_name); + + zval const_PROPERTY_NFC_INERT_value; + ZVAL_LONG(&const_PROPERTY_NFC_INERT_value, UCHAR_NFC_INERT); + zend_string *const_PROPERTY_NFC_INERT_name = zend_string_init_interned("PROPERTY_NFC_INERT", sizeof("PROPERTY_NFC_INERT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFC_INERT_name, &const_PROPERTY_NFC_INERT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFC_INERT_name); + + zval const_PROPERTY_NFKC_INERT_value; + ZVAL_LONG(&const_PROPERTY_NFKC_INERT_value, UCHAR_NFKC_INERT); + zend_string *const_PROPERTY_NFKC_INERT_name = zend_string_init_interned("PROPERTY_NFKC_INERT", sizeof("PROPERTY_NFKC_INERT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFKC_INERT_name, &const_PROPERTY_NFKC_INERT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFKC_INERT_name); + + zval const_PROPERTY_SEGMENT_STARTER_value; + ZVAL_LONG(&const_PROPERTY_SEGMENT_STARTER_value, UCHAR_SEGMENT_STARTER); + zend_string *const_PROPERTY_SEGMENT_STARTER_name = zend_string_init_interned("PROPERTY_SEGMENT_STARTER", sizeof("PROPERTY_SEGMENT_STARTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SEGMENT_STARTER_name, &const_PROPERTY_SEGMENT_STARTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SEGMENT_STARTER_name); + + zval const_PROPERTY_PATTERN_SYNTAX_value; + ZVAL_LONG(&const_PROPERTY_PATTERN_SYNTAX_value, UCHAR_PATTERN_SYNTAX); + zend_string *const_PROPERTY_PATTERN_SYNTAX_name = zend_string_init_interned("PROPERTY_PATTERN_SYNTAX", sizeof("PROPERTY_PATTERN_SYNTAX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_PATTERN_SYNTAX_name, &const_PROPERTY_PATTERN_SYNTAX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_PATTERN_SYNTAX_name); + + zval const_PROPERTY_PATTERN_WHITE_SPACE_value; + ZVAL_LONG(&const_PROPERTY_PATTERN_WHITE_SPACE_value, UCHAR_PATTERN_WHITE_SPACE); + zend_string *const_PROPERTY_PATTERN_WHITE_SPACE_name = zend_string_init_interned("PROPERTY_PATTERN_WHITE_SPACE", sizeof("PROPERTY_PATTERN_WHITE_SPACE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_PATTERN_WHITE_SPACE_name, &const_PROPERTY_PATTERN_WHITE_SPACE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_PATTERN_WHITE_SPACE_name); + + zval const_PROPERTY_POSIX_ALNUM_value; + ZVAL_LONG(&const_PROPERTY_POSIX_ALNUM_value, UCHAR_POSIX_ALNUM); + zend_string *const_PROPERTY_POSIX_ALNUM_name = zend_string_init_interned("PROPERTY_POSIX_ALNUM", sizeof("PROPERTY_POSIX_ALNUM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_POSIX_ALNUM_name, &const_PROPERTY_POSIX_ALNUM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_POSIX_ALNUM_name); + + zval const_PROPERTY_POSIX_BLANK_value; + ZVAL_LONG(&const_PROPERTY_POSIX_BLANK_value, UCHAR_POSIX_BLANK); + zend_string *const_PROPERTY_POSIX_BLANK_name = zend_string_init_interned("PROPERTY_POSIX_BLANK", sizeof("PROPERTY_POSIX_BLANK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_POSIX_BLANK_name, &const_PROPERTY_POSIX_BLANK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_POSIX_BLANK_name); + + zval const_PROPERTY_POSIX_GRAPH_value; + ZVAL_LONG(&const_PROPERTY_POSIX_GRAPH_value, UCHAR_POSIX_GRAPH); + zend_string *const_PROPERTY_POSIX_GRAPH_name = zend_string_init_interned("PROPERTY_POSIX_GRAPH", sizeof("PROPERTY_POSIX_GRAPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_POSIX_GRAPH_name, &const_PROPERTY_POSIX_GRAPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_POSIX_GRAPH_name); + + zval const_PROPERTY_POSIX_PRINT_value; + ZVAL_LONG(&const_PROPERTY_POSIX_PRINT_value, UCHAR_POSIX_PRINT); + zend_string *const_PROPERTY_POSIX_PRINT_name = zend_string_init_interned("PROPERTY_POSIX_PRINT", sizeof("PROPERTY_POSIX_PRINT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_POSIX_PRINT_name, &const_PROPERTY_POSIX_PRINT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_POSIX_PRINT_name); + + zval const_PROPERTY_POSIX_XDIGIT_value; + ZVAL_LONG(&const_PROPERTY_POSIX_XDIGIT_value, UCHAR_POSIX_XDIGIT); + zend_string *const_PROPERTY_POSIX_XDIGIT_name = zend_string_init_interned("PROPERTY_POSIX_XDIGIT", sizeof("PROPERTY_POSIX_XDIGIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_POSIX_XDIGIT_name, &const_PROPERTY_POSIX_XDIGIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_POSIX_XDIGIT_name); + + zval const_PROPERTY_CASED_value; + ZVAL_LONG(&const_PROPERTY_CASED_value, UCHAR_CASED); + zend_string *const_PROPERTY_CASED_name = zend_string_init_interned("PROPERTY_CASED", sizeof("PROPERTY_CASED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CASED_name, &const_PROPERTY_CASED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CASED_name); + + zval const_PROPERTY_CASE_IGNORABLE_value; + ZVAL_LONG(&const_PROPERTY_CASE_IGNORABLE_value, UCHAR_CASE_IGNORABLE); + zend_string *const_PROPERTY_CASE_IGNORABLE_name = zend_string_init_interned("PROPERTY_CASE_IGNORABLE", sizeof("PROPERTY_CASE_IGNORABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CASE_IGNORABLE_name, &const_PROPERTY_CASE_IGNORABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CASE_IGNORABLE_name); + + zval const_PROPERTY_CHANGES_WHEN_LOWERCASED_value; + ZVAL_LONG(&const_PROPERTY_CHANGES_WHEN_LOWERCASED_value, UCHAR_CHANGES_WHEN_LOWERCASED); + zend_string *const_PROPERTY_CHANGES_WHEN_LOWERCASED_name = zend_string_init_interned("PROPERTY_CHANGES_WHEN_LOWERCASED", sizeof("PROPERTY_CHANGES_WHEN_LOWERCASED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CHANGES_WHEN_LOWERCASED_name, &const_PROPERTY_CHANGES_WHEN_LOWERCASED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CHANGES_WHEN_LOWERCASED_name); + + zval const_PROPERTY_CHANGES_WHEN_UPPERCASED_value; + ZVAL_LONG(&const_PROPERTY_CHANGES_WHEN_UPPERCASED_value, UCHAR_CHANGES_WHEN_UPPERCASED); + zend_string *const_PROPERTY_CHANGES_WHEN_UPPERCASED_name = zend_string_init_interned("PROPERTY_CHANGES_WHEN_UPPERCASED", sizeof("PROPERTY_CHANGES_WHEN_UPPERCASED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CHANGES_WHEN_UPPERCASED_name, &const_PROPERTY_CHANGES_WHEN_UPPERCASED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CHANGES_WHEN_UPPERCASED_name); + + zval const_PROPERTY_CHANGES_WHEN_TITLECASED_value; + ZVAL_LONG(&const_PROPERTY_CHANGES_WHEN_TITLECASED_value, UCHAR_CHANGES_WHEN_TITLECASED); + zend_string *const_PROPERTY_CHANGES_WHEN_TITLECASED_name = zend_string_init_interned("PROPERTY_CHANGES_WHEN_TITLECASED", sizeof("PROPERTY_CHANGES_WHEN_TITLECASED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CHANGES_WHEN_TITLECASED_name, &const_PROPERTY_CHANGES_WHEN_TITLECASED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CHANGES_WHEN_TITLECASED_name); + + zval const_PROPERTY_CHANGES_WHEN_CASEFOLDED_value; + ZVAL_LONG(&const_PROPERTY_CHANGES_WHEN_CASEFOLDED_value, UCHAR_CHANGES_WHEN_CASEFOLDED); + zend_string *const_PROPERTY_CHANGES_WHEN_CASEFOLDED_name = zend_string_init_interned("PROPERTY_CHANGES_WHEN_CASEFOLDED", sizeof("PROPERTY_CHANGES_WHEN_CASEFOLDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CHANGES_WHEN_CASEFOLDED_name, &const_PROPERTY_CHANGES_WHEN_CASEFOLDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CHANGES_WHEN_CASEFOLDED_name); + + zval const_PROPERTY_CHANGES_WHEN_CASEMAPPED_value; + ZVAL_LONG(&const_PROPERTY_CHANGES_WHEN_CASEMAPPED_value, UCHAR_CHANGES_WHEN_CASEMAPPED); + zend_string *const_PROPERTY_CHANGES_WHEN_CASEMAPPED_name = zend_string_init_interned("PROPERTY_CHANGES_WHEN_CASEMAPPED", sizeof("PROPERTY_CHANGES_WHEN_CASEMAPPED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CHANGES_WHEN_CASEMAPPED_name, &const_PROPERTY_CHANGES_WHEN_CASEMAPPED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CHANGES_WHEN_CASEMAPPED_name); + + zval const_PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED_value; + ZVAL_LONG(&const_PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED_value, UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED); + zend_string *const_PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED_name = zend_string_init_interned("PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED", sizeof("PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED_name, &const_PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CHANGES_WHEN_NFKC_CASEFOLDED_name); + + zval const_PROPERTY_BINARY_LIMIT_value; + ZVAL_LONG(&const_PROPERTY_BINARY_LIMIT_value, UCHAR_BINARY_LIMIT); + zend_string *const_PROPERTY_BINARY_LIMIT_name = zend_string_init_interned("PROPERTY_BINARY_LIMIT", sizeof("PROPERTY_BINARY_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BINARY_LIMIT_name, &const_PROPERTY_BINARY_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BINARY_LIMIT_name); + + zval const_PROPERTY_BIDI_CLASS_value; + ZVAL_LONG(&const_PROPERTY_BIDI_CLASS_value, UCHAR_BIDI_CLASS); + zend_string *const_PROPERTY_BIDI_CLASS_name = zend_string_init_interned("PROPERTY_BIDI_CLASS", sizeof("PROPERTY_BIDI_CLASS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BIDI_CLASS_name, &const_PROPERTY_BIDI_CLASS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BIDI_CLASS_name); + + zval const_PROPERTY_INT_START_value; + ZVAL_LONG(&const_PROPERTY_INT_START_value, UCHAR_INT_START); + zend_string *const_PROPERTY_INT_START_name = zend_string_init_interned("PROPERTY_INT_START", sizeof("PROPERTY_INT_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_INT_START_name, &const_PROPERTY_INT_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_INT_START_name); + + zval const_PROPERTY_BLOCK_value; + ZVAL_LONG(&const_PROPERTY_BLOCK_value, UCHAR_BLOCK); + zend_string *const_PROPERTY_BLOCK_name = zend_string_init_interned("PROPERTY_BLOCK", sizeof("PROPERTY_BLOCK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BLOCK_name, &const_PROPERTY_BLOCK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BLOCK_name); + + zval const_PROPERTY_CANONICAL_COMBINING_CLASS_value; + ZVAL_LONG(&const_PROPERTY_CANONICAL_COMBINING_CLASS_value, UCHAR_CANONICAL_COMBINING_CLASS); + zend_string *const_PROPERTY_CANONICAL_COMBINING_CLASS_name = zend_string_init_interned("PROPERTY_CANONICAL_COMBINING_CLASS", sizeof("PROPERTY_CANONICAL_COMBINING_CLASS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CANONICAL_COMBINING_CLASS_name, &const_PROPERTY_CANONICAL_COMBINING_CLASS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CANONICAL_COMBINING_CLASS_name); + + zval const_PROPERTY_DECOMPOSITION_TYPE_value; + ZVAL_LONG(&const_PROPERTY_DECOMPOSITION_TYPE_value, UCHAR_DECOMPOSITION_TYPE); + zend_string *const_PROPERTY_DECOMPOSITION_TYPE_name = zend_string_init_interned("PROPERTY_DECOMPOSITION_TYPE", sizeof("PROPERTY_DECOMPOSITION_TYPE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_DECOMPOSITION_TYPE_name, &const_PROPERTY_DECOMPOSITION_TYPE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_DECOMPOSITION_TYPE_name); + + zval const_PROPERTY_EAST_ASIAN_WIDTH_value; + ZVAL_LONG(&const_PROPERTY_EAST_ASIAN_WIDTH_value, UCHAR_EAST_ASIAN_WIDTH); + zend_string *const_PROPERTY_EAST_ASIAN_WIDTH_name = zend_string_init_interned("PROPERTY_EAST_ASIAN_WIDTH", sizeof("PROPERTY_EAST_ASIAN_WIDTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_EAST_ASIAN_WIDTH_name, &const_PROPERTY_EAST_ASIAN_WIDTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_EAST_ASIAN_WIDTH_name); + + zval const_PROPERTY_GENERAL_CATEGORY_value; + ZVAL_LONG(&const_PROPERTY_GENERAL_CATEGORY_value, UCHAR_GENERAL_CATEGORY); + zend_string *const_PROPERTY_GENERAL_CATEGORY_name = zend_string_init_interned("PROPERTY_GENERAL_CATEGORY", sizeof("PROPERTY_GENERAL_CATEGORY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_GENERAL_CATEGORY_name, &const_PROPERTY_GENERAL_CATEGORY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_GENERAL_CATEGORY_name); + + zval const_PROPERTY_JOINING_GROUP_value; + ZVAL_LONG(&const_PROPERTY_JOINING_GROUP_value, UCHAR_JOINING_GROUP); + zend_string *const_PROPERTY_JOINING_GROUP_name = zend_string_init_interned("PROPERTY_JOINING_GROUP", sizeof("PROPERTY_JOINING_GROUP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_JOINING_GROUP_name, &const_PROPERTY_JOINING_GROUP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_JOINING_GROUP_name); + + zval const_PROPERTY_JOINING_TYPE_value; + ZVAL_LONG(&const_PROPERTY_JOINING_TYPE_value, UCHAR_JOINING_TYPE); + zend_string *const_PROPERTY_JOINING_TYPE_name = zend_string_init_interned("PROPERTY_JOINING_TYPE", sizeof("PROPERTY_JOINING_TYPE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_JOINING_TYPE_name, &const_PROPERTY_JOINING_TYPE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_JOINING_TYPE_name); + + zval const_PROPERTY_LINE_BREAK_value; + ZVAL_LONG(&const_PROPERTY_LINE_BREAK_value, UCHAR_LINE_BREAK); + zend_string *const_PROPERTY_LINE_BREAK_name = zend_string_init_interned("PROPERTY_LINE_BREAK", sizeof("PROPERTY_LINE_BREAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_LINE_BREAK_name, &const_PROPERTY_LINE_BREAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_LINE_BREAK_name); + + zval const_PROPERTY_NUMERIC_TYPE_value; + ZVAL_LONG(&const_PROPERTY_NUMERIC_TYPE_value, UCHAR_NUMERIC_TYPE); + zend_string *const_PROPERTY_NUMERIC_TYPE_name = zend_string_init_interned("PROPERTY_NUMERIC_TYPE", sizeof("PROPERTY_NUMERIC_TYPE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NUMERIC_TYPE_name, &const_PROPERTY_NUMERIC_TYPE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NUMERIC_TYPE_name); + + zval const_PROPERTY_SCRIPT_value; + ZVAL_LONG(&const_PROPERTY_SCRIPT_value, UCHAR_SCRIPT); + zend_string *const_PROPERTY_SCRIPT_name = zend_string_init_interned("PROPERTY_SCRIPT", sizeof("PROPERTY_SCRIPT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SCRIPT_name, &const_PROPERTY_SCRIPT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SCRIPT_name); + + zval const_PROPERTY_HANGUL_SYLLABLE_TYPE_value; + ZVAL_LONG(&const_PROPERTY_HANGUL_SYLLABLE_TYPE_value, UCHAR_HANGUL_SYLLABLE_TYPE); + zend_string *const_PROPERTY_HANGUL_SYLLABLE_TYPE_name = zend_string_init_interned("PROPERTY_HANGUL_SYLLABLE_TYPE", sizeof("PROPERTY_HANGUL_SYLLABLE_TYPE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_HANGUL_SYLLABLE_TYPE_name, &const_PROPERTY_HANGUL_SYLLABLE_TYPE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_HANGUL_SYLLABLE_TYPE_name); + + zval const_PROPERTY_NFD_QUICK_CHECK_value; + ZVAL_LONG(&const_PROPERTY_NFD_QUICK_CHECK_value, UCHAR_NFD_QUICK_CHECK); + zend_string *const_PROPERTY_NFD_QUICK_CHECK_name = zend_string_init_interned("PROPERTY_NFD_QUICK_CHECK", sizeof("PROPERTY_NFD_QUICK_CHECK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFD_QUICK_CHECK_name, &const_PROPERTY_NFD_QUICK_CHECK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFD_QUICK_CHECK_name); + + zval const_PROPERTY_NFKD_QUICK_CHECK_value; + ZVAL_LONG(&const_PROPERTY_NFKD_QUICK_CHECK_value, UCHAR_NFKD_QUICK_CHECK); + zend_string *const_PROPERTY_NFKD_QUICK_CHECK_name = zend_string_init_interned("PROPERTY_NFKD_QUICK_CHECK", sizeof("PROPERTY_NFKD_QUICK_CHECK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFKD_QUICK_CHECK_name, &const_PROPERTY_NFKD_QUICK_CHECK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFKD_QUICK_CHECK_name); + + zval const_PROPERTY_NFC_QUICK_CHECK_value; + ZVAL_LONG(&const_PROPERTY_NFC_QUICK_CHECK_value, UCHAR_NFC_QUICK_CHECK); + zend_string *const_PROPERTY_NFC_QUICK_CHECK_name = zend_string_init_interned("PROPERTY_NFC_QUICK_CHECK", sizeof("PROPERTY_NFC_QUICK_CHECK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFC_QUICK_CHECK_name, &const_PROPERTY_NFC_QUICK_CHECK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFC_QUICK_CHECK_name); + + zval const_PROPERTY_NFKC_QUICK_CHECK_value; + ZVAL_LONG(&const_PROPERTY_NFKC_QUICK_CHECK_value, UCHAR_NFKC_QUICK_CHECK); + zend_string *const_PROPERTY_NFKC_QUICK_CHECK_name = zend_string_init_interned("PROPERTY_NFKC_QUICK_CHECK", sizeof("PROPERTY_NFKC_QUICK_CHECK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NFKC_QUICK_CHECK_name, &const_PROPERTY_NFKC_QUICK_CHECK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NFKC_QUICK_CHECK_name); + + zval const_PROPERTY_LEAD_CANONICAL_COMBINING_CLASS_value; + ZVAL_LONG(&const_PROPERTY_LEAD_CANONICAL_COMBINING_CLASS_value, UCHAR_LEAD_CANONICAL_COMBINING_CLASS); + zend_string *const_PROPERTY_LEAD_CANONICAL_COMBINING_CLASS_name = zend_string_init_interned("PROPERTY_LEAD_CANONICAL_COMBINING_CLASS", sizeof("PROPERTY_LEAD_CANONICAL_COMBINING_CLASS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_LEAD_CANONICAL_COMBINING_CLASS_name, &const_PROPERTY_LEAD_CANONICAL_COMBINING_CLASS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_LEAD_CANONICAL_COMBINING_CLASS_name); + + zval const_PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS_value; + ZVAL_LONG(&const_PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS_value, UCHAR_TRAIL_CANONICAL_COMBINING_CLASS); + zend_string *const_PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS_name = zend_string_init_interned("PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS", sizeof("PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS_name, &const_PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_TRAIL_CANONICAL_COMBINING_CLASS_name); + + zval const_PROPERTY_GRAPHEME_CLUSTER_BREAK_value; + ZVAL_LONG(&const_PROPERTY_GRAPHEME_CLUSTER_BREAK_value, UCHAR_GRAPHEME_CLUSTER_BREAK); + zend_string *const_PROPERTY_GRAPHEME_CLUSTER_BREAK_name = zend_string_init_interned("PROPERTY_GRAPHEME_CLUSTER_BREAK", sizeof("PROPERTY_GRAPHEME_CLUSTER_BREAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_GRAPHEME_CLUSTER_BREAK_name, &const_PROPERTY_GRAPHEME_CLUSTER_BREAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_GRAPHEME_CLUSTER_BREAK_name); + + zval const_PROPERTY_SENTENCE_BREAK_value; + ZVAL_LONG(&const_PROPERTY_SENTENCE_BREAK_value, UCHAR_SENTENCE_BREAK); + zend_string *const_PROPERTY_SENTENCE_BREAK_name = zend_string_init_interned("PROPERTY_SENTENCE_BREAK", sizeof("PROPERTY_SENTENCE_BREAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SENTENCE_BREAK_name, &const_PROPERTY_SENTENCE_BREAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SENTENCE_BREAK_name); + + zval const_PROPERTY_WORD_BREAK_value; + ZVAL_LONG(&const_PROPERTY_WORD_BREAK_value, UCHAR_WORD_BREAK); + zend_string *const_PROPERTY_WORD_BREAK_name = zend_string_init_interned("PROPERTY_WORD_BREAK", sizeof("PROPERTY_WORD_BREAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_WORD_BREAK_name, &const_PROPERTY_WORD_BREAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_WORD_BREAK_name); +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_PROPERTY_BIDI_PAIRED_BRACKET_TYPE_value; + ZVAL_LONG(&const_PROPERTY_BIDI_PAIRED_BRACKET_TYPE_value, UCHAR_BIDI_PAIRED_BRACKET_TYPE); + zend_string *const_PROPERTY_BIDI_PAIRED_BRACKET_TYPE_name = zend_string_init_interned("PROPERTY_BIDI_PAIRED_BRACKET_TYPE", sizeof("PROPERTY_BIDI_PAIRED_BRACKET_TYPE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BIDI_PAIRED_BRACKET_TYPE_name, &const_PROPERTY_BIDI_PAIRED_BRACKET_TYPE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BIDI_PAIRED_BRACKET_TYPE_name); +#endif + + zval const_PROPERTY_INT_LIMIT_value; + ZVAL_LONG(&const_PROPERTY_INT_LIMIT_value, UCHAR_INT_LIMIT); + zend_string *const_PROPERTY_INT_LIMIT_name = zend_string_init_interned("PROPERTY_INT_LIMIT", sizeof("PROPERTY_INT_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_INT_LIMIT_name, &const_PROPERTY_INT_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_INT_LIMIT_name); + + zval const_PROPERTY_GENERAL_CATEGORY_MASK_value; + ZVAL_LONG(&const_PROPERTY_GENERAL_CATEGORY_MASK_value, UCHAR_GENERAL_CATEGORY_MASK); + zend_string *const_PROPERTY_GENERAL_CATEGORY_MASK_name = zend_string_init_interned("PROPERTY_GENERAL_CATEGORY_MASK", sizeof("PROPERTY_GENERAL_CATEGORY_MASK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_GENERAL_CATEGORY_MASK_name, &const_PROPERTY_GENERAL_CATEGORY_MASK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_GENERAL_CATEGORY_MASK_name); + + zval const_PROPERTY_MASK_START_value; + ZVAL_LONG(&const_PROPERTY_MASK_START_value, UCHAR_MASK_START); + zend_string *const_PROPERTY_MASK_START_name = zend_string_init_interned("PROPERTY_MASK_START", sizeof("PROPERTY_MASK_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_MASK_START_name, &const_PROPERTY_MASK_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_MASK_START_name); + + zval const_PROPERTY_MASK_LIMIT_value; + ZVAL_LONG(&const_PROPERTY_MASK_LIMIT_value, UCHAR_MASK_LIMIT); + zend_string *const_PROPERTY_MASK_LIMIT_name = zend_string_init_interned("PROPERTY_MASK_LIMIT", sizeof("PROPERTY_MASK_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_MASK_LIMIT_name, &const_PROPERTY_MASK_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_MASK_LIMIT_name); + + zval const_PROPERTY_NUMERIC_VALUE_value; + ZVAL_LONG(&const_PROPERTY_NUMERIC_VALUE_value, UCHAR_NUMERIC_VALUE); + zend_string *const_PROPERTY_NUMERIC_VALUE_name = zend_string_init_interned("PROPERTY_NUMERIC_VALUE", sizeof("PROPERTY_NUMERIC_VALUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NUMERIC_VALUE_name, &const_PROPERTY_NUMERIC_VALUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NUMERIC_VALUE_name); + + zval const_PROPERTY_DOUBLE_START_value; + ZVAL_LONG(&const_PROPERTY_DOUBLE_START_value, UCHAR_DOUBLE_START); + zend_string *const_PROPERTY_DOUBLE_START_name = zend_string_init_interned("PROPERTY_DOUBLE_START", sizeof("PROPERTY_DOUBLE_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_DOUBLE_START_name, &const_PROPERTY_DOUBLE_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_DOUBLE_START_name); + + zval const_PROPERTY_DOUBLE_LIMIT_value; + ZVAL_LONG(&const_PROPERTY_DOUBLE_LIMIT_value, UCHAR_DOUBLE_LIMIT); + zend_string *const_PROPERTY_DOUBLE_LIMIT_name = zend_string_init_interned("PROPERTY_DOUBLE_LIMIT", sizeof("PROPERTY_DOUBLE_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_DOUBLE_LIMIT_name, &const_PROPERTY_DOUBLE_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_DOUBLE_LIMIT_name); + + zval const_PROPERTY_AGE_value; + ZVAL_LONG(&const_PROPERTY_AGE_value, UCHAR_AGE); + zend_string *const_PROPERTY_AGE_name = zend_string_init_interned("PROPERTY_AGE", sizeof("PROPERTY_AGE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_AGE_name, &const_PROPERTY_AGE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_AGE_name); + + zval const_PROPERTY_STRING_START_value; + ZVAL_LONG(&const_PROPERTY_STRING_START_value, UCHAR_STRING_START); + zend_string *const_PROPERTY_STRING_START_name = zend_string_init_interned("PROPERTY_STRING_START", sizeof("PROPERTY_STRING_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_STRING_START_name, &const_PROPERTY_STRING_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_STRING_START_name); + + zval const_PROPERTY_BIDI_MIRRORING_GLYPH_value; + ZVAL_LONG(&const_PROPERTY_BIDI_MIRRORING_GLYPH_value, UCHAR_BIDI_MIRRORING_GLYPH); + zend_string *const_PROPERTY_BIDI_MIRRORING_GLYPH_name = zend_string_init_interned("PROPERTY_BIDI_MIRRORING_GLYPH", sizeof("PROPERTY_BIDI_MIRRORING_GLYPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BIDI_MIRRORING_GLYPH_name, &const_PROPERTY_BIDI_MIRRORING_GLYPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BIDI_MIRRORING_GLYPH_name); + + zval const_PROPERTY_CASE_FOLDING_value; + ZVAL_LONG(&const_PROPERTY_CASE_FOLDING_value, UCHAR_CASE_FOLDING); + zend_string *const_PROPERTY_CASE_FOLDING_name = zend_string_init_interned("PROPERTY_CASE_FOLDING", sizeof("PROPERTY_CASE_FOLDING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_CASE_FOLDING_name, &const_PROPERTY_CASE_FOLDING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_CASE_FOLDING_name); + + zval const_PROPERTY_ISO_COMMENT_value; + ZVAL_LONG(&const_PROPERTY_ISO_COMMENT_value, UCHAR_ISO_COMMENT); + zend_string *const_PROPERTY_ISO_COMMENT_name = zend_string_init_interned("PROPERTY_ISO_COMMENT", sizeof("PROPERTY_ISO_COMMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_ISO_COMMENT_name, &const_PROPERTY_ISO_COMMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_ISO_COMMENT_name); + + zval const_PROPERTY_LOWERCASE_MAPPING_value; + ZVAL_LONG(&const_PROPERTY_LOWERCASE_MAPPING_value, UCHAR_LOWERCASE_MAPPING); + zend_string *const_PROPERTY_LOWERCASE_MAPPING_name = zend_string_init_interned("PROPERTY_LOWERCASE_MAPPING", sizeof("PROPERTY_LOWERCASE_MAPPING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_LOWERCASE_MAPPING_name, &const_PROPERTY_LOWERCASE_MAPPING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_LOWERCASE_MAPPING_name); + + zval const_PROPERTY_NAME_value; + ZVAL_LONG(&const_PROPERTY_NAME_value, UCHAR_NAME); + zend_string *const_PROPERTY_NAME_name = zend_string_init_interned("PROPERTY_NAME", sizeof("PROPERTY_NAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NAME_name, &const_PROPERTY_NAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NAME_name); + + zval const_PROPERTY_SIMPLE_CASE_FOLDING_value; + ZVAL_LONG(&const_PROPERTY_SIMPLE_CASE_FOLDING_value, UCHAR_SIMPLE_CASE_FOLDING); + zend_string *const_PROPERTY_SIMPLE_CASE_FOLDING_name = zend_string_init_interned("PROPERTY_SIMPLE_CASE_FOLDING", sizeof("PROPERTY_SIMPLE_CASE_FOLDING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SIMPLE_CASE_FOLDING_name, &const_PROPERTY_SIMPLE_CASE_FOLDING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SIMPLE_CASE_FOLDING_name); + + zval const_PROPERTY_SIMPLE_LOWERCASE_MAPPING_value; + ZVAL_LONG(&const_PROPERTY_SIMPLE_LOWERCASE_MAPPING_value, UCHAR_SIMPLE_LOWERCASE_MAPPING); + zend_string *const_PROPERTY_SIMPLE_LOWERCASE_MAPPING_name = zend_string_init_interned("PROPERTY_SIMPLE_LOWERCASE_MAPPING", sizeof("PROPERTY_SIMPLE_LOWERCASE_MAPPING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SIMPLE_LOWERCASE_MAPPING_name, &const_PROPERTY_SIMPLE_LOWERCASE_MAPPING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SIMPLE_LOWERCASE_MAPPING_name); + + zval const_PROPERTY_SIMPLE_TITLECASE_MAPPING_value; + ZVAL_LONG(&const_PROPERTY_SIMPLE_TITLECASE_MAPPING_value, UCHAR_SIMPLE_TITLECASE_MAPPING); + zend_string *const_PROPERTY_SIMPLE_TITLECASE_MAPPING_name = zend_string_init_interned("PROPERTY_SIMPLE_TITLECASE_MAPPING", sizeof("PROPERTY_SIMPLE_TITLECASE_MAPPING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SIMPLE_TITLECASE_MAPPING_name, &const_PROPERTY_SIMPLE_TITLECASE_MAPPING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SIMPLE_TITLECASE_MAPPING_name); + + zval const_PROPERTY_SIMPLE_UPPERCASE_MAPPING_value; + ZVAL_LONG(&const_PROPERTY_SIMPLE_UPPERCASE_MAPPING_value, UCHAR_SIMPLE_UPPERCASE_MAPPING); + zend_string *const_PROPERTY_SIMPLE_UPPERCASE_MAPPING_name = zend_string_init_interned("PROPERTY_SIMPLE_UPPERCASE_MAPPING", sizeof("PROPERTY_SIMPLE_UPPERCASE_MAPPING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SIMPLE_UPPERCASE_MAPPING_name, &const_PROPERTY_SIMPLE_UPPERCASE_MAPPING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SIMPLE_UPPERCASE_MAPPING_name); + + zval const_PROPERTY_TITLECASE_MAPPING_value; + ZVAL_LONG(&const_PROPERTY_TITLECASE_MAPPING_value, UCHAR_TITLECASE_MAPPING); + zend_string *const_PROPERTY_TITLECASE_MAPPING_name = zend_string_init_interned("PROPERTY_TITLECASE_MAPPING", sizeof("PROPERTY_TITLECASE_MAPPING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_TITLECASE_MAPPING_name, &const_PROPERTY_TITLECASE_MAPPING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_TITLECASE_MAPPING_name); + + zval const_PROPERTY_UNICODE_1_NAME_value; + ZVAL_LONG(&const_PROPERTY_UNICODE_1_NAME_value, UCHAR_UNICODE_1_NAME); + zend_string *const_PROPERTY_UNICODE_1_NAME_name = zend_string_init_interned("PROPERTY_UNICODE_1_NAME", sizeof("PROPERTY_UNICODE_1_NAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_UNICODE_1_NAME_name, &const_PROPERTY_UNICODE_1_NAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_UNICODE_1_NAME_name); + + zval const_PROPERTY_UPPERCASE_MAPPING_value; + ZVAL_LONG(&const_PROPERTY_UPPERCASE_MAPPING_value, UCHAR_UPPERCASE_MAPPING); + zend_string *const_PROPERTY_UPPERCASE_MAPPING_name = zend_string_init_interned("PROPERTY_UPPERCASE_MAPPING", sizeof("PROPERTY_UPPERCASE_MAPPING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_UPPERCASE_MAPPING_name, &const_PROPERTY_UPPERCASE_MAPPING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_UPPERCASE_MAPPING_name); +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_PROPERTY_BIDI_PAIRED_BRACKET_value; + ZVAL_LONG(&const_PROPERTY_BIDI_PAIRED_BRACKET_value, UCHAR_BIDI_PAIRED_BRACKET); + zend_string *const_PROPERTY_BIDI_PAIRED_BRACKET_name = zend_string_init_interned("PROPERTY_BIDI_PAIRED_BRACKET", sizeof("PROPERTY_BIDI_PAIRED_BRACKET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_BIDI_PAIRED_BRACKET_name, &const_PROPERTY_BIDI_PAIRED_BRACKET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_BIDI_PAIRED_BRACKET_name); +#endif + + zval const_PROPERTY_STRING_LIMIT_value; + ZVAL_LONG(&const_PROPERTY_STRING_LIMIT_value, UCHAR_STRING_LIMIT); + zend_string *const_PROPERTY_STRING_LIMIT_name = zend_string_init_interned("PROPERTY_STRING_LIMIT", sizeof("PROPERTY_STRING_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_STRING_LIMIT_name, &const_PROPERTY_STRING_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_STRING_LIMIT_name); + + zval const_PROPERTY_SCRIPT_EXTENSIONS_value; + ZVAL_LONG(&const_PROPERTY_SCRIPT_EXTENSIONS_value, UCHAR_SCRIPT_EXTENSIONS); + zend_string *const_PROPERTY_SCRIPT_EXTENSIONS_name = zend_string_init_interned("PROPERTY_SCRIPT_EXTENSIONS", sizeof("PROPERTY_SCRIPT_EXTENSIONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_SCRIPT_EXTENSIONS_name, &const_PROPERTY_SCRIPT_EXTENSIONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_SCRIPT_EXTENSIONS_name); + + zval const_PROPERTY_OTHER_PROPERTY_START_value; + ZVAL_LONG(&const_PROPERTY_OTHER_PROPERTY_START_value, UCHAR_OTHER_PROPERTY_START); + zend_string *const_PROPERTY_OTHER_PROPERTY_START_name = zend_string_init_interned("PROPERTY_OTHER_PROPERTY_START", sizeof("PROPERTY_OTHER_PROPERTY_START") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_OTHER_PROPERTY_START_name, &const_PROPERTY_OTHER_PROPERTY_START_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_OTHER_PROPERTY_START_name); + + zval const_PROPERTY_OTHER_PROPERTY_LIMIT_value; + ZVAL_LONG(&const_PROPERTY_OTHER_PROPERTY_LIMIT_value, UCHAR_OTHER_PROPERTY_LIMIT); + zend_string *const_PROPERTY_OTHER_PROPERTY_LIMIT_name = zend_string_init_interned("PROPERTY_OTHER_PROPERTY_LIMIT", sizeof("PROPERTY_OTHER_PROPERTY_LIMIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_OTHER_PROPERTY_LIMIT_name, &const_PROPERTY_OTHER_PROPERTY_LIMIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_OTHER_PROPERTY_LIMIT_name); + + zval const_PROPERTY_INVALID_CODE_value; + ZVAL_LONG(&const_PROPERTY_INVALID_CODE_value, UCHAR_INVALID_CODE); + zend_string *const_PROPERTY_INVALID_CODE_name = zend_string_init_interned("PROPERTY_INVALID_CODE", sizeof("PROPERTY_INVALID_CODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_INVALID_CODE_name, &const_PROPERTY_INVALID_CODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_INVALID_CODE_name); + + zval const_CHAR_CATEGORY_UNASSIGNED_value; + ZVAL_LONG(&const_CHAR_CATEGORY_UNASSIGNED_value, U_UNASSIGNED); + zend_string *const_CHAR_CATEGORY_UNASSIGNED_name = zend_string_init_interned("CHAR_CATEGORY_UNASSIGNED", sizeof("CHAR_CATEGORY_UNASSIGNED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_UNASSIGNED_name, &const_CHAR_CATEGORY_UNASSIGNED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_UNASSIGNED_name); + + zval const_CHAR_CATEGORY_GENERAL_OTHER_TYPES_value; + ZVAL_LONG(&const_CHAR_CATEGORY_GENERAL_OTHER_TYPES_value, U_GENERAL_OTHER_TYPES); + zend_string *const_CHAR_CATEGORY_GENERAL_OTHER_TYPES_name = zend_string_init_interned("CHAR_CATEGORY_GENERAL_OTHER_TYPES", sizeof("CHAR_CATEGORY_GENERAL_OTHER_TYPES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_GENERAL_OTHER_TYPES_name, &const_CHAR_CATEGORY_GENERAL_OTHER_TYPES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_GENERAL_OTHER_TYPES_name); + + zval const_CHAR_CATEGORY_UPPERCASE_LETTER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_UPPERCASE_LETTER_value, U_UPPERCASE_LETTER); + zend_string *const_CHAR_CATEGORY_UPPERCASE_LETTER_name = zend_string_init_interned("CHAR_CATEGORY_UPPERCASE_LETTER", sizeof("CHAR_CATEGORY_UPPERCASE_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_UPPERCASE_LETTER_name, &const_CHAR_CATEGORY_UPPERCASE_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_UPPERCASE_LETTER_name); + + zval const_CHAR_CATEGORY_LOWERCASE_LETTER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_LOWERCASE_LETTER_value, U_LOWERCASE_LETTER); + zend_string *const_CHAR_CATEGORY_LOWERCASE_LETTER_name = zend_string_init_interned("CHAR_CATEGORY_LOWERCASE_LETTER", sizeof("CHAR_CATEGORY_LOWERCASE_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_LOWERCASE_LETTER_name, &const_CHAR_CATEGORY_LOWERCASE_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_LOWERCASE_LETTER_name); + + zval const_CHAR_CATEGORY_TITLECASE_LETTER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_TITLECASE_LETTER_value, U_TITLECASE_LETTER); + zend_string *const_CHAR_CATEGORY_TITLECASE_LETTER_name = zend_string_init_interned("CHAR_CATEGORY_TITLECASE_LETTER", sizeof("CHAR_CATEGORY_TITLECASE_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_TITLECASE_LETTER_name, &const_CHAR_CATEGORY_TITLECASE_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_TITLECASE_LETTER_name); + + zval const_CHAR_CATEGORY_MODIFIER_LETTER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_MODIFIER_LETTER_value, U_MODIFIER_LETTER); + zend_string *const_CHAR_CATEGORY_MODIFIER_LETTER_name = zend_string_init_interned("CHAR_CATEGORY_MODIFIER_LETTER", sizeof("CHAR_CATEGORY_MODIFIER_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_MODIFIER_LETTER_name, &const_CHAR_CATEGORY_MODIFIER_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_MODIFIER_LETTER_name); + + zval const_CHAR_CATEGORY_OTHER_LETTER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_OTHER_LETTER_value, U_OTHER_LETTER); + zend_string *const_CHAR_CATEGORY_OTHER_LETTER_name = zend_string_init_interned("CHAR_CATEGORY_OTHER_LETTER", sizeof("CHAR_CATEGORY_OTHER_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_OTHER_LETTER_name, &const_CHAR_CATEGORY_OTHER_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_OTHER_LETTER_name); + + zval const_CHAR_CATEGORY_NON_SPACING_MARK_value; + ZVAL_LONG(&const_CHAR_CATEGORY_NON_SPACING_MARK_value, U_NON_SPACING_MARK); + zend_string *const_CHAR_CATEGORY_NON_SPACING_MARK_name = zend_string_init_interned("CHAR_CATEGORY_NON_SPACING_MARK", sizeof("CHAR_CATEGORY_NON_SPACING_MARK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_NON_SPACING_MARK_name, &const_CHAR_CATEGORY_NON_SPACING_MARK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_NON_SPACING_MARK_name); + + zval const_CHAR_CATEGORY_ENCLOSING_MARK_value; + ZVAL_LONG(&const_CHAR_CATEGORY_ENCLOSING_MARK_value, U_ENCLOSING_MARK); + zend_string *const_CHAR_CATEGORY_ENCLOSING_MARK_name = zend_string_init_interned("CHAR_CATEGORY_ENCLOSING_MARK", sizeof("CHAR_CATEGORY_ENCLOSING_MARK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_ENCLOSING_MARK_name, &const_CHAR_CATEGORY_ENCLOSING_MARK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_ENCLOSING_MARK_name); + + zval const_CHAR_CATEGORY_COMBINING_SPACING_MARK_value; + ZVAL_LONG(&const_CHAR_CATEGORY_COMBINING_SPACING_MARK_value, U_COMBINING_SPACING_MARK); + zend_string *const_CHAR_CATEGORY_COMBINING_SPACING_MARK_name = zend_string_init_interned("CHAR_CATEGORY_COMBINING_SPACING_MARK", sizeof("CHAR_CATEGORY_COMBINING_SPACING_MARK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_COMBINING_SPACING_MARK_name, &const_CHAR_CATEGORY_COMBINING_SPACING_MARK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_COMBINING_SPACING_MARK_name); + + zval const_CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER_value, U_DECIMAL_DIGIT_NUMBER); + zend_string *const_CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER_name = zend_string_init_interned("CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER", sizeof("CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER_name, &const_CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_DECIMAL_DIGIT_NUMBER_name); + + zval const_CHAR_CATEGORY_LETTER_NUMBER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_LETTER_NUMBER_value, U_LETTER_NUMBER); + zend_string *const_CHAR_CATEGORY_LETTER_NUMBER_name = zend_string_init_interned("CHAR_CATEGORY_LETTER_NUMBER", sizeof("CHAR_CATEGORY_LETTER_NUMBER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_LETTER_NUMBER_name, &const_CHAR_CATEGORY_LETTER_NUMBER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_LETTER_NUMBER_name); + + zval const_CHAR_CATEGORY_OTHER_NUMBER_value; + ZVAL_LONG(&const_CHAR_CATEGORY_OTHER_NUMBER_value, U_OTHER_NUMBER); + zend_string *const_CHAR_CATEGORY_OTHER_NUMBER_name = zend_string_init_interned("CHAR_CATEGORY_OTHER_NUMBER", sizeof("CHAR_CATEGORY_OTHER_NUMBER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_OTHER_NUMBER_name, &const_CHAR_CATEGORY_OTHER_NUMBER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_OTHER_NUMBER_name); + + zval const_CHAR_CATEGORY_SPACE_SEPARATOR_value; + ZVAL_LONG(&const_CHAR_CATEGORY_SPACE_SEPARATOR_value, U_SPACE_SEPARATOR); + zend_string *const_CHAR_CATEGORY_SPACE_SEPARATOR_name = zend_string_init_interned("CHAR_CATEGORY_SPACE_SEPARATOR", sizeof("CHAR_CATEGORY_SPACE_SEPARATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_SPACE_SEPARATOR_name, &const_CHAR_CATEGORY_SPACE_SEPARATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_SPACE_SEPARATOR_name); + + zval const_CHAR_CATEGORY_LINE_SEPARATOR_value; + ZVAL_LONG(&const_CHAR_CATEGORY_LINE_SEPARATOR_value, U_LINE_SEPARATOR); + zend_string *const_CHAR_CATEGORY_LINE_SEPARATOR_name = zend_string_init_interned("CHAR_CATEGORY_LINE_SEPARATOR", sizeof("CHAR_CATEGORY_LINE_SEPARATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_LINE_SEPARATOR_name, &const_CHAR_CATEGORY_LINE_SEPARATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_LINE_SEPARATOR_name); + + zval const_CHAR_CATEGORY_PARAGRAPH_SEPARATOR_value; + ZVAL_LONG(&const_CHAR_CATEGORY_PARAGRAPH_SEPARATOR_value, U_PARAGRAPH_SEPARATOR); + zend_string *const_CHAR_CATEGORY_PARAGRAPH_SEPARATOR_name = zend_string_init_interned("CHAR_CATEGORY_PARAGRAPH_SEPARATOR", sizeof("CHAR_CATEGORY_PARAGRAPH_SEPARATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_PARAGRAPH_SEPARATOR_name, &const_CHAR_CATEGORY_PARAGRAPH_SEPARATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_PARAGRAPH_SEPARATOR_name); + + zval const_CHAR_CATEGORY_CONTROL_CHAR_value; + ZVAL_LONG(&const_CHAR_CATEGORY_CONTROL_CHAR_value, U_CONTROL_CHAR); + zend_string *const_CHAR_CATEGORY_CONTROL_CHAR_name = zend_string_init_interned("CHAR_CATEGORY_CONTROL_CHAR", sizeof("CHAR_CATEGORY_CONTROL_CHAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_CONTROL_CHAR_name, &const_CHAR_CATEGORY_CONTROL_CHAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_CONTROL_CHAR_name); + + zval const_CHAR_CATEGORY_FORMAT_CHAR_value; + ZVAL_LONG(&const_CHAR_CATEGORY_FORMAT_CHAR_value, U_FORMAT_CHAR); + zend_string *const_CHAR_CATEGORY_FORMAT_CHAR_name = zend_string_init_interned("CHAR_CATEGORY_FORMAT_CHAR", sizeof("CHAR_CATEGORY_FORMAT_CHAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_FORMAT_CHAR_name, &const_CHAR_CATEGORY_FORMAT_CHAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_FORMAT_CHAR_name); + + zval const_CHAR_CATEGORY_PRIVATE_USE_CHAR_value; + ZVAL_LONG(&const_CHAR_CATEGORY_PRIVATE_USE_CHAR_value, U_PRIVATE_USE_CHAR); + zend_string *const_CHAR_CATEGORY_PRIVATE_USE_CHAR_name = zend_string_init_interned("CHAR_CATEGORY_PRIVATE_USE_CHAR", sizeof("CHAR_CATEGORY_PRIVATE_USE_CHAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_PRIVATE_USE_CHAR_name, &const_CHAR_CATEGORY_PRIVATE_USE_CHAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_PRIVATE_USE_CHAR_name); + + zval const_CHAR_CATEGORY_SURROGATE_value; + ZVAL_LONG(&const_CHAR_CATEGORY_SURROGATE_value, U_SURROGATE); + zend_string *const_CHAR_CATEGORY_SURROGATE_name = zend_string_init_interned("CHAR_CATEGORY_SURROGATE", sizeof("CHAR_CATEGORY_SURROGATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_SURROGATE_name, &const_CHAR_CATEGORY_SURROGATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_SURROGATE_name); + + zval const_CHAR_CATEGORY_DASH_PUNCTUATION_value; + ZVAL_LONG(&const_CHAR_CATEGORY_DASH_PUNCTUATION_value, U_DASH_PUNCTUATION); + zend_string *const_CHAR_CATEGORY_DASH_PUNCTUATION_name = zend_string_init_interned("CHAR_CATEGORY_DASH_PUNCTUATION", sizeof("CHAR_CATEGORY_DASH_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_DASH_PUNCTUATION_name, &const_CHAR_CATEGORY_DASH_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_DASH_PUNCTUATION_name); + + zval const_CHAR_CATEGORY_START_PUNCTUATION_value; + ZVAL_LONG(&const_CHAR_CATEGORY_START_PUNCTUATION_value, U_START_PUNCTUATION); + zend_string *const_CHAR_CATEGORY_START_PUNCTUATION_name = zend_string_init_interned("CHAR_CATEGORY_START_PUNCTUATION", sizeof("CHAR_CATEGORY_START_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_START_PUNCTUATION_name, &const_CHAR_CATEGORY_START_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_START_PUNCTUATION_name); + + zval const_CHAR_CATEGORY_END_PUNCTUATION_value; + ZVAL_LONG(&const_CHAR_CATEGORY_END_PUNCTUATION_value, U_END_PUNCTUATION); + zend_string *const_CHAR_CATEGORY_END_PUNCTUATION_name = zend_string_init_interned("CHAR_CATEGORY_END_PUNCTUATION", sizeof("CHAR_CATEGORY_END_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_END_PUNCTUATION_name, &const_CHAR_CATEGORY_END_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_END_PUNCTUATION_name); + + zval const_CHAR_CATEGORY_CONNECTOR_PUNCTUATION_value; + ZVAL_LONG(&const_CHAR_CATEGORY_CONNECTOR_PUNCTUATION_value, U_CONNECTOR_PUNCTUATION); + zend_string *const_CHAR_CATEGORY_CONNECTOR_PUNCTUATION_name = zend_string_init_interned("CHAR_CATEGORY_CONNECTOR_PUNCTUATION", sizeof("CHAR_CATEGORY_CONNECTOR_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_CONNECTOR_PUNCTUATION_name, &const_CHAR_CATEGORY_CONNECTOR_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_CONNECTOR_PUNCTUATION_name); + + zval const_CHAR_CATEGORY_OTHER_PUNCTUATION_value; + ZVAL_LONG(&const_CHAR_CATEGORY_OTHER_PUNCTUATION_value, U_OTHER_PUNCTUATION); + zend_string *const_CHAR_CATEGORY_OTHER_PUNCTUATION_name = zend_string_init_interned("CHAR_CATEGORY_OTHER_PUNCTUATION", sizeof("CHAR_CATEGORY_OTHER_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_OTHER_PUNCTUATION_name, &const_CHAR_CATEGORY_OTHER_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_OTHER_PUNCTUATION_name); + + zval const_CHAR_CATEGORY_MATH_SYMBOL_value; + ZVAL_LONG(&const_CHAR_CATEGORY_MATH_SYMBOL_value, U_MATH_SYMBOL); + zend_string *const_CHAR_CATEGORY_MATH_SYMBOL_name = zend_string_init_interned("CHAR_CATEGORY_MATH_SYMBOL", sizeof("CHAR_CATEGORY_MATH_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_MATH_SYMBOL_name, &const_CHAR_CATEGORY_MATH_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_MATH_SYMBOL_name); + + zval const_CHAR_CATEGORY_CURRENCY_SYMBOL_value; + ZVAL_LONG(&const_CHAR_CATEGORY_CURRENCY_SYMBOL_value, U_CURRENCY_SYMBOL); + zend_string *const_CHAR_CATEGORY_CURRENCY_SYMBOL_name = zend_string_init_interned("CHAR_CATEGORY_CURRENCY_SYMBOL", sizeof("CHAR_CATEGORY_CURRENCY_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_CURRENCY_SYMBOL_name, &const_CHAR_CATEGORY_CURRENCY_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_CURRENCY_SYMBOL_name); + + zval const_CHAR_CATEGORY_MODIFIER_SYMBOL_value; + ZVAL_LONG(&const_CHAR_CATEGORY_MODIFIER_SYMBOL_value, U_MODIFIER_SYMBOL); + zend_string *const_CHAR_CATEGORY_MODIFIER_SYMBOL_name = zend_string_init_interned("CHAR_CATEGORY_MODIFIER_SYMBOL", sizeof("CHAR_CATEGORY_MODIFIER_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_MODIFIER_SYMBOL_name, &const_CHAR_CATEGORY_MODIFIER_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_MODIFIER_SYMBOL_name); + + zval const_CHAR_CATEGORY_OTHER_SYMBOL_value; + ZVAL_LONG(&const_CHAR_CATEGORY_OTHER_SYMBOL_value, U_OTHER_SYMBOL); + zend_string *const_CHAR_CATEGORY_OTHER_SYMBOL_name = zend_string_init_interned("CHAR_CATEGORY_OTHER_SYMBOL", sizeof("CHAR_CATEGORY_OTHER_SYMBOL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_OTHER_SYMBOL_name, &const_CHAR_CATEGORY_OTHER_SYMBOL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_OTHER_SYMBOL_name); + + zval const_CHAR_CATEGORY_INITIAL_PUNCTUATION_value; + ZVAL_LONG(&const_CHAR_CATEGORY_INITIAL_PUNCTUATION_value, U_INITIAL_PUNCTUATION); + zend_string *const_CHAR_CATEGORY_INITIAL_PUNCTUATION_name = zend_string_init_interned("CHAR_CATEGORY_INITIAL_PUNCTUATION", sizeof("CHAR_CATEGORY_INITIAL_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_INITIAL_PUNCTUATION_name, &const_CHAR_CATEGORY_INITIAL_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_INITIAL_PUNCTUATION_name); + + zval const_CHAR_CATEGORY_FINAL_PUNCTUATION_value; + ZVAL_LONG(&const_CHAR_CATEGORY_FINAL_PUNCTUATION_value, U_FINAL_PUNCTUATION); + zend_string *const_CHAR_CATEGORY_FINAL_PUNCTUATION_name = zend_string_init_interned("CHAR_CATEGORY_FINAL_PUNCTUATION", sizeof("CHAR_CATEGORY_FINAL_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_FINAL_PUNCTUATION_name, &const_CHAR_CATEGORY_FINAL_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_FINAL_PUNCTUATION_name); + + zval const_CHAR_CATEGORY_CHAR_CATEGORY_COUNT_value; + ZVAL_LONG(&const_CHAR_CATEGORY_CHAR_CATEGORY_COUNT_value, U_CHAR_CATEGORY_COUNT); + zend_string *const_CHAR_CATEGORY_CHAR_CATEGORY_COUNT_name = zend_string_init_interned("CHAR_CATEGORY_CHAR_CATEGORY_COUNT", sizeof("CHAR_CATEGORY_CHAR_CATEGORY_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_CATEGORY_CHAR_CATEGORY_COUNT_name, &const_CHAR_CATEGORY_CHAR_CATEGORY_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_CATEGORY_CHAR_CATEGORY_COUNT_name); + + zval const_CHAR_DIRECTION_LEFT_TO_RIGHT_value; + ZVAL_LONG(&const_CHAR_DIRECTION_LEFT_TO_RIGHT_value, U_LEFT_TO_RIGHT); + zend_string *const_CHAR_DIRECTION_LEFT_TO_RIGHT_name = zend_string_init_interned("CHAR_DIRECTION_LEFT_TO_RIGHT", sizeof("CHAR_DIRECTION_LEFT_TO_RIGHT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_LEFT_TO_RIGHT_name, &const_CHAR_DIRECTION_LEFT_TO_RIGHT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_LEFT_TO_RIGHT_name); + + zval const_CHAR_DIRECTION_RIGHT_TO_LEFT_value; + ZVAL_LONG(&const_CHAR_DIRECTION_RIGHT_TO_LEFT_value, U_RIGHT_TO_LEFT); + zend_string *const_CHAR_DIRECTION_RIGHT_TO_LEFT_name = zend_string_init_interned("CHAR_DIRECTION_RIGHT_TO_LEFT", sizeof("CHAR_DIRECTION_RIGHT_TO_LEFT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_RIGHT_TO_LEFT_name, &const_CHAR_DIRECTION_RIGHT_TO_LEFT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_RIGHT_TO_LEFT_name); + + zval const_CHAR_DIRECTION_EUROPEAN_NUMBER_value; + ZVAL_LONG(&const_CHAR_DIRECTION_EUROPEAN_NUMBER_value, U_EUROPEAN_NUMBER); + zend_string *const_CHAR_DIRECTION_EUROPEAN_NUMBER_name = zend_string_init_interned("CHAR_DIRECTION_EUROPEAN_NUMBER", sizeof("CHAR_DIRECTION_EUROPEAN_NUMBER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_EUROPEAN_NUMBER_name, &const_CHAR_DIRECTION_EUROPEAN_NUMBER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_EUROPEAN_NUMBER_name); + + zval const_CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR_value; + ZVAL_LONG(&const_CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR_value, U_EUROPEAN_NUMBER_SEPARATOR); + zend_string *const_CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR_name = zend_string_init_interned("CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR", sizeof("CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR_name, &const_CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_EUROPEAN_NUMBER_SEPARATOR_name); + + zval const_CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR_value; + ZVAL_LONG(&const_CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR_value, U_EUROPEAN_NUMBER_TERMINATOR); + zend_string *const_CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR_name = zend_string_init_interned("CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR", sizeof("CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR_name, &const_CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_EUROPEAN_NUMBER_TERMINATOR_name); + + zval const_CHAR_DIRECTION_ARABIC_NUMBER_value; + ZVAL_LONG(&const_CHAR_DIRECTION_ARABIC_NUMBER_value, U_ARABIC_NUMBER); + zend_string *const_CHAR_DIRECTION_ARABIC_NUMBER_name = zend_string_init_interned("CHAR_DIRECTION_ARABIC_NUMBER", sizeof("CHAR_DIRECTION_ARABIC_NUMBER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_ARABIC_NUMBER_name, &const_CHAR_DIRECTION_ARABIC_NUMBER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_ARABIC_NUMBER_name); + + zval const_CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR_value; + ZVAL_LONG(&const_CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR_value, U_COMMON_NUMBER_SEPARATOR); + zend_string *const_CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR_name = zend_string_init_interned("CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR", sizeof("CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR_name, &const_CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_COMMON_NUMBER_SEPARATOR_name); + + zval const_CHAR_DIRECTION_BLOCK_SEPARATOR_value; + ZVAL_LONG(&const_CHAR_DIRECTION_BLOCK_SEPARATOR_value, U_BLOCK_SEPARATOR); + zend_string *const_CHAR_DIRECTION_BLOCK_SEPARATOR_name = zend_string_init_interned("CHAR_DIRECTION_BLOCK_SEPARATOR", sizeof("CHAR_DIRECTION_BLOCK_SEPARATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_BLOCK_SEPARATOR_name, &const_CHAR_DIRECTION_BLOCK_SEPARATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_BLOCK_SEPARATOR_name); + + zval const_CHAR_DIRECTION_SEGMENT_SEPARATOR_value; + ZVAL_LONG(&const_CHAR_DIRECTION_SEGMENT_SEPARATOR_value, U_SEGMENT_SEPARATOR); + zend_string *const_CHAR_DIRECTION_SEGMENT_SEPARATOR_name = zend_string_init_interned("CHAR_DIRECTION_SEGMENT_SEPARATOR", sizeof("CHAR_DIRECTION_SEGMENT_SEPARATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_SEGMENT_SEPARATOR_name, &const_CHAR_DIRECTION_SEGMENT_SEPARATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_SEGMENT_SEPARATOR_name); + + zval const_CHAR_DIRECTION_WHITE_SPACE_NEUTRAL_value; + ZVAL_LONG(&const_CHAR_DIRECTION_WHITE_SPACE_NEUTRAL_value, U_WHITE_SPACE_NEUTRAL); + zend_string *const_CHAR_DIRECTION_WHITE_SPACE_NEUTRAL_name = zend_string_init_interned("CHAR_DIRECTION_WHITE_SPACE_NEUTRAL", sizeof("CHAR_DIRECTION_WHITE_SPACE_NEUTRAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_WHITE_SPACE_NEUTRAL_name, &const_CHAR_DIRECTION_WHITE_SPACE_NEUTRAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_WHITE_SPACE_NEUTRAL_name); + + zval const_CHAR_DIRECTION_OTHER_NEUTRAL_value; + ZVAL_LONG(&const_CHAR_DIRECTION_OTHER_NEUTRAL_value, U_OTHER_NEUTRAL); + zend_string *const_CHAR_DIRECTION_OTHER_NEUTRAL_name = zend_string_init_interned("CHAR_DIRECTION_OTHER_NEUTRAL", sizeof("CHAR_DIRECTION_OTHER_NEUTRAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_OTHER_NEUTRAL_name, &const_CHAR_DIRECTION_OTHER_NEUTRAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_OTHER_NEUTRAL_name); + + zval const_CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING_value; + ZVAL_LONG(&const_CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING_value, U_LEFT_TO_RIGHT_EMBEDDING); + zend_string *const_CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING_name = zend_string_init_interned("CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING", sizeof("CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING_name, &const_CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_LEFT_TO_RIGHT_EMBEDDING_name); + + zval const_CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE_value; + ZVAL_LONG(&const_CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE_value, U_LEFT_TO_RIGHT_OVERRIDE); + zend_string *const_CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE_name = zend_string_init_interned("CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE", sizeof("CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE_name, &const_CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_LEFT_TO_RIGHT_OVERRIDE_name); + + zval const_CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC_value; + ZVAL_LONG(&const_CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC_value, U_RIGHT_TO_LEFT_ARABIC); + zend_string *const_CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC_name = zend_string_init_interned("CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC", sizeof("CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC_name, &const_CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_RIGHT_TO_LEFT_ARABIC_name); + + zval const_CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING_value; + ZVAL_LONG(&const_CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING_value, U_RIGHT_TO_LEFT_EMBEDDING); + zend_string *const_CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING_name = zend_string_init_interned("CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING", sizeof("CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING_name, &const_CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_RIGHT_TO_LEFT_EMBEDDING_name); + + zval const_CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE_value; + ZVAL_LONG(&const_CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE_value, U_RIGHT_TO_LEFT_OVERRIDE); + zend_string *const_CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE_name = zend_string_init_interned("CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE", sizeof("CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE_name, &const_CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_RIGHT_TO_LEFT_OVERRIDE_name); + + zval const_CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT_value; + ZVAL_LONG(&const_CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT_value, U_POP_DIRECTIONAL_FORMAT); + zend_string *const_CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT_name = zend_string_init_interned("CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT", sizeof("CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT_name, &const_CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_POP_DIRECTIONAL_FORMAT_name); + + zval const_CHAR_DIRECTION_DIR_NON_SPACING_MARK_value; + ZVAL_LONG(&const_CHAR_DIRECTION_DIR_NON_SPACING_MARK_value, U_DIR_NON_SPACING_MARK); + zend_string *const_CHAR_DIRECTION_DIR_NON_SPACING_MARK_name = zend_string_init_interned("CHAR_DIRECTION_DIR_NON_SPACING_MARK", sizeof("CHAR_DIRECTION_DIR_NON_SPACING_MARK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_DIR_NON_SPACING_MARK_name, &const_CHAR_DIRECTION_DIR_NON_SPACING_MARK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_DIR_NON_SPACING_MARK_name); + + zval const_CHAR_DIRECTION_BOUNDARY_NEUTRAL_value; + ZVAL_LONG(&const_CHAR_DIRECTION_BOUNDARY_NEUTRAL_value, U_BOUNDARY_NEUTRAL); + zend_string *const_CHAR_DIRECTION_BOUNDARY_NEUTRAL_name = zend_string_init_interned("CHAR_DIRECTION_BOUNDARY_NEUTRAL", sizeof("CHAR_DIRECTION_BOUNDARY_NEUTRAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_BOUNDARY_NEUTRAL_name, &const_CHAR_DIRECTION_BOUNDARY_NEUTRAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_BOUNDARY_NEUTRAL_name); +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_CHAR_DIRECTION_FIRST_STRONG_ISOLATE_value; + ZVAL_LONG(&const_CHAR_DIRECTION_FIRST_STRONG_ISOLATE_value, U_FIRST_STRONG_ISOLATE); + zend_string *const_CHAR_DIRECTION_FIRST_STRONG_ISOLATE_name = zend_string_init_interned("CHAR_DIRECTION_FIRST_STRONG_ISOLATE", sizeof("CHAR_DIRECTION_FIRST_STRONG_ISOLATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_FIRST_STRONG_ISOLATE_name, &const_CHAR_DIRECTION_FIRST_STRONG_ISOLATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_FIRST_STRONG_ISOLATE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE_value; + ZVAL_LONG(&const_CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE_value, U_LEFT_TO_RIGHT_ISOLATE); + zend_string *const_CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE_name = zend_string_init_interned("CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE", sizeof("CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE_name, &const_CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_LEFT_TO_RIGHT_ISOLATE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE_value; + ZVAL_LONG(&const_CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE_value, U_RIGHT_TO_LEFT_ISOLATE); + zend_string *const_CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE_name = zend_string_init_interned("CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE", sizeof("CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE_name, &const_CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_RIGHT_TO_LEFT_ISOLATE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE_value; + ZVAL_LONG(&const_CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE_value, U_POP_DIRECTIONAL_ISOLATE); + zend_string *const_CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE_name = zend_string_init_interned("CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE", sizeof("CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE_name, &const_CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_POP_DIRECTIONAL_ISOLATE_name); +#endif + + zval const_CHAR_DIRECTION_CHAR_DIRECTION_COUNT_value; + ZVAL_LONG(&const_CHAR_DIRECTION_CHAR_DIRECTION_COUNT_value, U_CHAR_DIRECTION_COUNT); + zend_string *const_CHAR_DIRECTION_CHAR_DIRECTION_COUNT_name = zend_string_init_interned("CHAR_DIRECTION_CHAR_DIRECTION_COUNT", sizeof("CHAR_DIRECTION_CHAR_DIRECTION_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_DIRECTION_CHAR_DIRECTION_COUNT_name, &const_CHAR_DIRECTION_CHAR_DIRECTION_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_DIRECTION_CHAR_DIRECTION_COUNT_name); + + zval const_BLOCK_CODE_NO_BLOCK_value; + ZVAL_LONG(&const_BLOCK_CODE_NO_BLOCK_value, UBLOCK_NO_BLOCK); + zend_string *const_BLOCK_CODE_NO_BLOCK_name = zend_string_init_interned("BLOCK_CODE_NO_BLOCK", sizeof("BLOCK_CODE_NO_BLOCK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_NO_BLOCK_name, &const_BLOCK_CODE_NO_BLOCK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_NO_BLOCK_name); + + zval const_BLOCK_CODE_BASIC_LATIN_value; + ZVAL_LONG(&const_BLOCK_CODE_BASIC_LATIN_value, UBLOCK_BASIC_LATIN); + zend_string *const_BLOCK_CODE_BASIC_LATIN_name = zend_string_init_interned("BLOCK_CODE_BASIC_LATIN", sizeof("BLOCK_CODE_BASIC_LATIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BASIC_LATIN_name, &const_BLOCK_CODE_BASIC_LATIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BASIC_LATIN_name); + + zval const_BLOCK_CODE_LATIN_1_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_LATIN_1_SUPPLEMENT_value, UBLOCK_LATIN_1_SUPPLEMENT); + zend_string *const_BLOCK_CODE_LATIN_1_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_LATIN_1_SUPPLEMENT", sizeof("BLOCK_CODE_LATIN_1_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LATIN_1_SUPPLEMENT_name, &const_BLOCK_CODE_LATIN_1_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LATIN_1_SUPPLEMENT_name); + + zval const_BLOCK_CODE_LATIN_EXTENDED_A_value; + ZVAL_LONG(&const_BLOCK_CODE_LATIN_EXTENDED_A_value, UBLOCK_LATIN_EXTENDED_A); + zend_string *const_BLOCK_CODE_LATIN_EXTENDED_A_name = zend_string_init_interned("BLOCK_CODE_LATIN_EXTENDED_A", sizeof("BLOCK_CODE_LATIN_EXTENDED_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LATIN_EXTENDED_A_name, &const_BLOCK_CODE_LATIN_EXTENDED_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LATIN_EXTENDED_A_name); + + zval const_BLOCK_CODE_LATIN_EXTENDED_B_value; + ZVAL_LONG(&const_BLOCK_CODE_LATIN_EXTENDED_B_value, UBLOCK_LATIN_EXTENDED_B); + zend_string *const_BLOCK_CODE_LATIN_EXTENDED_B_name = zend_string_init_interned("BLOCK_CODE_LATIN_EXTENDED_B", sizeof("BLOCK_CODE_LATIN_EXTENDED_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LATIN_EXTENDED_B_name, &const_BLOCK_CODE_LATIN_EXTENDED_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LATIN_EXTENDED_B_name); + + zval const_BLOCK_CODE_IPA_EXTENSIONS_value; + ZVAL_LONG(&const_BLOCK_CODE_IPA_EXTENSIONS_value, UBLOCK_IPA_EXTENSIONS); + zend_string *const_BLOCK_CODE_IPA_EXTENSIONS_name = zend_string_init_interned("BLOCK_CODE_IPA_EXTENSIONS", sizeof("BLOCK_CODE_IPA_EXTENSIONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_IPA_EXTENSIONS_name, &const_BLOCK_CODE_IPA_EXTENSIONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_IPA_EXTENSIONS_name); + + zval const_BLOCK_CODE_SPACING_MODIFIER_LETTERS_value; + ZVAL_LONG(&const_BLOCK_CODE_SPACING_MODIFIER_LETTERS_value, UBLOCK_SPACING_MODIFIER_LETTERS); + zend_string *const_BLOCK_CODE_SPACING_MODIFIER_LETTERS_name = zend_string_init_interned("BLOCK_CODE_SPACING_MODIFIER_LETTERS", sizeof("BLOCK_CODE_SPACING_MODIFIER_LETTERS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SPACING_MODIFIER_LETTERS_name, &const_BLOCK_CODE_SPACING_MODIFIER_LETTERS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SPACING_MODIFIER_LETTERS_name); + + zval const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_value; + ZVAL_LONG(&const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_value, UBLOCK_COMBINING_DIACRITICAL_MARKS); + zend_string *const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_name = zend_string_init_interned("BLOCK_CODE_COMBINING_DIACRITICAL_MARKS", sizeof("BLOCK_CODE_COMBINING_DIACRITICAL_MARKS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_name, &const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_name); + + zval const_BLOCK_CODE_GREEK_value; + ZVAL_LONG(&const_BLOCK_CODE_GREEK_value, UBLOCK_GREEK); + zend_string *const_BLOCK_CODE_GREEK_name = zend_string_init_interned("BLOCK_CODE_GREEK", sizeof("BLOCK_CODE_GREEK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GREEK_name, &const_BLOCK_CODE_GREEK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GREEK_name); + + zval const_BLOCK_CODE_CYRILLIC_value; + ZVAL_LONG(&const_BLOCK_CODE_CYRILLIC_value, UBLOCK_CYRILLIC); + zend_string *const_BLOCK_CODE_CYRILLIC_name = zend_string_init_interned("BLOCK_CODE_CYRILLIC", sizeof("BLOCK_CODE_CYRILLIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CYRILLIC_name, &const_BLOCK_CODE_CYRILLIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CYRILLIC_name); + + zval const_BLOCK_CODE_ARMENIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_ARMENIAN_value, UBLOCK_ARMENIAN); + zend_string *const_BLOCK_CODE_ARMENIAN_name = zend_string_init_interned("BLOCK_CODE_ARMENIAN", sizeof("BLOCK_CODE_ARMENIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARMENIAN_name, &const_BLOCK_CODE_ARMENIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARMENIAN_name); + + zval const_BLOCK_CODE_HEBREW_value; + ZVAL_LONG(&const_BLOCK_CODE_HEBREW_value, UBLOCK_HEBREW); + zend_string *const_BLOCK_CODE_HEBREW_name = zend_string_init_interned("BLOCK_CODE_HEBREW", sizeof("BLOCK_CODE_HEBREW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HEBREW_name, &const_BLOCK_CODE_HEBREW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HEBREW_name); + + zval const_BLOCK_CODE_ARABIC_value; + ZVAL_LONG(&const_BLOCK_CODE_ARABIC_value, UBLOCK_ARABIC); + zend_string *const_BLOCK_CODE_ARABIC_name = zend_string_init_interned("BLOCK_CODE_ARABIC", sizeof("BLOCK_CODE_ARABIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARABIC_name, &const_BLOCK_CODE_ARABIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARABIC_name); + + zval const_BLOCK_CODE_SYRIAC_value; + ZVAL_LONG(&const_BLOCK_CODE_SYRIAC_value, UBLOCK_SYRIAC); + zend_string *const_BLOCK_CODE_SYRIAC_name = zend_string_init_interned("BLOCK_CODE_SYRIAC", sizeof("BLOCK_CODE_SYRIAC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SYRIAC_name, &const_BLOCK_CODE_SYRIAC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SYRIAC_name); + + zval const_BLOCK_CODE_THAANA_value; + ZVAL_LONG(&const_BLOCK_CODE_THAANA_value, UBLOCK_THAANA); + zend_string *const_BLOCK_CODE_THAANA_name = zend_string_init_interned("BLOCK_CODE_THAANA", sizeof("BLOCK_CODE_THAANA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_THAANA_name, &const_BLOCK_CODE_THAANA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_THAANA_name); + + zval const_BLOCK_CODE_DEVANAGARI_value; + ZVAL_LONG(&const_BLOCK_CODE_DEVANAGARI_value, UBLOCK_DEVANAGARI); + zend_string *const_BLOCK_CODE_DEVANAGARI_name = zend_string_init_interned("BLOCK_CODE_DEVANAGARI", sizeof("BLOCK_CODE_DEVANAGARI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_DEVANAGARI_name, &const_BLOCK_CODE_DEVANAGARI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_DEVANAGARI_name); + + zval const_BLOCK_CODE_BENGALI_value; + ZVAL_LONG(&const_BLOCK_CODE_BENGALI_value, UBLOCK_BENGALI); + zend_string *const_BLOCK_CODE_BENGALI_name = zend_string_init_interned("BLOCK_CODE_BENGALI", sizeof("BLOCK_CODE_BENGALI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BENGALI_name, &const_BLOCK_CODE_BENGALI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BENGALI_name); + + zval const_BLOCK_CODE_GURMUKHI_value; + ZVAL_LONG(&const_BLOCK_CODE_GURMUKHI_value, UBLOCK_GURMUKHI); + zend_string *const_BLOCK_CODE_GURMUKHI_name = zend_string_init_interned("BLOCK_CODE_GURMUKHI", sizeof("BLOCK_CODE_GURMUKHI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GURMUKHI_name, &const_BLOCK_CODE_GURMUKHI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GURMUKHI_name); + + zval const_BLOCK_CODE_GUJARATI_value; + ZVAL_LONG(&const_BLOCK_CODE_GUJARATI_value, UBLOCK_GUJARATI); + zend_string *const_BLOCK_CODE_GUJARATI_name = zend_string_init_interned("BLOCK_CODE_GUJARATI", sizeof("BLOCK_CODE_GUJARATI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GUJARATI_name, &const_BLOCK_CODE_GUJARATI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GUJARATI_name); + + zval const_BLOCK_CODE_ORIYA_value; + ZVAL_LONG(&const_BLOCK_CODE_ORIYA_value, UBLOCK_ORIYA); + zend_string *const_BLOCK_CODE_ORIYA_name = zend_string_init_interned("BLOCK_CODE_ORIYA", sizeof("BLOCK_CODE_ORIYA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ORIYA_name, &const_BLOCK_CODE_ORIYA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ORIYA_name); + + zval const_BLOCK_CODE_TAMIL_value; + ZVAL_LONG(&const_BLOCK_CODE_TAMIL_value, UBLOCK_TAMIL); + zend_string *const_BLOCK_CODE_TAMIL_name = zend_string_init_interned("BLOCK_CODE_TAMIL", sizeof("BLOCK_CODE_TAMIL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAMIL_name, &const_BLOCK_CODE_TAMIL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAMIL_name); + + zval const_BLOCK_CODE_TELUGU_value; + ZVAL_LONG(&const_BLOCK_CODE_TELUGU_value, UBLOCK_TELUGU); + zend_string *const_BLOCK_CODE_TELUGU_name = zend_string_init_interned("BLOCK_CODE_TELUGU", sizeof("BLOCK_CODE_TELUGU") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TELUGU_name, &const_BLOCK_CODE_TELUGU_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TELUGU_name); + + zval const_BLOCK_CODE_KANNADA_value; + ZVAL_LONG(&const_BLOCK_CODE_KANNADA_value, UBLOCK_KANNADA); + zend_string *const_BLOCK_CODE_KANNADA_name = zend_string_init_interned("BLOCK_CODE_KANNADA", sizeof("BLOCK_CODE_KANNADA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KANNADA_name, &const_BLOCK_CODE_KANNADA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KANNADA_name); + + zval const_BLOCK_CODE_MALAYALAM_value; + ZVAL_LONG(&const_BLOCK_CODE_MALAYALAM_value, UBLOCK_MALAYALAM); + zend_string *const_BLOCK_CODE_MALAYALAM_name = zend_string_init_interned("BLOCK_CODE_MALAYALAM", sizeof("BLOCK_CODE_MALAYALAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MALAYALAM_name, &const_BLOCK_CODE_MALAYALAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MALAYALAM_name); + + zval const_BLOCK_CODE_SINHALA_value; + ZVAL_LONG(&const_BLOCK_CODE_SINHALA_value, UBLOCK_SINHALA); + zend_string *const_BLOCK_CODE_SINHALA_name = zend_string_init_interned("BLOCK_CODE_SINHALA", sizeof("BLOCK_CODE_SINHALA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SINHALA_name, &const_BLOCK_CODE_SINHALA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SINHALA_name); + + zval const_BLOCK_CODE_THAI_value; + ZVAL_LONG(&const_BLOCK_CODE_THAI_value, UBLOCK_THAI); + zend_string *const_BLOCK_CODE_THAI_name = zend_string_init_interned("BLOCK_CODE_THAI", sizeof("BLOCK_CODE_THAI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_THAI_name, &const_BLOCK_CODE_THAI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_THAI_name); + + zval const_BLOCK_CODE_LAO_value; + ZVAL_LONG(&const_BLOCK_CODE_LAO_value, UBLOCK_LAO); + zend_string *const_BLOCK_CODE_LAO_name = zend_string_init_interned("BLOCK_CODE_LAO", sizeof("BLOCK_CODE_LAO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LAO_name, &const_BLOCK_CODE_LAO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LAO_name); + + zval const_BLOCK_CODE_TIBETAN_value; + ZVAL_LONG(&const_BLOCK_CODE_TIBETAN_value, UBLOCK_TIBETAN); + zend_string *const_BLOCK_CODE_TIBETAN_name = zend_string_init_interned("BLOCK_CODE_TIBETAN", sizeof("BLOCK_CODE_TIBETAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TIBETAN_name, &const_BLOCK_CODE_TIBETAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TIBETAN_name); + + zval const_BLOCK_CODE_MYANMAR_value; + ZVAL_LONG(&const_BLOCK_CODE_MYANMAR_value, UBLOCK_MYANMAR); + zend_string *const_BLOCK_CODE_MYANMAR_name = zend_string_init_interned("BLOCK_CODE_MYANMAR", sizeof("BLOCK_CODE_MYANMAR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MYANMAR_name, &const_BLOCK_CODE_MYANMAR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MYANMAR_name); + + zval const_BLOCK_CODE_GEORGIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_GEORGIAN_value, UBLOCK_GEORGIAN); + zend_string *const_BLOCK_CODE_GEORGIAN_name = zend_string_init_interned("BLOCK_CODE_GEORGIAN", sizeof("BLOCK_CODE_GEORGIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GEORGIAN_name, &const_BLOCK_CODE_GEORGIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GEORGIAN_name); + + zval const_BLOCK_CODE_HANGUL_JAMO_value; + ZVAL_LONG(&const_BLOCK_CODE_HANGUL_JAMO_value, UBLOCK_HANGUL_JAMO); + zend_string *const_BLOCK_CODE_HANGUL_JAMO_name = zend_string_init_interned("BLOCK_CODE_HANGUL_JAMO", sizeof("BLOCK_CODE_HANGUL_JAMO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HANGUL_JAMO_name, &const_BLOCK_CODE_HANGUL_JAMO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HANGUL_JAMO_name); + + zval const_BLOCK_CODE_ETHIOPIC_value; + ZVAL_LONG(&const_BLOCK_CODE_ETHIOPIC_value, UBLOCK_ETHIOPIC); + zend_string *const_BLOCK_CODE_ETHIOPIC_name = zend_string_init_interned("BLOCK_CODE_ETHIOPIC", sizeof("BLOCK_CODE_ETHIOPIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ETHIOPIC_name, &const_BLOCK_CODE_ETHIOPIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ETHIOPIC_name); + + zval const_BLOCK_CODE_CHEROKEE_value; + ZVAL_LONG(&const_BLOCK_CODE_CHEROKEE_value, UBLOCK_CHEROKEE); + zend_string *const_BLOCK_CODE_CHEROKEE_name = zend_string_init_interned("BLOCK_CODE_CHEROKEE", sizeof("BLOCK_CODE_CHEROKEE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CHEROKEE_name, &const_BLOCK_CODE_CHEROKEE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CHEROKEE_name); + + zval const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_value; + ZVAL_LONG(&const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_value, UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS); + zend_string *const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_name = zend_string_init_interned("BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS", sizeof("BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_name, &const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_name); + + zval const_BLOCK_CODE_OGHAM_value; + ZVAL_LONG(&const_BLOCK_CODE_OGHAM_value, UBLOCK_OGHAM); + zend_string *const_BLOCK_CODE_OGHAM_name = zend_string_init_interned("BLOCK_CODE_OGHAM", sizeof("BLOCK_CODE_OGHAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OGHAM_name, &const_BLOCK_CODE_OGHAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OGHAM_name); + + zval const_BLOCK_CODE_RUNIC_value; + ZVAL_LONG(&const_BLOCK_CODE_RUNIC_value, UBLOCK_RUNIC); + zend_string *const_BLOCK_CODE_RUNIC_name = zend_string_init_interned("BLOCK_CODE_RUNIC", sizeof("BLOCK_CODE_RUNIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_RUNIC_name, &const_BLOCK_CODE_RUNIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_RUNIC_name); + + zval const_BLOCK_CODE_KHMER_value; + ZVAL_LONG(&const_BLOCK_CODE_KHMER_value, UBLOCK_KHMER); + zend_string *const_BLOCK_CODE_KHMER_name = zend_string_init_interned("BLOCK_CODE_KHMER", sizeof("BLOCK_CODE_KHMER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KHMER_name, &const_BLOCK_CODE_KHMER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KHMER_name); + + zval const_BLOCK_CODE_MONGOLIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_MONGOLIAN_value, UBLOCK_MONGOLIAN); + zend_string *const_BLOCK_CODE_MONGOLIAN_name = zend_string_init_interned("BLOCK_CODE_MONGOLIAN", sizeof("BLOCK_CODE_MONGOLIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MONGOLIAN_name, &const_BLOCK_CODE_MONGOLIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MONGOLIAN_name); + + zval const_BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL_value; + ZVAL_LONG(&const_BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL_value, UBLOCK_LATIN_EXTENDED_ADDITIONAL); + zend_string *const_BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL_name = zend_string_init_interned("BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL", sizeof("BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL_name, &const_BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LATIN_EXTENDED_ADDITIONAL_name); + + zval const_BLOCK_CODE_GREEK_EXTENDED_value; + ZVAL_LONG(&const_BLOCK_CODE_GREEK_EXTENDED_value, UBLOCK_GREEK_EXTENDED); + zend_string *const_BLOCK_CODE_GREEK_EXTENDED_name = zend_string_init_interned("BLOCK_CODE_GREEK_EXTENDED", sizeof("BLOCK_CODE_GREEK_EXTENDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GREEK_EXTENDED_name, &const_BLOCK_CODE_GREEK_EXTENDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GREEK_EXTENDED_name); + + zval const_BLOCK_CODE_GENERAL_PUNCTUATION_value; + ZVAL_LONG(&const_BLOCK_CODE_GENERAL_PUNCTUATION_value, UBLOCK_GENERAL_PUNCTUATION); + zend_string *const_BLOCK_CODE_GENERAL_PUNCTUATION_name = zend_string_init_interned("BLOCK_CODE_GENERAL_PUNCTUATION", sizeof("BLOCK_CODE_GENERAL_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GENERAL_PUNCTUATION_name, &const_BLOCK_CODE_GENERAL_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GENERAL_PUNCTUATION_name); + + zval const_BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS_value, UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS); + zend_string *const_BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS_name = zend_string_init_interned("BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS", sizeof("BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS_name, &const_BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPERSCRIPTS_AND_SUBSCRIPTS_name); + + zval const_BLOCK_CODE_CURRENCY_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_CURRENCY_SYMBOLS_value, UBLOCK_CURRENCY_SYMBOLS); + zend_string *const_BLOCK_CODE_CURRENCY_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_CURRENCY_SYMBOLS", sizeof("BLOCK_CODE_CURRENCY_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CURRENCY_SYMBOLS_name, &const_BLOCK_CODE_CURRENCY_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CURRENCY_SYMBOLS_name); + + zval const_BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS_value, UBLOCK_COMBINING_MARKS_FOR_SYMBOLS); + zend_string *const_BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS", sizeof("BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS_name, &const_BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COMBINING_MARKS_FOR_SYMBOLS_name); + + zval const_BLOCK_CODE_LETTERLIKE_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_LETTERLIKE_SYMBOLS_value, UBLOCK_LETTERLIKE_SYMBOLS); + zend_string *const_BLOCK_CODE_LETTERLIKE_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_LETTERLIKE_SYMBOLS", sizeof("BLOCK_CODE_LETTERLIKE_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LETTERLIKE_SYMBOLS_name, &const_BLOCK_CODE_LETTERLIKE_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LETTERLIKE_SYMBOLS_name); + + zval const_BLOCK_CODE_NUMBER_FORMS_value; + ZVAL_LONG(&const_BLOCK_CODE_NUMBER_FORMS_value, UBLOCK_NUMBER_FORMS); + zend_string *const_BLOCK_CODE_NUMBER_FORMS_name = zend_string_init_interned("BLOCK_CODE_NUMBER_FORMS", sizeof("BLOCK_CODE_NUMBER_FORMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_NUMBER_FORMS_name, &const_BLOCK_CODE_NUMBER_FORMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_NUMBER_FORMS_name); + + zval const_BLOCK_CODE_ARROWS_value; + ZVAL_LONG(&const_BLOCK_CODE_ARROWS_value, UBLOCK_ARROWS); + zend_string *const_BLOCK_CODE_ARROWS_name = zend_string_init_interned("BLOCK_CODE_ARROWS", sizeof("BLOCK_CODE_ARROWS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARROWS_name, &const_BLOCK_CODE_ARROWS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARROWS_name); + + zval const_BLOCK_CODE_MATHEMATICAL_OPERATORS_value; + ZVAL_LONG(&const_BLOCK_CODE_MATHEMATICAL_OPERATORS_value, UBLOCK_MATHEMATICAL_OPERATORS); + zend_string *const_BLOCK_CODE_MATHEMATICAL_OPERATORS_name = zend_string_init_interned("BLOCK_CODE_MATHEMATICAL_OPERATORS", sizeof("BLOCK_CODE_MATHEMATICAL_OPERATORS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MATHEMATICAL_OPERATORS_name, &const_BLOCK_CODE_MATHEMATICAL_OPERATORS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MATHEMATICAL_OPERATORS_name); + + zval const_BLOCK_CODE_MISCELLANEOUS_TECHNICAL_value; + ZVAL_LONG(&const_BLOCK_CODE_MISCELLANEOUS_TECHNICAL_value, UBLOCK_MISCELLANEOUS_TECHNICAL); + zend_string *const_BLOCK_CODE_MISCELLANEOUS_TECHNICAL_name = zend_string_init_interned("BLOCK_CODE_MISCELLANEOUS_TECHNICAL", sizeof("BLOCK_CODE_MISCELLANEOUS_TECHNICAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MISCELLANEOUS_TECHNICAL_name, &const_BLOCK_CODE_MISCELLANEOUS_TECHNICAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MISCELLANEOUS_TECHNICAL_name); + + zval const_BLOCK_CODE_CONTROL_PICTURES_value; + ZVAL_LONG(&const_BLOCK_CODE_CONTROL_PICTURES_value, UBLOCK_CONTROL_PICTURES); + zend_string *const_BLOCK_CODE_CONTROL_PICTURES_name = zend_string_init_interned("BLOCK_CODE_CONTROL_PICTURES", sizeof("BLOCK_CODE_CONTROL_PICTURES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CONTROL_PICTURES_name, &const_BLOCK_CODE_CONTROL_PICTURES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CONTROL_PICTURES_name); + + zval const_BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION_value; + ZVAL_LONG(&const_BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION_value, UBLOCK_OPTICAL_CHARACTER_RECOGNITION); + zend_string *const_BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION_name = zend_string_init_interned("BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION", sizeof("BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION_name, &const_BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OPTICAL_CHARACTER_RECOGNITION_name); + + zval const_BLOCK_CODE_ENCLOSED_ALPHANUMERICS_value; + ZVAL_LONG(&const_BLOCK_CODE_ENCLOSED_ALPHANUMERICS_value, UBLOCK_ENCLOSED_ALPHANUMERICS); + zend_string *const_BLOCK_CODE_ENCLOSED_ALPHANUMERICS_name = zend_string_init_interned("BLOCK_CODE_ENCLOSED_ALPHANUMERICS", sizeof("BLOCK_CODE_ENCLOSED_ALPHANUMERICS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ENCLOSED_ALPHANUMERICS_name, &const_BLOCK_CODE_ENCLOSED_ALPHANUMERICS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ENCLOSED_ALPHANUMERICS_name); + + zval const_BLOCK_CODE_BOX_DRAWING_value; + ZVAL_LONG(&const_BLOCK_CODE_BOX_DRAWING_value, UBLOCK_BOX_DRAWING); + zend_string *const_BLOCK_CODE_BOX_DRAWING_name = zend_string_init_interned("BLOCK_CODE_BOX_DRAWING", sizeof("BLOCK_CODE_BOX_DRAWING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BOX_DRAWING_name, &const_BLOCK_CODE_BOX_DRAWING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BOX_DRAWING_name); + + zval const_BLOCK_CODE_BLOCK_ELEMENTS_value; + ZVAL_LONG(&const_BLOCK_CODE_BLOCK_ELEMENTS_value, UBLOCK_BLOCK_ELEMENTS); + zend_string *const_BLOCK_CODE_BLOCK_ELEMENTS_name = zend_string_init_interned("BLOCK_CODE_BLOCK_ELEMENTS", sizeof("BLOCK_CODE_BLOCK_ELEMENTS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BLOCK_ELEMENTS_name, &const_BLOCK_CODE_BLOCK_ELEMENTS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BLOCK_ELEMENTS_name); + + zval const_BLOCK_CODE_GEOMETRIC_SHAPES_value; + ZVAL_LONG(&const_BLOCK_CODE_GEOMETRIC_SHAPES_value, UBLOCK_GEOMETRIC_SHAPES); + zend_string *const_BLOCK_CODE_GEOMETRIC_SHAPES_name = zend_string_init_interned("BLOCK_CODE_GEOMETRIC_SHAPES", sizeof("BLOCK_CODE_GEOMETRIC_SHAPES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GEOMETRIC_SHAPES_name, &const_BLOCK_CODE_GEOMETRIC_SHAPES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GEOMETRIC_SHAPES_name); + + zval const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_value, UBLOCK_MISCELLANEOUS_SYMBOLS); + zend_string *const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_MISCELLANEOUS_SYMBOLS", sizeof("BLOCK_CODE_MISCELLANEOUS_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_name, &const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_name); + + zval const_BLOCK_CODE_DINGBATS_value; + ZVAL_LONG(&const_BLOCK_CODE_DINGBATS_value, UBLOCK_DINGBATS); + zend_string *const_BLOCK_CODE_DINGBATS_name = zend_string_init_interned("BLOCK_CODE_DINGBATS", sizeof("BLOCK_CODE_DINGBATS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_DINGBATS_name, &const_BLOCK_CODE_DINGBATS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_DINGBATS_name); + + zval const_BLOCK_CODE_BRAILLE_PATTERNS_value; + ZVAL_LONG(&const_BLOCK_CODE_BRAILLE_PATTERNS_value, UBLOCK_BRAILLE_PATTERNS); + zend_string *const_BLOCK_CODE_BRAILLE_PATTERNS_name = zend_string_init_interned("BLOCK_CODE_BRAILLE_PATTERNS", sizeof("BLOCK_CODE_BRAILLE_PATTERNS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BRAILLE_PATTERNS_name, &const_BLOCK_CODE_BRAILLE_PATTERNS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BRAILLE_PATTERNS_name); + + zval const_BLOCK_CODE_CJK_RADICALS_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_RADICALS_SUPPLEMENT_value, UBLOCK_CJK_RADICALS_SUPPLEMENT); + zend_string *const_BLOCK_CODE_CJK_RADICALS_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_CJK_RADICALS_SUPPLEMENT", sizeof("BLOCK_CODE_CJK_RADICALS_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_RADICALS_SUPPLEMENT_name, &const_BLOCK_CODE_CJK_RADICALS_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_RADICALS_SUPPLEMENT_name); + + zval const_BLOCK_CODE_KANGXI_RADICALS_value; + ZVAL_LONG(&const_BLOCK_CODE_KANGXI_RADICALS_value, UBLOCK_KANGXI_RADICALS); + zend_string *const_BLOCK_CODE_KANGXI_RADICALS_name = zend_string_init_interned("BLOCK_CODE_KANGXI_RADICALS", sizeof("BLOCK_CODE_KANGXI_RADICALS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KANGXI_RADICALS_name, &const_BLOCK_CODE_KANGXI_RADICALS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KANGXI_RADICALS_name); + + zval const_BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS_value; + ZVAL_LONG(&const_BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS_value, UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS); + zend_string *const_BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS_name = zend_string_init_interned("BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS", sizeof("BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS_name, &const_BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_IDEOGRAPHIC_DESCRIPTION_CHARACTERS_name); + + zval const_BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION_value, UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION); + zend_string *const_BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION_name = zend_string_init_interned("BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION", sizeof("BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION_name, &const_BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_SYMBOLS_AND_PUNCTUATION_name); + + zval const_BLOCK_CODE_HIRAGANA_value; + ZVAL_LONG(&const_BLOCK_CODE_HIRAGANA_value, UBLOCK_HIRAGANA); + zend_string *const_BLOCK_CODE_HIRAGANA_name = zend_string_init_interned("BLOCK_CODE_HIRAGANA", sizeof("BLOCK_CODE_HIRAGANA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HIRAGANA_name, &const_BLOCK_CODE_HIRAGANA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HIRAGANA_name); + + zval const_BLOCK_CODE_KATAKANA_value; + ZVAL_LONG(&const_BLOCK_CODE_KATAKANA_value, UBLOCK_KATAKANA); + zend_string *const_BLOCK_CODE_KATAKANA_name = zend_string_init_interned("BLOCK_CODE_KATAKANA", sizeof("BLOCK_CODE_KATAKANA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KATAKANA_name, &const_BLOCK_CODE_KATAKANA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KATAKANA_name); + + zval const_BLOCK_CODE_BOPOMOFO_value; + ZVAL_LONG(&const_BLOCK_CODE_BOPOMOFO_value, UBLOCK_BOPOMOFO); + zend_string *const_BLOCK_CODE_BOPOMOFO_name = zend_string_init_interned("BLOCK_CODE_BOPOMOFO", sizeof("BLOCK_CODE_BOPOMOFO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BOPOMOFO_name, &const_BLOCK_CODE_BOPOMOFO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BOPOMOFO_name); + + zval const_BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO_value; + ZVAL_LONG(&const_BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO_value, UBLOCK_HANGUL_COMPATIBILITY_JAMO); + zend_string *const_BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO_name = zend_string_init_interned("BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO", sizeof("BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO_name, &const_BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HANGUL_COMPATIBILITY_JAMO_name); + + zval const_BLOCK_CODE_KANBUN_value; + ZVAL_LONG(&const_BLOCK_CODE_KANBUN_value, UBLOCK_KANBUN); + zend_string *const_BLOCK_CODE_KANBUN_name = zend_string_init_interned("BLOCK_CODE_KANBUN", sizeof("BLOCK_CODE_KANBUN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KANBUN_name, &const_BLOCK_CODE_KANBUN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KANBUN_name); + + zval const_BLOCK_CODE_BOPOMOFO_EXTENDED_value; + ZVAL_LONG(&const_BLOCK_CODE_BOPOMOFO_EXTENDED_value, UBLOCK_BOPOMOFO_EXTENDED); + zend_string *const_BLOCK_CODE_BOPOMOFO_EXTENDED_name = zend_string_init_interned("BLOCK_CODE_BOPOMOFO_EXTENDED", sizeof("BLOCK_CODE_BOPOMOFO_EXTENDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BOPOMOFO_EXTENDED_name, &const_BLOCK_CODE_BOPOMOFO_EXTENDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BOPOMOFO_EXTENDED_name); + + zval const_BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS_value; + ZVAL_LONG(&const_BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS_value, UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS); + zend_string *const_BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS_name = zend_string_init_interned("BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS", sizeof("BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS_name, &const_BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ENCLOSED_CJK_LETTERS_AND_MONTHS_name); + + zval const_BLOCK_CODE_CJK_COMPATIBILITY_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_COMPATIBILITY_value, UBLOCK_CJK_COMPATIBILITY); + zend_string *const_BLOCK_CODE_CJK_COMPATIBILITY_name = zend_string_init_interned("BLOCK_CODE_CJK_COMPATIBILITY", sizeof("BLOCK_CODE_CJK_COMPATIBILITY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_COMPATIBILITY_name, &const_BLOCK_CODE_CJK_COMPATIBILITY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_COMPATIBILITY_name); + + zval const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_value, UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A); + zend_string *const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_name = zend_string_init_interned("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A", sizeof("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_name, &const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A_name); + + zval const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_value, UBLOCK_CJK_UNIFIED_IDEOGRAPHS); + zend_string *const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_name = zend_string_init_interned("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS", sizeof("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_name, &const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_name); + + zval const_BLOCK_CODE_YI_SYLLABLES_value; + ZVAL_LONG(&const_BLOCK_CODE_YI_SYLLABLES_value, UBLOCK_YI_SYLLABLES); + zend_string *const_BLOCK_CODE_YI_SYLLABLES_name = zend_string_init_interned("BLOCK_CODE_YI_SYLLABLES", sizeof("BLOCK_CODE_YI_SYLLABLES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_YI_SYLLABLES_name, &const_BLOCK_CODE_YI_SYLLABLES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_YI_SYLLABLES_name); + + zval const_BLOCK_CODE_YI_RADICALS_value; + ZVAL_LONG(&const_BLOCK_CODE_YI_RADICALS_value, UBLOCK_YI_RADICALS); + zend_string *const_BLOCK_CODE_YI_RADICALS_name = zend_string_init_interned("BLOCK_CODE_YI_RADICALS", sizeof("BLOCK_CODE_YI_RADICALS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_YI_RADICALS_name, &const_BLOCK_CODE_YI_RADICALS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_YI_RADICALS_name); + + zval const_BLOCK_CODE_HANGUL_SYLLABLES_value; + ZVAL_LONG(&const_BLOCK_CODE_HANGUL_SYLLABLES_value, UBLOCK_HANGUL_SYLLABLES); + zend_string *const_BLOCK_CODE_HANGUL_SYLLABLES_name = zend_string_init_interned("BLOCK_CODE_HANGUL_SYLLABLES", sizeof("BLOCK_CODE_HANGUL_SYLLABLES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HANGUL_SYLLABLES_name, &const_BLOCK_CODE_HANGUL_SYLLABLES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HANGUL_SYLLABLES_name); + + zval const_BLOCK_CODE_HIGH_SURROGATES_value; + ZVAL_LONG(&const_BLOCK_CODE_HIGH_SURROGATES_value, UBLOCK_HIGH_SURROGATES); + zend_string *const_BLOCK_CODE_HIGH_SURROGATES_name = zend_string_init_interned("BLOCK_CODE_HIGH_SURROGATES", sizeof("BLOCK_CODE_HIGH_SURROGATES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HIGH_SURROGATES_name, &const_BLOCK_CODE_HIGH_SURROGATES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HIGH_SURROGATES_name); + + zval const_BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES_value; + ZVAL_LONG(&const_BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES_value, UBLOCK_HIGH_PRIVATE_USE_SURROGATES); + zend_string *const_BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES_name = zend_string_init_interned("BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES", sizeof("BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES_name, &const_BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HIGH_PRIVATE_USE_SURROGATES_name); + + zval const_BLOCK_CODE_LOW_SURROGATES_value; + ZVAL_LONG(&const_BLOCK_CODE_LOW_SURROGATES_value, UBLOCK_LOW_SURROGATES); + zend_string *const_BLOCK_CODE_LOW_SURROGATES_name = zend_string_init_interned("BLOCK_CODE_LOW_SURROGATES", sizeof("BLOCK_CODE_LOW_SURROGATES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LOW_SURROGATES_name, &const_BLOCK_CODE_LOW_SURROGATES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LOW_SURROGATES_name); + + zval const_BLOCK_CODE_PRIVATE_USE_AREA_value; + ZVAL_LONG(&const_BLOCK_CODE_PRIVATE_USE_AREA_value, UBLOCK_PRIVATE_USE_AREA); + zend_string *const_BLOCK_CODE_PRIVATE_USE_AREA_name = zend_string_init_interned("BLOCK_CODE_PRIVATE_USE_AREA", sizeof("BLOCK_CODE_PRIVATE_USE_AREA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PRIVATE_USE_AREA_name, &const_BLOCK_CODE_PRIVATE_USE_AREA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PRIVATE_USE_AREA_name); + + zval const_BLOCK_CODE_PRIVATE_USE_value; + ZVAL_LONG(&const_BLOCK_CODE_PRIVATE_USE_value, UBLOCK_PRIVATE_USE); + zend_string *const_BLOCK_CODE_PRIVATE_USE_name = zend_string_init_interned("BLOCK_CODE_PRIVATE_USE", sizeof("BLOCK_CODE_PRIVATE_USE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PRIVATE_USE_name, &const_BLOCK_CODE_PRIVATE_USE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PRIVATE_USE_name); + + zval const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_value, UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS); + zend_string *const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_name = zend_string_init_interned("BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS", sizeof("BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_name, &const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_name); + + zval const_BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS_value; + ZVAL_LONG(&const_BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS_value, UBLOCK_ALPHABETIC_PRESENTATION_FORMS); + zend_string *const_BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS_name = zend_string_init_interned("BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS", sizeof("BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS_name, &const_BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ALPHABETIC_PRESENTATION_FORMS_name); + + zval const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A_value; + ZVAL_LONG(&const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A_value, UBLOCK_ARABIC_PRESENTATION_FORMS_A); + zend_string *const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A_name = zend_string_init_interned("BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A", sizeof("BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A_name, &const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_A_name); + + zval const_BLOCK_CODE_COMBINING_HALF_MARKS_value; + ZVAL_LONG(&const_BLOCK_CODE_COMBINING_HALF_MARKS_value, UBLOCK_COMBINING_HALF_MARKS); + zend_string *const_BLOCK_CODE_COMBINING_HALF_MARKS_name = zend_string_init_interned("BLOCK_CODE_COMBINING_HALF_MARKS", sizeof("BLOCK_CODE_COMBINING_HALF_MARKS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COMBINING_HALF_MARKS_name, &const_BLOCK_CODE_COMBINING_HALF_MARKS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COMBINING_HALF_MARKS_name); + + zval const_BLOCK_CODE_CJK_COMPATIBILITY_FORMS_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_COMPATIBILITY_FORMS_value, UBLOCK_CJK_COMPATIBILITY_FORMS); + zend_string *const_BLOCK_CODE_CJK_COMPATIBILITY_FORMS_name = zend_string_init_interned("BLOCK_CODE_CJK_COMPATIBILITY_FORMS", sizeof("BLOCK_CODE_CJK_COMPATIBILITY_FORMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_COMPATIBILITY_FORMS_name, &const_BLOCK_CODE_CJK_COMPATIBILITY_FORMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_COMPATIBILITY_FORMS_name); + + zval const_BLOCK_CODE_SMALL_FORM_VARIANTS_value; + ZVAL_LONG(&const_BLOCK_CODE_SMALL_FORM_VARIANTS_value, UBLOCK_SMALL_FORM_VARIANTS); + zend_string *const_BLOCK_CODE_SMALL_FORM_VARIANTS_name = zend_string_init_interned("BLOCK_CODE_SMALL_FORM_VARIANTS", sizeof("BLOCK_CODE_SMALL_FORM_VARIANTS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SMALL_FORM_VARIANTS_name, &const_BLOCK_CODE_SMALL_FORM_VARIANTS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SMALL_FORM_VARIANTS_name); + + zval const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B_value; + ZVAL_LONG(&const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B_value, UBLOCK_ARABIC_PRESENTATION_FORMS_B); + zend_string *const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B_name = zend_string_init_interned("BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B", sizeof("BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B_name, &const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARABIC_PRESENTATION_FORMS_B_name); + + zval const_BLOCK_CODE_SPECIALS_value; + ZVAL_LONG(&const_BLOCK_CODE_SPECIALS_value, UBLOCK_SPECIALS); + zend_string *const_BLOCK_CODE_SPECIALS_name = zend_string_init_interned("BLOCK_CODE_SPECIALS", sizeof("BLOCK_CODE_SPECIALS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SPECIALS_name, &const_BLOCK_CODE_SPECIALS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SPECIALS_name); + + zval const_BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS_value; + ZVAL_LONG(&const_BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS_value, UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS); + zend_string *const_BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS_name = zend_string_init_interned("BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS", sizeof("BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS_name, &const_BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HALFWIDTH_AND_FULLWIDTH_FORMS_name); + + zval const_BLOCK_CODE_OLD_ITALIC_value; + ZVAL_LONG(&const_BLOCK_CODE_OLD_ITALIC_value, UBLOCK_OLD_ITALIC); + zend_string *const_BLOCK_CODE_OLD_ITALIC_name = zend_string_init_interned("BLOCK_CODE_OLD_ITALIC", sizeof("BLOCK_CODE_OLD_ITALIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OLD_ITALIC_name, &const_BLOCK_CODE_OLD_ITALIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OLD_ITALIC_name); + + zval const_BLOCK_CODE_GOTHIC_value; + ZVAL_LONG(&const_BLOCK_CODE_GOTHIC_value, UBLOCK_GOTHIC); + zend_string *const_BLOCK_CODE_GOTHIC_name = zend_string_init_interned("BLOCK_CODE_GOTHIC", sizeof("BLOCK_CODE_GOTHIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GOTHIC_name, &const_BLOCK_CODE_GOTHIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GOTHIC_name); + + zval const_BLOCK_CODE_DESERET_value; + ZVAL_LONG(&const_BLOCK_CODE_DESERET_value, UBLOCK_DESERET); + zend_string *const_BLOCK_CODE_DESERET_name = zend_string_init_interned("BLOCK_CODE_DESERET", sizeof("BLOCK_CODE_DESERET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_DESERET_name, &const_BLOCK_CODE_DESERET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_DESERET_name); + + zval const_BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS_value, UBLOCK_BYZANTINE_MUSICAL_SYMBOLS); + zend_string *const_BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS", sizeof("BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS_name, &const_BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BYZANTINE_MUSICAL_SYMBOLS_name); + + zval const_BLOCK_CODE_MUSICAL_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_MUSICAL_SYMBOLS_value, UBLOCK_MUSICAL_SYMBOLS); + zend_string *const_BLOCK_CODE_MUSICAL_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_MUSICAL_SYMBOLS", sizeof("BLOCK_CODE_MUSICAL_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MUSICAL_SYMBOLS_name, &const_BLOCK_CODE_MUSICAL_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MUSICAL_SYMBOLS_name); + + zval const_BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS_value, UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS); + zend_string *const_BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS", sizeof("BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS_name, &const_BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MATHEMATICAL_ALPHANUMERIC_SYMBOLS_name); + + zval const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_value, UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B); + zend_string *const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_name = zend_string_init_interned("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B", sizeof("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_name, &const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B_name); + + zval const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_value, UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT); + zend_string *const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT", sizeof("BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_name, &const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT_name); + + zval const_BLOCK_CODE_TAGS_value; + ZVAL_LONG(&const_BLOCK_CODE_TAGS_value, UBLOCK_TAGS); + zend_string *const_BLOCK_CODE_TAGS_name = zend_string_init_interned("BLOCK_CODE_TAGS", sizeof("BLOCK_CODE_TAGS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAGS_name, &const_BLOCK_CODE_TAGS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAGS_name); + + zval const_BLOCK_CODE_CYRILLIC_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_CYRILLIC_SUPPLEMENT_value, UBLOCK_CYRILLIC_SUPPLEMENT); + zend_string *const_BLOCK_CODE_CYRILLIC_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_CYRILLIC_SUPPLEMENT", sizeof("BLOCK_CODE_CYRILLIC_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CYRILLIC_SUPPLEMENT_name, &const_BLOCK_CODE_CYRILLIC_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CYRILLIC_SUPPLEMENT_name); + + zval const_BLOCK_CODE_CYRILLIC_SUPPLEMENTARY_value; + ZVAL_LONG(&const_BLOCK_CODE_CYRILLIC_SUPPLEMENTARY_value, UBLOCK_CYRILLIC_SUPPLEMENTARY); + zend_string *const_BLOCK_CODE_CYRILLIC_SUPPLEMENTARY_name = zend_string_init_interned("BLOCK_CODE_CYRILLIC_SUPPLEMENTARY", sizeof("BLOCK_CODE_CYRILLIC_SUPPLEMENTARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CYRILLIC_SUPPLEMENTARY_name, &const_BLOCK_CODE_CYRILLIC_SUPPLEMENTARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CYRILLIC_SUPPLEMENTARY_name); + + zval const_BLOCK_CODE_TAGALOG_value; + ZVAL_LONG(&const_BLOCK_CODE_TAGALOG_value, UBLOCK_TAGALOG); + zend_string *const_BLOCK_CODE_TAGALOG_name = zend_string_init_interned("BLOCK_CODE_TAGALOG", sizeof("BLOCK_CODE_TAGALOG") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAGALOG_name, &const_BLOCK_CODE_TAGALOG_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAGALOG_name); + + zval const_BLOCK_CODE_HANUNOO_value; + ZVAL_LONG(&const_BLOCK_CODE_HANUNOO_value, UBLOCK_HANUNOO); + zend_string *const_BLOCK_CODE_HANUNOO_name = zend_string_init_interned("BLOCK_CODE_HANUNOO", sizeof("BLOCK_CODE_HANUNOO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HANUNOO_name, &const_BLOCK_CODE_HANUNOO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HANUNOO_name); + + zval const_BLOCK_CODE_BUHID_value; + ZVAL_LONG(&const_BLOCK_CODE_BUHID_value, UBLOCK_BUHID); + zend_string *const_BLOCK_CODE_BUHID_name = zend_string_init_interned("BLOCK_CODE_BUHID", sizeof("BLOCK_CODE_BUHID") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BUHID_name, &const_BLOCK_CODE_BUHID_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BUHID_name); + + zval const_BLOCK_CODE_TAGBANWA_value; + ZVAL_LONG(&const_BLOCK_CODE_TAGBANWA_value, UBLOCK_TAGBANWA); + zend_string *const_BLOCK_CODE_TAGBANWA_name = zend_string_init_interned("BLOCK_CODE_TAGBANWA", sizeof("BLOCK_CODE_TAGBANWA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAGBANWA_name, &const_BLOCK_CODE_TAGBANWA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAGBANWA_name); + + zval const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_value; + ZVAL_LONG(&const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_value, UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A); + zend_string *const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_name = zend_string_init_interned("BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A", sizeof("BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_name, &const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A_name); + + zval const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_A_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_A_value, UBLOCK_SUPPLEMENTAL_ARROWS_A); + zend_string *const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_A_name = zend_string_init_interned("BLOCK_CODE_SUPPLEMENTAL_ARROWS_A", sizeof("BLOCK_CODE_SUPPLEMENTAL_ARROWS_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_A_name, &const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_A_name); + + zval const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_B_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_B_value, UBLOCK_SUPPLEMENTAL_ARROWS_B); + zend_string *const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_B_name = zend_string_init_interned("BLOCK_CODE_SUPPLEMENTAL_ARROWS_B", sizeof("BLOCK_CODE_SUPPLEMENTAL_ARROWS_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_B_name, &const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_B_name); + + zval const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_value; + ZVAL_LONG(&const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_value, UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B); + zend_string *const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_name = zend_string_init_interned("BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B", sizeof("BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_name, &const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B_name); + + zval const_BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS_value, UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS); + zend_string *const_BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS_name = zend_string_init_interned("BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS", sizeof("BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS_name, &const_BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPPLEMENTAL_MATHEMATICAL_OPERATORS_name); + + zval const_BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS_value; + ZVAL_LONG(&const_BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS_value, UBLOCK_KATAKANA_PHONETIC_EXTENSIONS); + zend_string *const_BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS_name = zend_string_init_interned("BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS", sizeof("BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS_name, &const_BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KATAKANA_PHONETIC_EXTENSIONS_name); + + zval const_BLOCK_CODE_VARIATION_SELECTORS_value; + ZVAL_LONG(&const_BLOCK_CODE_VARIATION_SELECTORS_value, UBLOCK_VARIATION_SELECTORS); + zend_string *const_BLOCK_CODE_VARIATION_SELECTORS_name = zend_string_init_interned("BLOCK_CODE_VARIATION_SELECTORS", sizeof("BLOCK_CODE_VARIATION_SELECTORS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_VARIATION_SELECTORS_name, &const_BLOCK_CODE_VARIATION_SELECTORS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_VARIATION_SELECTORS_name); + + zval const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A_value, UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A); + zend_string *const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A_name = zend_string_init_interned("BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A", sizeof("BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A_name, &const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_A_name); + + zval const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B_value, UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B); + zend_string *const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B_name = zend_string_init_interned("BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B", sizeof("BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B_name, &const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPPLEMENTARY_PRIVATE_USE_AREA_B_name); + + zval const_BLOCK_CODE_LIMBU_value; + ZVAL_LONG(&const_BLOCK_CODE_LIMBU_value, UBLOCK_LIMBU); + zend_string *const_BLOCK_CODE_LIMBU_name = zend_string_init_interned("BLOCK_CODE_LIMBU", sizeof("BLOCK_CODE_LIMBU") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LIMBU_name, &const_BLOCK_CODE_LIMBU_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LIMBU_name); + + zval const_BLOCK_CODE_TAI_LE_value; + ZVAL_LONG(&const_BLOCK_CODE_TAI_LE_value, UBLOCK_TAI_LE); + zend_string *const_BLOCK_CODE_TAI_LE_name = zend_string_init_interned("BLOCK_CODE_TAI_LE", sizeof("BLOCK_CODE_TAI_LE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAI_LE_name, &const_BLOCK_CODE_TAI_LE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAI_LE_name); + + zval const_BLOCK_CODE_KHMER_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_KHMER_SYMBOLS_value, UBLOCK_KHMER_SYMBOLS); + zend_string *const_BLOCK_CODE_KHMER_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_KHMER_SYMBOLS", sizeof("BLOCK_CODE_KHMER_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KHMER_SYMBOLS_name, &const_BLOCK_CODE_KHMER_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KHMER_SYMBOLS_name); + + zval const_BLOCK_CODE_PHONETIC_EXTENSIONS_value; + ZVAL_LONG(&const_BLOCK_CODE_PHONETIC_EXTENSIONS_value, UBLOCK_PHONETIC_EXTENSIONS); + zend_string *const_BLOCK_CODE_PHONETIC_EXTENSIONS_name = zend_string_init_interned("BLOCK_CODE_PHONETIC_EXTENSIONS", sizeof("BLOCK_CODE_PHONETIC_EXTENSIONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PHONETIC_EXTENSIONS_name, &const_BLOCK_CODE_PHONETIC_EXTENSIONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PHONETIC_EXTENSIONS_name); + + zval const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS_value; + ZVAL_LONG(&const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS_value, UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS); + zend_string *const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS_name = zend_string_init_interned("BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS", sizeof("BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS_name, &const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_ARROWS_name); + + zval const_BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS_value, UBLOCK_YIJING_HEXAGRAM_SYMBOLS); + zend_string *const_BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS", sizeof("BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS_name, &const_BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_YIJING_HEXAGRAM_SYMBOLS_name); + + zval const_BLOCK_CODE_LINEAR_B_SYLLABARY_value; + ZVAL_LONG(&const_BLOCK_CODE_LINEAR_B_SYLLABARY_value, UBLOCK_LINEAR_B_SYLLABARY); + zend_string *const_BLOCK_CODE_LINEAR_B_SYLLABARY_name = zend_string_init_interned("BLOCK_CODE_LINEAR_B_SYLLABARY", sizeof("BLOCK_CODE_LINEAR_B_SYLLABARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LINEAR_B_SYLLABARY_name, &const_BLOCK_CODE_LINEAR_B_SYLLABARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LINEAR_B_SYLLABARY_name); + + zval const_BLOCK_CODE_LINEAR_B_IDEOGRAMS_value; + ZVAL_LONG(&const_BLOCK_CODE_LINEAR_B_IDEOGRAMS_value, UBLOCK_LINEAR_B_IDEOGRAMS); + zend_string *const_BLOCK_CODE_LINEAR_B_IDEOGRAMS_name = zend_string_init_interned("BLOCK_CODE_LINEAR_B_IDEOGRAMS", sizeof("BLOCK_CODE_LINEAR_B_IDEOGRAMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LINEAR_B_IDEOGRAMS_name, &const_BLOCK_CODE_LINEAR_B_IDEOGRAMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LINEAR_B_IDEOGRAMS_name); + + zval const_BLOCK_CODE_AEGEAN_NUMBERS_value; + ZVAL_LONG(&const_BLOCK_CODE_AEGEAN_NUMBERS_value, UBLOCK_AEGEAN_NUMBERS); + zend_string *const_BLOCK_CODE_AEGEAN_NUMBERS_name = zend_string_init_interned("BLOCK_CODE_AEGEAN_NUMBERS", sizeof("BLOCK_CODE_AEGEAN_NUMBERS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_AEGEAN_NUMBERS_name, &const_BLOCK_CODE_AEGEAN_NUMBERS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_AEGEAN_NUMBERS_name); + + zval const_BLOCK_CODE_UGARITIC_value; + ZVAL_LONG(&const_BLOCK_CODE_UGARITIC_value, UBLOCK_UGARITIC); + zend_string *const_BLOCK_CODE_UGARITIC_name = zend_string_init_interned("BLOCK_CODE_UGARITIC", sizeof("BLOCK_CODE_UGARITIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_UGARITIC_name, &const_BLOCK_CODE_UGARITIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_UGARITIC_name); + + zval const_BLOCK_CODE_SHAVIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_SHAVIAN_value, UBLOCK_SHAVIAN); + zend_string *const_BLOCK_CODE_SHAVIAN_name = zend_string_init_interned("BLOCK_CODE_SHAVIAN", sizeof("BLOCK_CODE_SHAVIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SHAVIAN_name, &const_BLOCK_CODE_SHAVIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SHAVIAN_name); + + zval const_BLOCK_CODE_OSMANYA_value; + ZVAL_LONG(&const_BLOCK_CODE_OSMANYA_value, UBLOCK_OSMANYA); + zend_string *const_BLOCK_CODE_OSMANYA_name = zend_string_init_interned("BLOCK_CODE_OSMANYA", sizeof("BLOCK_CODE_OSMANYA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OSMANYA_name, &const_BLOCK_CODE_OSMANYA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OSMANYA_name); + + zval const_BLOCK_CODE_CYPRIOT_SYLLABARY_value; + ZVAL_LONG(&const_BLOCK_CODE_CYPRIOT_SYLLABARY_value, UBLOCK_CYPRIOT_SYLLABARY); + zend_string *const_BLOCK_CODE_CYPRIOT_SYLLABARY_name = zend_string_init_interned("BLOCK_CODE_CYPRIOT_SYLLABARY", sizeof("BLOCK_CODE_CYPRIOT_SYLLABARY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CYPRIOT_SYLLABARY_name, &const_BLOCK_CODE_CYPRIOT_SYLLABARY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CYPRIOT_SYLLABARY_name); + + zval const_BLOCK_CODE_TAI_XUAN_JING_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_TAI_XUAN_JING_SYMBOLS_value, UBLOCK_TAI_XUAN_JING_SYMBOLS); + zend_string *const_BLOCK_CODE_TAI_XUAN_JING_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_TAI_XUAN_JING_SYMBOLS", sizeof("BLOCK_CODE_TAI_XUAN_JING_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAI_XUAN_JING_SYMBOLS_name, &const_BLOCK_CODE_TAI_XUAN_JING_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAI_XUAN_JING_SYMBOLS_name); + + zval const_BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT_value, UBLOCK_VARIATION_SELECTORS_SUPPLEMENT); + zend_string *const_BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT", sizeof("BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT_name, &const_BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_VARIATION_SELECTORS_SUPPLEMENT_name); + + zval const_BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION_value; + ZVAL_LONG(&const_BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION_value, UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION); + zend_string *const_BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION_name = zend_string_init_interned("BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION", sizeof("BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION_name, &const_BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ANCIENT_GREEK_MUSICAL_NOTATION_name); + + zval const_BLOCK_CODE_ANCIENT_GREEK_NUMBERS_value; + ZVAL_LONG(&const_BLOCK_CODE_ANCIENT_GREEK_NUMBERS_value, UBLOCK_ANCIENT_GREEK_NUMBERS); + zend_string *const_BLOCK_CODE_ANCIENT_GREEK_NUMBERS_name = zend_string_init_interned("BLOCK_CODE_ANCIENT_GREEK_NUMBERS", sizeof("BLOCK_CODE_ANCIENT_GREEK_NUMBERS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ANCIENT_GREEK_NUMBERS_name, &const_BLOCK_CODE_ANCIENT_GREEK_NUMBERS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ANCIENT_GREEK_NUMBERS_name); + + zval const_BLOCK_CODE_ARABIC_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_ARABIC_SUPPLEMENT_value, UBLOCK_ARABIC_SUPPLEMENT); + zend_string *const_BLOCK_CODE_ARABIC_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_ARABIC_SUPPLEMENT", sizeof("BLOCK_CODE_ARABIC_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARABIC_SUPPLEMENT_name, &const_BLOCK_CODE_ARABIC_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARABIC_SUPPLEMENT_name); + + zval const_BLOCK_CODE_BUGINESE_value; + ZVAL_LONG(&const_BLOCK_CODE_BUGINESE_value, UBLOCK_BUGINESE); + zend_string *const_BLOCK_CODE_BUGINESE_name = zend_string_init_interned("BLOCK_CODE_BUGINESE", sizeof("BLOCK_CODE_BUGINESE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BUGINESE_name, &const_BLOCK_CODE_BUGINESE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BUGINESE_name); + + zval const_BLOCK_CODE_CJK_STROKES_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_STROKES_value, UBLOCK_CJK_STROKES); + zend_string *const_BLOCK_CODE_CJK_STROKES_name = zend_string_init_interned("BLOCK_CODE_CJK_STROKES", sizeof("BLOCK_CODE_CJK_STROKES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_STROKES_name, &const_BLOCK_CODE_CJK_STROKES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_STROKES_name); + + zval const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_value, UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT); + zend_string *const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT", sizeof("BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_name, &const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT_name); + + zval const_BLOCK_CODE_COPTIC_value; + ZVAL_LONG(&const_BLOCK_CODE_COPTIC_value, UBLOCK_COPTIC); + zend_string *const_BLOCK_CODE_COPTIC_name = zend_string_init_interned("BLOCK_CODE_COPTIC", sizeof("BLOCK_CODE_COPTIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COPTIC_name, &const_BLOCK_CODE_COPTIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COPTIC_name); + + zval const_BLOCK_CODE_ETHIOPIC_EXTENDED_value; + ZVAL_LONG(&const_BLOCK_CODE_ETHIOPIC_EXTENDED_value, UBLOCK_ETHIOPIC_EXTENDED); + zend_string *const_BLOCK_CODE_ETHIOPIC_EXTENDED_name = zend_string_init_interned("BLOCK_CODE_ETHIOPIC_EXTENDED", sizeof("BLOCK_CODE_ETHIOPIC_EXTENDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ETHIOPIC_EXTENDED_name, &const_BLOCK_CODE_ETHIOPIC_EXTENDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ETHIOPIC_EXTENDED_name); + + zval const_BLOCK_CODE_ETHIOPIC_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_ETHIOPIC_SUPPLEMENT_value, UBLOCK_ETHIOPIC_SUPPLEMENT); + zend_string *const_BLOCK_CODE_ETHIOPIC_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_ETHIOPIC_SUPPLEMENT", sizeof("BLOCK_CODE_ETHIOPIC_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ETHIOPIC_SUPPLEMENT_name, &const_BLOCK_CODE_ETHIOPIC_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ETHIOPIC_SUPPLEMENT_name); + + zval const_BLOCK_CODE_GEORGIAN_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_GEORGIAN_SUPPLEMENT_value, UBLOCK_GEORGIAN_SUPPLEMENT); + zend_string *const_BLOCK_CODE_GEORGIAN_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_GEORGIAN_SUPPLEMENT", sizeof("BLOCK_CODE_GEORGIAN_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GEORGIAN_SUPPLEMENT_name, &const_BLOCK_CODE_GEORGIAN_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GEORGIAN_SUPPLEMENT_name); + + zval const_BLOCK_CODE_GLAGOLITIC_value; + ZVAL_LONG(&const_BLOCK_CODE_GLAGOLITIC_value, UBLOCK_GLAGOLITIC); + zend_string *const_BLOCK_CODE_GLAGOLITIC_name = zend_string_init_interned("BLOCK_CODE_GLAGOLITIC", sizeof("BLOCK_CODE_GLAGOLITIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GLAGOLITIC_name, &const_BLOCK_CODE_GLAGOLITIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GLAGOLITIC_name); + + zval const_BLOCK_CODE_KHAROSHTHI_value; + ZVAL_LONG(&const_BLOCK_CODE_KHAROSHTHI_value, UBLOCK_KHAROSHTHI); + zend_string *const_BLOCK_CODE_KHAROSHTHI_name = zend_string_init_interned("BLOCK_CODE_KHAROSHTHI", sizeof("BLOCK_CODE_KHAROSHTHI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KHAROSHTHI_name, &const_BLOCK_CODE_KHAROSHTHI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KHAROSHTHI_name); + + zval const_BLOCK_CODE_MODIFIER_TONE_LETTERS_value; + ZVAL_LONG(&const_BLOCK_CODE_MODIFIER_TONE_LETTERS_value, UBLOCK_MODIFIER_TONE_LETTERS); + zend_string *const_BLOCK_CODE_MODIFIER_TONE_LETTERS_name = zend_string_init_interned("BLOCK_CODE_MODIFIER_TONE_LETTERS", sizeof("BLOCK_CODE_MODIFIER_TONE_LETTERS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MODIFIER_TONE_LETTERS_name, &const_BLOCK_CODE_MODIFIER_TONE_LETTERS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MODIFIER_TONE_LETTERS_name); + + zval const_BLOCK_CODE_NEW_TAI_LUE_value; + ZVAL_LONG(&const_BLOCK_CODE_NEW_TAI_LUE_value, UBLOCK_NEW_TAI_LUE); + zend_string *const_BLOCK_CODE_NEW_TAI_LUE_name = zend_string_init_interned("BLOCK_CODE_NEW_TAI_LUE", sizeof("BLOCK_CODE_NEW_TAI_LUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_NEW_TAI_LUE_name, &const_BLOCK_CODE_NEW_TAI_LUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_NEW_TAI_LUE_name); + + zval const_BLOCK_CODE_OLD_PERSIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_OLD_PERSIAN_value, UBLOCK_OLD_PERSIAN); + zend_string *const_BLOCK_CODE_OLD_PERSIAN_name = zend_string_init_interned("BLOCK_CODE_OLD_PERSIAN", sizeof("BLOCK_CODE_OLD_PERSIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OLD_PERSIAN_name, &const_BLOCK_CODE_OLD_PERSIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OLD_PERSIAN_name); + + zval const_BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT_value, UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT); + zend_string *const_BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT", sizeof("BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT_name, &const_BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PHONETIC_EXTENSIONS_SUPPLEMENT_name); + + zval const_BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION_value, UBLOCK_SUPPLEMENTAL_PUNCTUATION); + zend_string *const_BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION_name = zend_string_init_interned("BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION", sizeof("BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION_name, &const_BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPPLEMENTAL_PUNCTUATION_name); + + zval const_BLOCK_CODE_SYLOTI_NAGRI_value; + ZVAL_LONG(&const_BLOCK_CODE_SYLOTI_NAGRI_value, UBLOCK_SYLOTI_NAGRI); + zend_string *const_BLOCK_CODE_SYLOTI_NAGRI_name = zend_string_init_interned("BLOCK_CODE_SYLOTI_NAGRI", sizeof("BLOCK_CODE_SYLOTI_NAGRI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SYLOTI_NAGRI_name, &const_BLOCK_CODE_SYLOTI_NAGRI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SYLOTI_NAGRI_name); + + zval const_BLOCK_CODE_TIFINAGH_value; + ZVAL_LONG(&const_BLOCK_CODE_TIFINAGH_value, UBLOCK_TIFINAGH); + zend_string *const_BLOCK_CODE_TIFINAGH_name = zend_string_init_interned("BLOCK_CODE_TIFINAGH", sizeof("BLOCK_CODE_TIFINAGH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TIFINAGH_name, &const_BLOCK_CODE_TIFINAGH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TIFINAGH_name); + + zval const_BLOCK_CODE_VERTICAL_FORMS_value; + ZVAL_LONG(&const_BLOCK_CODE_VERTICAL_FORMS_value, UBLOCK_VERTICAL_FORMS); + zend_string *const_BLOCK_CODE_VERTICAL_FORMS_name = zend_string_init_interned("BLOCK_CODE_VERTICAL_FORMS", sizeof("BLOCK_CODE_VERTICAL_FORMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_VERTICAL_FORMS_name, &const_BLOCK_CODE_VERTICAL_FORMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_VERTICAL_FORMS_name); + + zval const_BLOCK_CODE_NKO_value; + ZVAL_LONG(&const_BLOCK_CODE_NKO_value, UBLOCK_NKO); + zend_string *const_BLOCK_CODE_NKO_name = zend_string_init_interned("BLOCK_CODE_NKO", sizeof("BLOCK_CODE_NKO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_NKO_name, &const_BLOCK_CODE_NKO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_NKO_name); + + zval const_BLOCK_CODE_BALINESE_value; + ZVAL_LONG(&const_BLOCK_CODE_BALINESE_value, UBLOCK_BALINESE); + zend_string *const_BLOCK_CODE_BALINESE_name = zend_string_init_interned("BLOCK_CODE_BALINESE", sizeof("BLOCK_CODE_BALINESE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BALINESE_name, &const_BLOCK_CODE_BALINESE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BALINESE_name); + + zval const_BLOCK_CODE_LATIN_EXTENDED_C_value; + ZVAL_LONG(&const_BLOCK_CODE_LATIN_EXTENDED_C_value, UBLOCK_LATIN_EXTENDED_C); + zend_string *const_BLOCK_CODE_LATIN_EXTENDED_C_name = zend_string_init_interned("BLOCK_CODE_LATIN_EXTENDED_C", sizeof("BLOCK_CODE_LATIN_EXTENDED_C") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LATIN_EXTENDED_C_name, &const_BLOCK_CODE_LATIN_EXTENDED_C_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LATIN_EXTENDED_C_name); + + zval const_BLOCK_CODE_LATIN_EXTENDED_D_value; + ZVAL_LONG(&const_BLOCK_CODE_LATIN_EXTENDED_D_value, UBLOCK_LATIN_EXTENDED_D); + zend_string *const_BLOCK_CODE_LATIN_EXTENDED_D_name = zend_string_init_interned("BLOCK_CODE_LATIN_EXTENDED_D", sizeof("BLOCK_CODE_LATIN_EXTENDED_D") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LATIN_EXTENDED_D_name, &const_BLOCK_CODE_LATIN_EXTENDED_D_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LATIN_EXTENDED_D_name); + + zval const_BLOCK_CODE_PHAGS_PA_value; + ZVAL_LONG(&const_BLOCK_CODE_PHAGS_PA_value, UBLOCK_PHAGS_PA); + zend_string *const_BLOCK_CODE_PHAGS_PA_name = zend_string_init_interned("BLOCK_CODE_PHAGS_PA", sizeof("BLOCK_CODE_PHAGS_PA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PHAGS_PA_name, &const_BLOCK_CODE_PHAGS_PA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PHAGS_PA_name); + + zval const_BLOCK_CODE_PHOENICIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_PHOENICIAN_value, UBLOCK_PHOENICIAN); + zend_string *const_BLOCK_CODE_PHOENICIAN_name = zend_string_init_interned("BLOCK_CODE_PHOENICIAN", sizeof("BLOCK_CODE_PHOENICIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PHOENICIAN_name, &const_BLOCK_CODE_PHOENICIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PHOENICIAN_name); + + zval const_BLOCK_CODE_CUNEIFORM_value; + ZVAL_LONG(&const_BLOCK_CODE_CUNEIFORM_value, UBLOCK_CUNEIFORM); + zend_string *const_BLOCK_CODE_CUNEIFORM_name = zend_string_init_interned("BLOCK_CODE_CUNEIFORM", sizeof("BLOCK_CODE_CUNEIFORM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CUNEIFORM_name, &const_BLOCK_CODE_CUNEIFORM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CUNEIFORM_name); + + zval const_BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION_value; + ZVAL_LONG(&const_BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION_value, UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION); + zend_string *const_BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION_name = zend_string_init_interned("BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION", sizeof("BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION_name, &const_BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CUNEIFORM_NUMBERS_AND_PUNCTUATION_name); + + zval const_BLOCK_CODE_COUNTING_ROD_NUMERALS_value; + ZVAL_LONG(&const_BLOCK_CODE_COUNTING_ROD_NUMERALS_value, UBLOCK_COUNTING_ROD_NUMERALS); + zend_string *const_BLOCK_CODE_COUNTING_ROD_NUMERALS_name = zend_string_init_interned("BLOCK_CODE_COUNTING_ROD_NUMERALS", sizeof("BLOCK_CODE_COUNTING_ROD_NUMERALS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COUNTING_ROD_NUMERALS_name, &const_BLOCK_CODE_COUNTING_ROD_NUMERALS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COUNTING_ROD_NUMERALS_name); + + zval const_BLOCK_CODE_SUNDANESE_value; + ZVAL_LONG(&const_BLOCK_CODE_SUNDANESE_value, UBLOCK_SUNDANESE); + zend_string *const_BLOCK_CODE_SUNDANESE_name = zend_string_init_interned("BLOCK_CODE_SUNDANESE", sizeof("BLOCK_CODE_SUNDANESE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUNDANESE_name, &const_BLOCK_CODE_SUNDANESE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUNDANESE_name); + + zval const_BLOCK_CODE_LEPCHA_value; + ZVAL_LONG(&const_BLOCK_CODE_LEPCHA_value, UBLOCK_LEPCHA); + zend_string *const_BLOCK_CODE_LEPCHA_name = zend_string_init_interned("BLOCK_CODE_LEPCHA", sizeof("BLOCK_CODE_LEPCHA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LEPCHA_name, &const_BLOCK_CODE_LEPCHA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LEPCHA_name); + + zval const_BLOCK_CODE_OL_CHIKI_value; + ZVAL_LONG(&const_BLOCK_CODE_OL_CHIKI_value, UBLOCK_OL_CHIKI); + zend_string *const_BLOCK_CODE_OL_CHIKI_name = zend_string_init_interned("BLOCK_CODE_OL_CHIKI", sizeof("BLOCK_CODE_OL_CHIKI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OL_CHIKI_name, &const_BLOCK_CODE_OL_CHIKI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OL_CHIKI_name); + + zval const_BLOCK_CODE_CYRILLIC_EXTENDED_A_value; + ZVAL_LONG(&const_BLOCK_CODE_CYRILLIC_EXTENDED_A_value, UBLOCK_CYRILLIC_EXTENDED_A); + zend_string *const_BLOCK_CODE_CYRILLIC_EXTENDED_A_name = zend_string_init_interned("BLOCK_CODE_CYRILLIC_EXTENDED_A", sizeof("BLOCK_CODE_CYRILLIC_EXTENDED_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CYRILLIC_EXTENDED_A_name, &const_BLOCK_CODE_CYRILLIC_EXTENDED_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CYRILLIC_EXTENDED_A_name); + + zval const_BLOCK_CODE_VAI_value; + ZVAL_LONG(&const_BLOCK_CODE_VAI_value, UBLOCK_VAI); + zend_string *const_BLOCK_CODE_VAI_name = zend_string_init_interned("BLOCK_CODE_VAI", sizeof("BLOCK_CODE_VAI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_VAI_name, &const_BLOCK_CODE_VAI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_VAI_name); + + zval const_BLOCK_CODE_CYRILLIC_EXTENDED_B_value; + ZVAL_LONG(&const_BLOCK_CODE_CYRILLIC_EXTENDED_B_value, UBLOCK_CYRILLIC_EXTENDED_B); + zend_string *const_BLOCK_CODE_CYRILLIC_EXTENDED_B_name = zend_string_init_interned("BLOCK_CODE_CYRILLIC_EXTENDED_B", sizeof("BLOCK_CODE_CYRILLIC_EXTENDED_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CYRILLIC_EXTENDED_B_name, &const_BLOCK_CODE_CYRILLIC_EXTENDED_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CYRILLIC_EXTENDED_B_name); + + zval const_BLOCK_CODE_SAURASHTRA_value; + ZVAL_LONG(&const_BLOCK_CODE_SAURASHTRA_value, UBLOCK_SAURASHTRA); + zend_string *const_BLOCK_CODE_SAURASHTRA_name = zend_string_init_interned("BLOCK_CODE_SAURASHTRA", sizeof("BLOCK_CODE_SAURASHTRA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SAURASHTRA_name, &const_BLOCK_CODE_SAURASHTRA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SAURASHTRA_name); + + zval const_BLOCK_CODE_KAYAH_LI_value; + ZVAL_LONG(&const_BLOCK_CODE_KAYAH_LI_value, UBLOCK_KAYAH_LI); + zend_string *const_BLOCK_CODE_KAYAH_LI_name = zend_string_init_interned("BLOCK_CODE_KAYAH_LI", sizeof("BLOCK_CODE_KAYAH_LI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KAYAH_LI_name, &const_BLOCK_CODE_KAYAH_LI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KAYAH_LI_name); + + zval const_BLOCK_CODE_REJANG_value; + ZVAL_LONG(&const_BLOCK_CODE_REJANG_value, UBLOCK_REJANG); + zend_string *const_BLOCK_CODE_REJANG_name = zend_string_init_interned("BLOCK_CODE_REJANG", sizeof("BLOCK_CODE_REJANG") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_REJANG_name, &const_BLOCK_CODE_REJANG_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_REJANG_name); + + zval const_BLOCK_CODE_CHAM_value; + ZVAL_LONG(&const_BLOCK_CODE_CHAM_value, UBLOCK_CHAM); + zend_string *const_BLOCK_CODE_CHAM_name = zend_string_init_interned("BLOCK_CODE_CHAM", sizeof("BLOCK_CODE_CHAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CHAM_name, &const_BLOCK_CODE_CHAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CHAM_name); + + zval const_BLOCK_CODE_ANCIENT_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_ANCIENT_SYMBOLS_value, UBLOCK_ANCIENT_SYMBOLS); + zend_string *const_BLOCK_CODE_ANCIENT_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_ANCIENT_SYMBOLS", sizeof("BLOCK_CODE_ANCIENT_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ANCIENT_SYMBOLS_name, &const_BLOCK_CODE_ANCIENT_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ANCIENT_SYMBOLS_name); + + zval const_BLOCK_CODE_PHAISTOS_DISC_value; + ZVAL_LONG(&const_BLOCK_CODE_PHAISTOS_DISC_value, UBLOCK_PHAISTOS_DISC); + zend_string *const_BLOCK_CODE_PHAISTOS_DISC_name = zend_string_init_interned("BLOCK_CODE_PHAISTOS_DISC", sizeof("BLOCK_CODE_PHAISTOS_DISC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PHAISTOS_DISC_name, &const_BLOCK_CODE_PHAISTOS_DISC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PHAISTOS_DISC_name); + + zval const_BLOCK_CODE_LYCIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_LYCIAN_value, UBLOCK_LYCIAN); + zend_string *const_BLOCK_CODE_LYCIAN_name = zend_string_init_interned("BLOCK_CODE_LYCIAN", sizeof("BLOCK_CODE_LYCIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LYCIAN_name, &const_BLOCK_CODE_LYCIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LYCIAN_name); + + zval const_BLOCK_CODE_CARIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_CARIAN_value, UBLOCK_CARIAN); + zend_string *const_BLOCK_CODE_CARIAN_name = zend_string_init_interned("BLOCK_CODE_CARIAN", sizeof("BLOCK_CODE_CARIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CARIAN_name, &const_BLOCK_CODE_CARIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CARIAN_name); + + zval const_BLOCK_CODE_LYDIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_LYDIAN_value, UBLOCK_LYDIAN); + zend_string *const_BLOCK_CODE_LYDIAN_name = zend_string_init_interned("BLOCK_CODE_LYDIAN", sizeof("BLOCK_CODE_LYDIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LYDIAN_name, &const_BLOCK_CODE_LYDIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LYDIAN_name); + + zval const_BLOCK_CODE_MAHJONG_TILES_value; + ZVAL_LONG(&const_BLOCK_CODE_MAHJONG_TILES_value, UBLOCK_MAHJONG_TILES); + zend_string *const_BLOCK_CODE_MAHJONG_TILES_name = zend_string_init_interned("BLOCK_CODE_MAHJONG_TILES", sizeof("BLOCK_CODE_MAHJONG_TILES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MAHJONG_TILES_name, &const_BLOCK_CODE_MAHJONG_TILES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MAHJONG_TILES_name); + + zval const_BLOCK_CODE_DOMINO_TILES_value; + ZVAL_LONG(&const_BLOCK_CODE_DOMINO_TILES_value, UBLOCK_DOMINO_TILES); + zend_string *const_BLOCK_CODE_DOMINO_TILES_name = zend_string_init_interned("BLOCK_CODE_DOMINO_TILES", sizeof("BLOCK_CODE_DOMINO_TILES") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_DOMINO_TILES_name, &const_BLOCK_CODE_DOMINO_TILES_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_DOMINO_TILES_name); + + zval const_BLOCK_CODE_SAMARITAN_value; + ZVAL_LONG(&const_BLOCK_CODE_SAMARITAN_value, UBLOCK_SAMARITAN); + zend_string *const_BLOCK_CODE_SAMARITAN_name = zend_string_init_interned("BLOCK_CODE_SAMARITAN", sizeof("BLOCK_CODE_SAMARITAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SAMARITAN_name, &const_BLOCK_CODE_SAMARITAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SAMARITAN_name); + + zval const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_value; + ZVAL_LONG(&const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_value, UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED); + zend_string *const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_name = zend_string_init_interned("BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED", sizeof("BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_name, &const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED_name); + + zval const_BLOCK_CODE_TAI_THAM_value; + ZVAL_LONG(&const_BLOCK_CODE_TAI_THAM_value, UBLOCK_TAI_THAM); + zend_string *const_BLOCK_CODE_TAI_THAM_name = zend_string_init_interned("BLOCK_CODE_TAI_THAM", sizeof("BLOCK_CODE_TAI_THAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAI_THAM_name, &const_BLOCK_CODE_TAI_THAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAI_THAM_name); + + zval const_BLOCK_CODE_VEDIC_EXTENSIONS_value; + ZVAL_LONG(&const_BLOCK_CODE_VEDIC_EXTENSIONS_value, UBLOCK_VEDIC_EXTENSIONS); + zend_string *const_BLOCK_CODE_VEDIC_EXTENSIONS_name = zend_string_init_interned("BLOCK_CODE_VEDIC_EXTENSIONS", sizeof("BLOCK_CODE_VEDIC_EXTENSIONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_VEDIC_EXTENSIONS_name, &const_BLOCK_CODE_VEDIC_EXTENSIONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_VEDIC_EXTENSIONS_name); + + zval const_BLOCK_CODE_LISU_value; + ZVAL_LONG(&const_BLOCK_CODE_LISU_value, UBLOCK_LISU); + zend_string *const_BLOCK_CODE_LISU_name = zend_string_init_interned("BLOCK_CODE_LISU", sizeof("BLOCK_CODE_LISU") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LISU_name, &const_BLOCK_CODE_LISU_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LISU_name); + + zval const_BLOCK_CODE_BAMUM_value; + ZVAL_LONG(&const_BLOCK_CODE_BAMUM_value, UBLOCK_BAMUM); + zend_string *const_BLOCK_CODE_BAMUM_name = zend_string_init_interned("BLOCK_CODE_BAMUM", sizeof("BLOCK_CODE_BAMUM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BAMUM_name, &const_BLOCK_CODE_BAMUM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BAMUM_name); + + zval const_BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS_value; + ZVAL_LONG(&const_BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS_value, UBLOCK_COMMON_INDIC_NUMBER_FORMS); + zend_string *const_BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS_name = zend_string_init_interned("BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS", sizeof("BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS_name, &const_BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COMMON_INDIC_NUMBER_FORMS_name); + + zval const_BLOCK_CODE_DEVANAGARI_EXTENDED_value; + ZVAL_LONG(&const_BLOCK_CODE_DEVANAGARI_EXTENDED_value, UBLOCK_DEVANAGARI_EXTENDED); + zend_string *const_BLOCK_CODE_DEVANAGARI_EXTENDED_name = zend_string_init_interned("BLOCK_CODE_DEVANAGARI_EXTENDED", sizeof("BLOCK_CODE_DEVANAGARI_EXTENDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_DEVANAGARI_EXTENDED_name, &const_BLOCK_CODE_DEVANAGARI_EXTENDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_DEVANAGARI_EXTENDED_name); + + zval const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_A_value; + ZVAL_LONG(&const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_A_value, UBLOCK_HANGUL_JAMO_EXTENDED_A); + zend_string *const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_A_name = zend_string_init_interned("BLOCK_CODE_HANGUL_JAMO_EXTENDED_A", sizeof("BLOCK_CODE_HANGUL_JAMO_EXTENDED_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_A_name, &const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_A_name); + + zval const_BLOCK_CODE_JAVANESE_value; + ZVAL_LONG(&const_BLOCK_CODE_JAVANESE_value, UBLOCK_JAVANESE); + zend_string *const_BLOCK_CODE_JAVANESE_name = zend_string_init_interned("BLOCK_CODE_JAVANESE", sizeof("BLOCK_CODE_JAVANESE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_JAVANESE_name, &const_BLOCK_CODE_JAVANESE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_JAVANESE_name); + + zval const_BLOCK_CODE_MYANMAR_EXTENDED_A_value; + ZVAL_LONG(&const_BLOCK_CODE_MYANMAR_EXTENDED_A_value, UBLOCK_MYANMAR_EXTENDED_A); + zend_string *const_BLOCK_CODE_MYANMAR_EXTENDED_A_name = zend_string_init_interned("BLOCK_CODE_MYANMAR_EXTENDED_A", sizeof("BLOCK_CODE_MYANMAR_EXTENDED_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MYANMAR_EXTENDED_A_name, &const_BLOCK_CODE_MYANMAR_EXTENDED_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MYANMAR_EXTENDED_A_name); + + zval const_BLOCK_CODE_TAI_VIET_value; + ZVAL_LONG(&const_BLOCK_CODE_TAI_VIET_value, UBLOCK_TAI_VIET); + zend_string *const_BLOCK_CODE_TAI_VIET_name = zend_string_init_interned("BLOCK_CODE_TAI_VIET", sizeof("BLOCK_CODE_TAI_VIET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAI_VIET_name, &const_BLOCK_CODE_TAI_VIET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAI_VIET_name); + + zval const_BLOCK_CODE_MEETEI_MAYEK_value; + ZVAL_LONG(&const_BLOCK_CODE_MEETEI_MAYEK_value, UBLOCK_MEETEI_MAYEK); + zend_string *const_BLOCK_CODE_MEETEI_MAYEK_name = zend_string_init_interned("BLOCK_CODE_MEETEI_MAYEK", sizeof("BLOCK_CODE_MEETEI_MAYEK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MEETEI_MAYEK_name, &const_BLOCK_CODE_MEETEI_MAYEK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MEETEI_MAYEK_name); + + zval const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_B_value; + ZVAL_LONG(&const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_B_value, UBLOCK_HANGUL_JAMO_EXTENDED_B); + zend_string *const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_B_name = zend_string_init_interned("BLOCK_CODE_HANGUL_JAMO_EXTENDED_B", sizeof("BLOCK_CODE_HANGUL_JAMO_EXTENDED_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_B_name, &const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_HANGUL_JAMO_EXTENDED_B_name); + + zval const_BLOCK_CODE_IMPERIAL_ARAMAIC_value; + ZVAL_LONG(&const_BLOCK_CODE_IMPERIAL_ARAMAIC_value, UBLOCK_IMPERIAL_ARAMAIC); + zend_string *const_BLOCK_CODE_IMPERIAL_ARAMAIC_name = zend_string_init_interned("BLOCK_CODE_IMPERIAL_ARAMAIC", sizeof("BLOCK_CODE_IMPERIAL_ARAMAIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_IMPERIAL_ARAMAIC_name, &const_BLOCK_CODE_IMPERIAL_ARAMAIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_IMPERIAL_ARAMAIC_name); + + zval const_BLOCK_CODE_OLD_SOUTH_ARABIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_OLD_SOUTH_ARABIAN_value, UBLOCK_OLD_SOUTH_ARABIAN); + zend_string *const_BLOCK_CODE_OLD_SOUTH_ARABIAN_name = zend_string_init_interned("BLOCK_CODE_OLD_SOUTH_ARABIAN", sizeof("BLOCK_CODE_OLD_SOUTH_ARABIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OLD_SOUTH_ARABIAN_name, &const_BLOCK_CODE_OLD_SOUTH_ARABIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OLD_SOUTH_ARABIAN_name); + + zval const_BLOCK_CODE_AVESTAN_value; + ZVAL_LONG(&const_BLOCK_CODE_AVESTAN_value, UBLOCK_AVESTAN); + zend_string *const_BLOCK_CODE_AVESTAN_name = zend_string_init_interned("BLOCK_CODE_AVESTAN", sizeof("BLOCK_CODE_AVESTAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_AVESTAN_name, &const_BLOCK_CODE_AVESTAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_AVESTAN_name); + + zval const_BLOCK_CODE_INSCRIPTIONAL_PARTHIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_INSCRIPTIONAL_PARTHIAN_value, UBLOCK_INSCRIPTIONAL_PARTHIAN); + zend_string *const_BLOCK_CODE_INSCRIPTIONAL_PARTHIAN_name = zend_string_init_interned("BLOCK_CODE_INSCRIPTIONAL_PARTHIAN", sizeof("BLOCK_CODE_INSCRIPTIONAL_PARTHIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_INSCRIPTIONAL_PARTHIAN_name, &const_BLOCK_CODE_INSCRIPTIONAL_PARTHIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_INSCRIPTIONAL_PARTHIAN_name); + + zval const_BLOCK_CODE_INSCRIPTIONAL_PAHLAVI_value; + ZVAL_LONG(&const_BLOCK_CODE_INSCRIPTIONAL_PAHLAVI_value, UBLOCK_INSCRIPTIONAL_PAHLAVI); + zend_string *const_BLOCK_CODE_INSCRIPTIONAL_PAHLAVI_name = zend_string_init_interned("BLOCK_CODE_INSCRIPTIONAL_PAHLAVI", sizeof("BLOCK_CODE_INSCRIPTIONAL_PAHLAVI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_INSCRIPTIONAL_PAHLAVI_name, &const_BLOCK_CODE_INSCRIPTIONAL_PAHLAVI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_INSCRIPTIONAL_PAHLAVI_name); + + zval const_BLOCK_CODE_OLD_TURKIC_value; + ZVAL_LONG(&const_BLOCK_CODE_OLD_TURKIC_value, UBLOCK_OLD_TURKIC); + zend_string *const_BLOCK_CODE_OLD_TURKIC_name = zend_string_init_interned("BLOCK_CODE_OLD_TURKIC", sizeof("BLOCK_CODE_OLD_TURKIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OLD_TURKIC_name, &const_BLOCK_CODE_OLD_TURKIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OLD_TURKIC_name); + + zval const_BLOCK_CODE_RUMI_NUMERAL_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_RUMI_NUMERAL_SYMBOLS_value, UBLOCK_RUMI_NUMERAL_SYMBOLS); + zend_string *const_BLOCK_CODE_RUMI_NUMERAL_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_RUMI_NUMERAL_SYMBOLS", sizeof("BLOCK_CODE_RUMI_NUMERAL_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_RUMI_NUMERAL_SYMBOLS_name, &const_BLOCK_CODE_RUMI_NUMERAL_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_RUMI_NUMERAL_SYMBOLS_name); + + zval const_BLOCK_CODE_KAITHI_value; + ZVAL_LONG(&const_BLOCK_CODE_KAITHI_value, UBLOCK_KAITHI); + zend_string *const_BLOCK_CODE_KAITHI_name = zend_string_init_interned("BLOCK_CODE_KAITHI", sizeof("BLOCK_CODE_KAITHI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KAITHI_name, &const_BLOCK_CODE_KAITHI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KAITHI_name); + + zval const_BLOCK_CODE_EGYPTIAN_HIEROGLYPHS_value; + ZVAL_LONG(&const_BLOCK_CODE_EGYPTIAN_HIEROGLYPHS_value, UBLOCK_EGYPTIAN_HIEROGLYPHS); + zend_string *const_BLOCK_CODE_EGYPTIAN_HIEROGLYPHS_name = zend_string_init_interned("BLOCK_CODE_EGYPTIAN_HIEROGLYPHS", sizeof("BLOCK_CODE_EGYPTIAN_HIEROGLYPHS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_EGYPTIAN_HIEROGLYPHS_name, &const_BLOCK_CODE_EGYPTIAN_HIEROGLYPHS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_EGYPTIAN_HIEROGLYPHS_name); + + zval const_BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT_value, UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT); + zend_string *const_BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT", sizeof("BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT_name, &const_BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ENCLOSED_ALPHANUMERIC_SUPPLEMENT_name); + + zval const_BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_value, UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT); + zend_string *const_BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT", sizeof("BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_name, &const_BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT_name); + + zval const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_value, UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C); + zend_string *const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_name = zend_string_init_interned("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C", sizeof("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_name, &const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C_name); + + zval const_BLOCK_CODE_MANDAIC_value; + ZVAL_LONG(&const_BLOCK_CODE_MANDAIC_value, UBLOCK_MANDAIC); + zend_string *const_BLOCK_CODE_MANDAIC_name = zend_string_init_interned("BLOCK_CODE_MANDAIC", sizeof("BLOCK_CODE_MANDAIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MANDAIC_name, &const_BLOCK_CODE_MANDAIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MANDAIC_name); + + zval const_BLOCK_CODE_BATAK_value; + ZVAL_LONG(&const_BLOCK_CODE_BATAK_value, UBLOCK_BATAK); + zend_string *const_BLOCK_CODE_BATAK_name = zend_string_init_interned("BLOCK_CODE_BATAK", sizeof("BLOCK_CODE_BATAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BATAK_name, &const_BLOCK_CODE_BATAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BATAK_name); + + zval const_BLOCK_CODE_ETHIOPIC_EXTENDED_A_value; + ZVAL_LONG(&const_BLOCK_CODE_ETHIOPIC_EXTENDED_A_value, UBLOCK_ETHIOPIC_EXTENDED_A); + zend_string *const_BLOCK_CODE_ETHIOPIC_EXTENDED_A_name = zend_string_init_interned("BLOCK_CODE_ETHIOPIC_EXTENDED_A", sizeof("BLOCK_CODE_ETHIOPIC_EXTENDED_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ETHIOPIC_EXTENDED_A_name, &const_BLOCK_CODE_ETHIOPIC_EXTENDED_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ETHIOPIC_EXTENDED_A_name); + + zval const_BLOCK_CODE_BRAHMI_value; + ZVAL_LONG(&const_BLOCK_CODE_BRAHMI_value, UBLOCK_BRAHMI); + zend_string *const_BLOCK_CODE_BRAHMI_name = zend_string_init_interned("BLOCK_CODE_BRAHMI", sizeof("BLOCK_CODE_BRAHMI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BRAHMI_name, &const_BLOCK_CODE_BRAHMI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BRAHMI_name); + + zval const_BLOCK_CODE_BAMUM_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_BAMUM_SUPPLEMENT_value, UBLOCK_BAMUM_SUPPLEMENT); + zend_string *const_BLOCK_CODE_BAMUM_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_BAMUM_SUPPLEMENT", sizeof("BLOCK_CODE_BAMUM_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BAMUM_SUPPLEMENT_name, &const_BLOCK_CODE_BAMUM_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BAMUM_SUPPLEMENT_name); + + zval const_BLOCK_CODE_KANA_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_KANA_SUPPLEMENT_value, UBLOCK_KANA_SUPPLEMENT); + zend_string *const_BLOCK_CODE_KANA_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_KANA_SUPPLEMENT", sizeof("BLOCK_CODE_KANA_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KANA_SUPPLEMENT_name, &const_BLOCK_CODE_KANA_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KANA_SUPPLEMENT_name); + + zval const_BLOCK_CODE_PLAYING_CARDS_value; + ZVAL_LONG(&const_BLOCK_CODE_PLAYING_CARDS_value, UBLOCK_PLAYING_CARDS); + zend_string *const_BLOCK_CODE_PLAYING_CARDS_name = zend_string_init_interned("BLOCK_CODE_PLAYING_CARDS", sizeof("BLOCK_CODE_PLAYING_CARDS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PLAYING_CARDS_name, &const_BLOCK_CODE_PLAYING_CARDS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PLAYING_CARDS_name); + + zval const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_value; + ZVAL_LONG(&const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_value, UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS); + zend_string *const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_name = zend_string_init_interned("BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS", sizeof("BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_name, &const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS_name); + + zval const_BLOCK_CODE_EMOTICONS_value; + ZVAL_LONG(&const_BLOCK_CODE_EMOTICONS_value, UBLOCK_EMOTICONS); + zend_string *const_BLOCK_CODE_EMOTICONS_name = zend_string_init_interned("BLOCK_CODE_EMOTICONS", sizeof("BLOCK_CODE_EMOTICONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_EMOTICONS_name, &const_BLOCK_CODE_EMOTICONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_EMOTICONS_name); + + zval const_BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS_value, UBLOCK_TRANSPORT_AND_MAP_SYMBOLS); + zend_string *const_BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS", sizeof("BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS_name, &const_BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TRANSPORT_AND_MAP_SYMBOLS_name); + + zval const_BLOCK_CODE_ALCHEMICAL_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_ALCHEMICAL_SYMBOLS_value, UBLOCK_ALCHEMICAL_SYMBOLS); + zend_string *const_BLOCK_CODE_ALCHEMICAL_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_ALCHEMICAL_SYMBOLS", sizeof("BLOCK_CODE_ALCHEMICAL_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ALCHEMICAL_SYMBOLS_name, &const_BLOCK_CODE_ALCHEMICAL_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ALCHEMICAL_SYMBOLS_name); + + zval const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_value; + ZVAL_LONG(&const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_value, UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D); + zend_string *const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_name = zend_string_init_interned("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D", sizeof("BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_name, &const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D_name); + + zval const_BLOCK_CODE_ARABIC_EXTENDED_A_value; + ZVAL_LONG(&const_BLOCK_CODE_ARABIC_EXTENDED_A_value, UBLOCK_ARABIC_EXTENDED_A); + zend_string *const_BLOCK_CODE_ARABIC_EXTENDED_A_name = zend_string_init_interned("BLOCK_CODE_ARABIC_EXTENDED_A", sizeof("BLOCK_CODE_ARABIC_EXTENDED_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARABIC_EXTENDED_A_name, &const_BLOCK_CODE_ARABIC_EXTENDED_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARABIC_EXTENDED_A_name); + + zval const_BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_value; + ZVAL_LONG(&const_BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_value, UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS); + zend_string *const_BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_name = zend_string_init_interned("BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS", sizeof("BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_name, &const_BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS_name); + + zval const_BLOCK_CODE_CHAKMA_value; + ZVAL_LONG(&const_BLOCK_CODE_CHAKMA_value, UBLOCK_CHAKMA); + zend_string *const_BLOCK_CODE_CHAKMA_name = zend_string_init_interned("BLOCK_CODE_CHAKMA", sizeof("BLOCK_CODE_CHAKMA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CHAKMA_name, &const_BLOCK_CODE_CHAKMA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CHAKMA_name); + + zval const_BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS_value; + ZVAL_LONG(&const_BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS_value, UBLOCK_MEETEI_MAYEK_EXTENSIONS); + zend_string *const_BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS_name = zend_string_init_interned("BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS", sizeof("BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS_name, &const_BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MEETEI_MAYEK_EXTENSIONS_name); + + zval const_BLOCK_CODE_MEROITIC_CURSIVE_value; + ZVAL_LONG(&const_BLOCK_CODE_MEROITIC_CURSIVE_value, UBLOCK_MEROITIC_CURSIVE); + zend_string *const_BLOCK_CODE_MEROITIC_CURSIVE_name = zend_string_init_interned("BLOCK_CODE_MEROITIC_CURSIVE", sizeof("BLOCK_CODE_MEROITIC_CURSIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MEROITIC_CURSIVE_name, &const_BLOCK_CODE_MEROITIC_CURSIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MEROITIC_CURSIVE_name); + + zval const_BLOCK_CODE_MEROITIC_HIEROGLYPHS_value; + ZVAL_LONG(&const_BLOCK_CODE_MEROITIC_HIEROGLYPHS_value, UBLOCK_MEROITIC_HIEROGLYPHS); + zend_string *const_BLOCK_CODE_MEROITIC_HIEROGLYPHS_name = zend_string_init_interned("BLOCK_CODE_MEROITIC_HIEROGLYPHS", sizeof("BLOCK_CODE_MEROITIC_HIEROGLYPHS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MEROITIC_HIEROGLYPHS_name, &const_BLOCK_CODE_MEROITIC_HIEROGLYPHS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MEROITIC_HIEROGLYPHS_name); + + zval const_BLOCK_CODE_MIAO_value; + ZVAL_LONG(&const_BLOCK_CODE_MIAO_value, UBLOCK_MIAO); + zend_string *const_BLOCK_CODE_MIAO_name = zend_string_init_interned("BLOCK_CODE_MIAO", sizeof("BLOCK_CODE_MIAO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MIAO_name, &const_BLOCK_CODE_MIAO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MIAO_name); + + zval const_BLOCK_CODE_SHARADA_value; + ZVAL_LONG(&const_BLOCK_CODE_SHARADA_value, UBLOCK_SHARADA); + zend_string *const_BLOCK_CODE_SHARADA_name = zend_string_init_interned("BLOCK_CODE_SHARADA", sizeof("BLOCK_CODE_SHARADA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SHARADA_name, &const_BLOCK_CODE_SHARADA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SHARADA_name); + + zval const_BLOCK_CODE_SORA_SOMPENG_value; + ZVAL_LONG(&const_BLOCK_CODE_SORA_SOMPENG_value, UBLOCK_SORA_SOMPENG); + zend_string *const_BLOCK_CODE_SORA_SOMPENG_name = zend_string_init_interned("BLOCK_CODE_SORA_SOMPENG", sizeof("BLOCK_CODE_SORA_SOMPENG") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SORA_SOMPENG_name, &const_BLOCK_CODE_SORA_SOMPENG_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SORA_SOMPENG_name); + + zval const_BLOCK_CODE_SUNDANESE_SUPPLEMENT_value; + ZVAL_LONG(&const_BLOCK_CODE_SUNDANESE_SUPPLEMENT_value, UBLOCK_SUNDANESE_SUPPLEMENT); + zend_string *const_BLOCK_CODE_SUNDANESE_SUPPLEMENT_name = zend_string_init_interned("BLOCK_CODE_SUNDANESE_SUPPLEMENT", sizeof("BLOCK_CODE_SUNDANESE_SUPPLEMENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUNDANESE_SUPPLEMENT_name, &const_BLOCK_CODE_SUNDANESE_SUPPLEMENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUNDANESE_SUPPLEMENT_name); + + zval const_BLOCK_CODE_TAKRI_value; + ZVAL_LONG(&const_BLOCK_CODE_TAKRI_value, UBLOCK_TAKRI); + zend_string *const_BLOCK_CODE_TAKRI_name = zend_string_init_interned("BLOCK_CODE_TAKRI", sizeof("BLOCK_CODE_TAKRI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TAKRI_name, &const_BLOCK_CODE_TAKRI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TAKRI_name); +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_BASSA_VAH_value; + ZVAL_LONG(&const_BLOCK_CODE_BASSA_VAH_value, UBLOCK_BASSA_VAH); + zend_string *const_BLOCK_CODE_BASSA_VAH_name = zend_string_init_interned("BLOCK_CODE_BASSA_VAH", sizeof("BLOCK_CODE_BASSA_VAH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_BASSA_VAH_name, &const_BLOCK_CODE_BASSA_VAH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_BASSA_VAH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_CAUCASIAN_ALBANIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_CAUCASIAN_ALBANIAN_value, UBLOCK_CAUCASIAN_ALBANIAN); + zend_string *const_BLOCK_CODE_CAUCASIAN_ALBANIAN_name = zend_string_init_interned("BLOCK_CODE_CAUCASIAN_ALBANIAN", sizeof("BLOCK_CODE_CAUCASIAN_ALBANIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_CAUCASIAN_ALBANIAN_name, &const_BLOCK_CODE_CAUCASIAN_ALBANIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_CAUCASIAN_ALBANIAN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_COPTIC_EPACT_NUMBERS_value; + ZVAL_LONG(&const_BLOCK_CODE_COPTIC_EPACT_NUMBERS_value, UBLOCK_COPTIC_EPACT_NUMBERS); + zend_string *const_BLOCK_CODE_COPTIC_EPACT_NUMBERS_name = zend_string_init_interned("BLOCK_CODE_COPTIC_EPACT_NUMBERS", sizeof("BLOCK_CODE_COPTIC_EPACT_NUMBERS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COPTIC_EPACT_NUMBERS_name, &const_BLOCK_CODE_COPTIC_EPACT_NUMBERS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COPTIC_EPACT_NUMBERS_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED_value; + ZVAL_LONG(&const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED_value, UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED); + zend_string *const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED_name = zend_string_init_interned("BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED", sizeof("BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED_name, &const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COMBINING_DIACRITICAL_MARKS_EXTENDED_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_DUPLOYAN_value; + ZVAL_LONG(&const_BLOCK_CODE_DUPLOYAN_value, UBLOCK_DUPLOYAN); + zend_string *const_BLOCK_CODE_DUPLOYAN_name = zend_string_init_interned("BLOCK_CODE_DUPLOYAN", sizeof("BLOCK_CODE_DUPLOYAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_DUPLOYAN_name, &const_BLOCK_CODE_DUPLOYAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_DUPLOYAN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_ELBASAN_value; + ZVAL_LONG(&const_BLOCK_CODE_ELBASAN_value, UBLOCK_ELBASAN); + zend_string *const_BLOCK_CODE_ELBASAN_name = zend_string_init_interned("BLOCK_CODE_ELBASAN", sizeof("BLOCK_CODE_ELBASAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ELBASAN_name, &const_BLOCK_CODE_ELBASAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ELBASAN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED_value; + ZVAL_LONG(&const_BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED_value, UBLOCK_GEOMETRIC_SHAPES_EXTENDED); + zend_string *const_BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED_name = zend_string_init_interned("BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED", sizeof("BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED_name, &const_BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GEOMETRIC_SHAPES_EXTENDED_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_GRANTHA_value; + ZVAL_LONG(&const_BLOCK_CODE_GRANTHA_value, UBLOCK_GRANTHA); + zend_string *const_BLOCK_CODE_GRANTHA_name = zend_string_init_interned("BLOCK_CODE_GRANTHA", sizeof("BLOCK_CODE_GRANTHA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_GRANTHA_name, &const_BLOCK_CODE_GRANTHA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_GRANTHA_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_KHOJKI_value; + ZVAL_LONG(&const_BLOCK_CODE_KHOJKI_value, UBLOCK_KHOJKI); + zend_string *const_BLOCK_CODE_KHOJKI_name = zend_string_init_interned("BLOCK_CODE_KHOJKI", sizeof("BLOCK_CODE_KHOJKI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KHOJKI_name, &const_BLOCK_CODE_KHOJKI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KHOJKI_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_KHUDAWADI_value; + ZVAL_LONG(&const_BLOCK_CODE_KHUDAWADI_value, UBLOCK_KHUDAWADI); + zend_string *const_BLOCK_CODE_KHUDAWADI_name = zend_string_init_interned("BLOCK_CODE_KHUDAWADI", sizeof("BLOCK_CODE_KHUDAWADI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_KHUDAWADI_name, &const_BLOCK_CODE_KHUDAWADI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_KHUDAWADI_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_LATIN_EXTENDED_E_value; + ZVAL_LONG(&const_BLOCK_CODE_LATIN_EXTENDED_E_value, UBLOCK_LATIN_EXTENDED_E); + zend_string *const_BLOCK_CODE_LATIN_EXTENDED_E_name = zend_string_init_interned("BLOCK_CODE_LATIN_EXTENDED_E", sizeof("BLOCK_CODE_LATIN_EXTENDED_E") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LATIN_EXTENDED_E_name, &const_BLOCK_CODE_LATIN_EXTENDED_E_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LATIN_EXTENDED_E_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_LINEAR_A_value; + ZVAL_LONG(&const_BLOCK_CODE_LINEAR_A_value, UBLOCK_LINEAR_A); + zend_string *const_BLOCK_CODE_LINEAR_A_name = zend_string_init_interned("BLOCK_CODE_LINEAR_A", sizeof("BLOCK_CODE_LINEAR_A") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_LINEAR_A_name, &const_BLOCK_CODE_LINEAR_A_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_LINEAR_A_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_MAHAJANI_value; + ZVAL_LONG(&const_BLOCK_CODE_MAHAJANI_value, UBLOCK_MAHAJANI); + zend_string *const_BLOCK_CODE_MAHAJANI_name = zend_string_init_interned("BLOCK_CODE_MAHAJANI", sizeof("BLOCK_CODE_MAHAJANI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MAHAJANI_name, &const_BLOCK_CODE_MAHAJANI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MAHAJANI_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_MANICHAEAN_value; + ZVAL_LONG(&const_BLOCK_CODE_MANICHAEAN_value, UBLOCK_MANICHAEAN); + zend_string *const_BLOCK_CODE_MANICHAEAN_name = zend_string_init_interned("BLOCK_CODE_MANICHAEAN", sizeof("BLOCK_CODE_MANICHAEAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MANICHAEAN_name, &const_BLOCK_CODE_MANICHAEAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MANICHAEAN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_MENDE_KIKAKUI_value; + ZVAL_LONG(&const_BLOCK_CODE_MENDE_KIKAKUI_value, UBLOCK_MENDE_KIKAKUI); + zend_string *const_BLOCK_CODE_MENDE_KIKAKUI_name = zend_string_init_interned("BLOCK_CODE_MENDE_KIKAKUI", sizeof("BLOCK_CODE_MENDE_KIKAKUI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MENDE_KIKAKUI_name, &const_BLOCK_CODE_MENDE_KIKAKUI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MENDE_KIKAKUI_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_MODI_value; + ZVAL_LONG(&const_BLOCK_CODE_MODI_value, UBLOCK_MODI); + zend_string *const_BLOCK_CODE_MODI_name = zend_string_init_interned("BLOCK_CODE_MODI", sizeof("BLOCK_CODE_MODI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MODI_name, &const_BLOCK_CODE_MODI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MODI_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_MRO_value; + ZVAL_LONG(&const_BLOCK_CODE_MRO_value, UBLOCK_MRO); + zend_string *const_BLOCK_CODE_MRO_name = zend_string_init_interned("BLOCK_CODE_MRO", sizeof("BLOCK_CODE_MRO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MRO_name, &const_BLOCK_CODE_MRO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MRO_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_MYANMAR_EXTENDED_B_value; + ZVAL_LONG(&const_BLOCK_CODE_MYANMAR_EXTENDED_B_value, UBLOCK_MYANMAR_EXTENDED_B); + zend_string *const_BLOCK_CODE_MYANMAR_EXTENDED_B_name = zend_string_init_interned("BLOCK_CODE_MYANMAR_EXTENDED_B", sizeof("BLOCK_CODE_MYANMAR_EXTENDED_B") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_MYANMAR_EXTENDED_B_name, &const_BLOCK_CODE_MYANMAR_EXTENDED_B_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_MYANMAR_EXTENDED_B_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_NABATAEAN_value; + ZVAL_LONG(&const_BLOCK_CODE_NABATAEAN_value, UBLOCK_NABATAEAN); + zend_string *const_BLOCK_CODE_NABATAEAN_name = zend_string_init_interned("BLOCK_CODE_NABATAEAN", sizeof("BLOCK_CODE_NABATAEAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_NABATAEAN_name, &const_BLOCK_CODE_NABATAEAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_NABATAEAN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_OLD_NORTH_ARABIAN_value; + ZVAL_LONG(&const_BLOCK_CODE_OLD_NORTH_ARABIAN_value, UBLOCK_OLD_NORTH_ARABIAN); + zend_string *const_BLOCK_CODE_OLD_NORTH_ARABIAN_name = zend_string_init_interned("BLOCK_CODE_OLD_NORTH_ARABIAN", sizeof("BLOCK_CODE_OLD_NORTH_ARABIAN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OLD_NORTH_ARABIAN_name, &const_BLOCK_CODE_OLD_NORTH_ARABIAN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OLD_NORTH_ARABIAN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_OLD_PERMIC_value; + ZVAL_LONG(&const_BLOCK_CODE_OLD_PERMIC_value, UBLOCK_OLD_PERMIC); + zend_string *const_BLOCK_CODE_OLD_PERMIC_name = zend_string_init_interned("BLOCK_CODE_OLD_PERMIC", sizeof("BLOCK_CODE_OLD_PERMIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_OLD_PERMIC_name, &const_BLOCK_CODE_OLD_PERMIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_OLD_PERMIC_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_ORNAMENTAL_DINGBATS_value; + ZVAL_LONG(&const_BLOCK_CODE_ORNAMENTAL_DINGBATS_value, UBLOCK_ORNAMENTAL_DINGBATS); + zend_string *const_BLOCK_CODE_ORNAMENTAL_DINGBATS_name = zend_string_init_interned("BLOCK_CODE_ORNAMENTAL_DINGBATS", sizeof("BLOCK_CODE_ORNAMENTAL_DINGBATS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_ORNAMENTAL_DINGBATS_name, &const_BLOCK_CODE_ORNAMENTAL_DINGBATS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_ORNAMENTAL_DINGBATS_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_PAHAWH_HMONG_value; + ZVAL_LONG(&const_BLOCK_CODE_PAHAWH_HMONG_value, UBLOCK_PAHAWH_HMONG); + zend_string *const_BLOCK_CODE_PAHAWH_HMONG_name = zend_string_init_interned("BLOCK_CODE_PAHAWH_HMONG", sizeof("BLOCK_CODE_PAHAWH_HMONG") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PAHAWH_HMONG_name, &const_BLOCK_CODE_PAHAWH_HMONG_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PAHAWH_HMONG_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_PALMYRENE_value; + ZVAL_LONG(&const_BLOCK_CODE_PALMYRENE_value, UBLOCK_PALMYRENE); + zend_string *const_BLOCK_CODE_PALMYRENE_name = zend_string_init_interned("BLOCK_CODE_PALMYRENE", sizeof("BLOCK_CODE_PALMYRENE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PALMYRENE_name, &const_BLOCK_CODE_PALMYRENE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PALMYRENE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_PAU_CIN_HAU_value; + ZVAL_LONG(&const_BLOCK_CODE_PAU_CIN_HAU_value, UBLOCK_PAU_CIN_HAU); + zend_string *const_BLOCK_CODE_PAU_CIN_HAU_name = zend_string_init_interned("BLOCK_CODE_PAU_CIN_HAU", sizeof("BLOCK_CODE_PAU_CIN_HAU") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PAU_CIN_HAU_name, &const_BLOCK_CODE_PAU_CIN_HAU_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PAU_CIN_HAU_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_PSALTER_PAHLAVI_value; + ZVAL_LONG(&const_BLOCK_CODE_PSALTER_PAHLAVI_value, UBLOCK_PSALTER_PAHLAVI); + zend_string *const_BLOCK_CODE_PSALTER_PAHLAVI_name = zend_string_init_interned("BLOCK_CODE_PSALTER_PAHLAVI", sizeof("BLOCK_CODE_PSALTER_PAHLAVI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_PSALTER_PAHLAVI_name, &const_BLOCK_CODE_PSALTER_PAHLAVI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_PSALTER_PAHLAVI_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS_value; + ZVAL_LONG(&const_BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS_value, UBLOCK_SHORTHAND_FORMAT_CONTROLS); + zend_string *const_BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS_name = zend_string_init_interned("BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS", sizeof("BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS_name, &const_BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SHORTHAND_FORMAT_CONTROLS_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_SIDDHAM_value; + ZVAL_LONG(&const_BLOCK_CODE_SIDDHAM_value, UBLOCK_SIDDHAM); + zend_string *const_BLOCK_CODE_SIDDHAM_name = zend_string_init_interned("BLOCK_CODE_SIDDHAM", sizeof("BLOCK_CODE_SIDDHAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SIDDHAM_name, &const_BLOCK_CODE_SIDDHAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SIDDHAM_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS_value; + ZVAL_LONG(&const_BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS_value, UBLOCK_SINHALA_ARCHAIC_NUMBERS); + zend_string *const_BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS_name = zend_string_init_interned("BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS", sizeof("BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS_name, &const_BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SINHALA_ARCHAIC_NUMBERS_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_C_value; + ZVAL_LONG(&const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_C_value, UBLOCK_SUPPLEMENTAL_ARROWS_C); + zend_string *const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_C_name = zend_string_init_interned("BLOCK_CODE_SUPPLEMENTAL_ARROWS_C", sizeof("BLOCK_CODE_SUPPLEMENTAL_ARROWS_C") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_C_name, &const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_C_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_SUPPLEMENTAL_ARROWS_C_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_TIRHUTA_value; + ZVAL_LONG(&const_BLOCK_CODE_TIRHUTA_value, UBLOCK_TIRHUTA); + zend_string *const_BLOCK_CODE_TIRHUTA_name = zend_string_init_interned("BLOCK_CODE_TIRHUTA", sizeof("BLOCK_CODE_TIRHUTA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_TIRHUTA_name, &const_BLOCK_CODE_TIRHUTA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_TIRHUTA_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_BLOCK_CODE_WARANG_CITI_value; + ZVAL_LONG(&const_BLOCK_CODE_WARANG_CITI_value, UBLOCK_WARANG_CITI); + zend_string *const_BLOCK_CODE_WARANG_CITI_name = zend_string_init_interned("BLOCK_CODE_WARANG_CITI", sizeof("BLOCK_CODE_WARANG_CITI") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_WARANG_CITI_name, &const_BLOCK_CODE_WARANG_CITI_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_WARANG_CITI_name); +#endif + + zval const_BLOCK_CODE_COUNT_value; + ZVAL_LONG(&const_BLOCK_CODE_COUNT_value, UBLOCK_COUNT); + zend_string *const_BLOCK_CODE_COUNT_name = zend_string_init_interned("BLOCK_CODE_COUNT", sizeof("BLOCK_CODE_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_COUNT_name, &const_BLOCK_CODE_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_COUNT_name); + + zval const_BLOCK_CODE_INVALID_CODE_value; + ZVAL_LONG(&const_BLOCK_CODE_INVALID_CODE_value, UBLOCK_INVALID_CODE); + zend_string *const_BLOCK_CODE_INVALID_CODE_name = zend_string_init_interned("BLOCK_CODE_INVALID_CODE", sizeof("BLOCK_CODE_INVALID_CODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BLOCK_CODE_INVALID_CODE_name, &const_BLOCK_CODE_INVALID_CODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BLOCK_CODE_INVALID_CODE_name); +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_BPT_NONE_value; + ZVAL_LONG(&const_BPT_NONE_value, U_BPT_NONE); + zend_string *const_BPT_NONE_name = zend_string_init_interned("BPT_NONE", sizeof("BPT_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BPT_NONE_name, &const_BPT_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BPT_NONE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_BPT_OPEN_value; + ZVAL_LONG(&const_BPT_OPEN_value, U_BPT_OPEN); + zend_string *const_BPT_OPEN_name = zend_string_init_interned("BPT_OPEN", sizeof("BPT_OPEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BPT_OPEN_name, &const_BPT_OPEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BPT_OPEN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_BPT_CLOSE_value; + ZVAL_LONG(&const_BPT_CLOSE_value, U_BPT_CLOSE); + zend_string *const_BPT_CLOSE_name = zend_string_init_interned("BPT_CLOSE", sizeof("BPT_CLOSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BPT_CLOSE_name, &const_BPT_CLOSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BPT_CLOSE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_BPT_COUNT_value; + ZVAL_LONG(&const_BPT_COUNT_value, U_BPT_COUNT); + zend_string *const_BPT_COUNT_name = zend_string_init_interned("BPT_COUNT", sizeof("BPT_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_BPT_COUNT_name, &const_BPT_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_BPT_COUNT_name); +#endif + + zval const_EA_NEUTRAL_value; + ZVAL_LONG(&const_EA_NEUTRAL_value, U_EA_NEUTRAL); + zend_string *const_EA_NEUTRAL_name = zend_string_init_interned("EA_NEUTRAL", sizeof("EA_NEUTRAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EA_NEUTRAL_name, &const_EA_NEUTRAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EA_NEUTRAL_name); + + zval const_EA_AMBIGUOUS_value; + ZVAL_LONG(&const_EA_AMBIGUOUS_value, U_EA_AMBIGUOUS); + zend_string *const_EA_AMBIGUOUS_name = zend_string_init_interned("EA_AMBIGUOUS", sizeof("EA_AMBIGUOUS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EA_AMBIGUOUS_name, &const_EA_AMBIGUOUS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EA_AMBIGUOUS_name); + + zval const_EA_HALFWIDTH_value; + ZVAL_LONG(&const_EA_HALFWIDTH_value, U_EA_HALFWIDTH); + zend_string *const_EA_HALFWIDTH_name = zend_string_init_interned("EA_HALFWIDTH", sizeof("EA_HALFWIDTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EA_HALFWIDTH_name, &const_EA_HALFWIDTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EA_HALFWIDTH_name); + + zval const_EA_FULLWIDTH_value; + ZVAL_LONG(&const_EA_FULLWIDTH_value, U_EA_FULLWIDTH); + zend_string *const_EA_FULLWIDTH_name = zend_string_init_interned("EA_FULLWIDTH", sizeof("EA_FULLWIDTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EA_FULLWIDTH_name, &const_EA_FULLWIDTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EA_FULLWIDTH_name); + + zval const_EA_NARROW_value; + ZVAL_LONG(&const_EA_NARROW_value, U_EA_NARROW); + zend_string *const_EA_NARROW_name = zend_string_init_interned("EA_NARROW", sizeof("EA_NARROW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EA_NARROW_name, &const_EA_NARROW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EA_NARROW_name); + + zval const_EA_WIDE_value; + ZVAL_LONG(&const_EA_WIDE_value, U_EA_WIDE); + zend_string *const_EA_WIDE_name = zend_string_init_interned("EA_WIDE", sizeof("EA_WIDE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EA_WIDE_name, &const_EA_WIDE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EA_WIDE_name); + + zval const_EA_COUNT_value; + ZVAL_LONG(&const_EA_COUNT_value, U_EA_COUNT); + zend_string *const_EA_COUNT_name = zend_string_init_interned("EA_COUNT", sizeof("EA_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EA_COUNT_name, &const_EA_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EA_COUNT_name); + + zval const_UNICODE_CHAR_NAME_value; + ZVAL_LONG(&const_UNICODE_CHAR_NAME_value, U_UNICODE_CHAR_NAME); + zend_string *const_UNICODE_CHAR_NAME_name = zend_string_init_interned("UNICODE_CHAR_NAME", sizeof("UNICODE_CHAR_NAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UNICODE_CHAR_NAME_name, &const_UNICODE_CHAR_NAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UNICODE_CHAR_NAME_name); + + zval const_UNICODE_10_CHAR_NAME_value; + ZVAL_LONG(&const_UNICODE_10_CHAR_NAME_value, U_UNICODE_10_CHAR_NAME); + zend_string *const_UNICODE_10_CHAR_NAME_name = zend_string_init_interned("UNICODE_10_CHAR_NAME", sizeof("UNICODE_10_CHAR_NAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_UNICODE_10_CHAR_NAME_name, &const_UNICODE_10_CHAR_NAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_UNICODE_10_CHAR_NAME_name); + + zval const_EXTENDED_CHAR_NAME_value; + ZVAL_LONG(&const_EXTENDED_CHAR_NAME_value, U_EXTENDED_CHAR_NAME); + zend_string *const_EXTENDED_CHAR_NAME_name = zend_string_init_interned("EXTENDED_CHAR_NAME", sizeof("EXTENDED_CHAR_NAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EXTENDED_CHAR_NAME_name, &const_EXTENDED_CHAR_NAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EXTENDED_CHAR_NAME_name); + + zval const_CHAR_NAME_ALIAS_value; + ZVAL_LONG(&const_CHAR_NAME_ALIAS_value, U_CHAR_NAME_ALIAS); + zend_string *const_CHAR_NAME_ALIAS_name = zend_string_init_interned("CHAR_NAME_ALIAS", sizeof("CHAR_NAME_ALIAS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_NAME_ALIAS_name, &const_CHAR_NAME_ALIAS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_NAME_ALIAS_name); + + zval const_CHAR_NAME_CHOICE_COUNT_value; + ZVAL_LONG(&const_CHAR_NAME_CHOICE_COUNT_value, U_CHAR_NAME_CHOICE_COUNT); + zend_string *const_CHAR_NAME_CHOICE_COUNT_name = zend_string_init_interned("CHAR_NAME_CHOICE_COUNT", sizeof("CHAR_NAME_CHOICE_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHAR_NAME_CHOICE_COUNT_name, &const_CHAR_NAME_CHOICE_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHAR_NAME_CHOICE_COUNT_name); + + zval const_SHORT_PROPERTY_NAME_value; + ZVAL_LONG(&const_SHORT_PROPERTY_NAME_value, U_SHORT_PROPERTY_NAME); + zend_string *const_SHORT_PROPERTY_NAME_name = zend_string_init_interned("SHORT_PROPERTY_NAME", sizeof("SHORT_PROPERTY_NAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SHORT_PROPERTY_NAME_name, &const_SHORT_PROPERTY_NAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SHORT_PROPERTY_NAME_name); + + zval const_LONG_PROPERTY_NAME_value; + ZVAL_LONG(&const_LONG_PROPERTY_NAME_value, U_LONG_PROPERTY_NAME); + zend_string *const_LONG_PROPERTY_NAME_name = zend_string_init_interned("LONG_PROPERTY_NAME", sizeof("LONG_PROPERTY_NAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LONG_PROPERTY_NAME_name, &const_LONG_PROPERTY_NAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LONG_PROPERTY_NAME_name); + + zval const_PROPERTY_NAME_CHOICE_COUNT_value; + ZVAL_LONG(&const_PROPERTY_NAME_CHOICE_COUNT_value, U_PROPERTY_NAME_CHOICE_COUNT); + zend_string *const_PROPERTY_NAME_CHOICE_COUNT_name = zend_string_init_interned("PROPERTY_NAME_CHOICE_COUNT", sizeof("PROPERTY_NAME_CHOICE_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_PROPERTY_NAME_CHOICE_COUNT_name, &const_PROPERTY_NAME_CHOICE_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_PROPERTY_NAME_CHOICE_COUNT_name); + + zval const_DT_NONE_value; + ZVAL_LONG(&const_DT_NONE_value, U_DT_NONE); + zend_string *const_DT_NONE_name = zend_string_init_interned("DT_NONE", sizeof("DT_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_NONE_name, &const_DT_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_NONE_name); + + zval const_DT_CANONICAL_value; + ZVAL_LONG(&const_DT_CANONICAL_value, U_DT_CANONICAL); + zend_string *const_DT_CANONICAL_name = zend_string_init_interned("DT_CANONICAL", sizeof("DT_CANONICAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_CANONICAL_name, &const_DT_CANONICAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_CANONICAL_name); + + zval const_DT_COMPAT_value; + ZVAL_LONG(&const_DT_COMPAT_value, U_DT_COMPAT); + zend_string *const_DT_COMPAT_name = zend_string_init_interned("DT_COMPAT", sizeof("DT_COMPAT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_COMPAT_name, &const_DT_COMPAT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_COMPAT_name); + + zval const_DT_CIRCLE_value; + ZVAL_LONG(&const_DT_CIRCLE_value, U_DT_CIRCLE); + zend_string *const_DT_CIRCLE_name = zend_string_init_interned("DT_CIRCLE", sizeof("DT_CIRCLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_CIRCLE_name, &const_DT_CIRCLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_CIRCLE_name); + + zval const_DT_FINAL_value; + ZVAL_LONG(&const_DT_FINAL_value, U_DT_FINAL); + zend_string *const_DT_FINAL_name = zend_string_init_interned("DT_FINAL", sizeof("DT_FINAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_FINAL_name, &const_DT_FINAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_FINAL_name); + + zval const_DT_FONT_value; + ZVAL_LONG(&const_DT_FONT_value, U_DT_FONT); + zend_string *const_DT_FONT_name = zend_string_init_interned("DT_FONT", sizeof("DT_FONT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_FONT_name, &const_DT_FONT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_FONT_name); + + zval const_DT_FRACTION_value; + ZVAL_LONG(&const_DT_FRACTION_value, U_DT_FRACTION); + zend_string *const_DT_FRACTION_name = zend_string_init_interned("DT_FRACTION", sizeof("DT_FRACTION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_FRACTION_name, &const_DT_FRACTION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_FRACTION_name); + + zval const_DT_INITIAL_value; + ZVAL_LONG(&const_DT_INITIAL_value, U_DT_INITIAL); + zend_string *const_DT_INITIAL_name = zend_string_init_interned("DT_INITIAL", sizeof("DT_INITIAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_INITIAL_name, &const_DT_INITIAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_INITIAL_name); + + zval const_DT_ISOLATED_value; + ZVAL_LONG(&const_DT_ISOLATED_value, U_DT_ISOLATED); + zend_string *const_DT_ISOLATED_name = zend_string_init_interned("DT_ISOLATED", sizeof("DT_ISOLATED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_ISOLATED_name, &const_DT_ISOLATED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_ISOLATED_name); + + zval const_DT_MEDIAL_value; + ZVAL_LONG(&const_DT_MEDIAL_value, U_DT_MEDIAL); + zend_string *const_DT_MEDIAL_name = zend_string_init_interned("DT_MEDIAL", sizeof("DT_MEDIAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_MEDIAL_name, &const_DT_MEDIAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_MEDIAL_name); + + zval const_DT_NARROW_value; + ZVAL_LONG(&const_DT_NARROW_value, U_DT_NARROW); + zend_string *const_DT_NARROW_name = zend_string_init_interned("DT_NARROW", sizeof("DT_NARROW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_NARROW_name, &const_DT_NARROW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_NARROW_name); + + zval const_DT_NOBREAK_value; + ZVAL_LONG(&const_DT_NOBREAK_value, U_DT_NOBREAK); + zend_string *const_DT_NOBREAK_name = zend_string_init_interned("DT_NOBREAK", sizeof("DT_NOBREAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_NOBREAK_name, &const_DT_NOBREAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_NOBREAK_name); + + zval const_DT_SMALL_value; + ZVAL_LONG(&const_DT_SMALL_value, U_DT_SMALL); + zend_string *const_DT_SMALL_name = zend_string_init_interned("DT_SMALL", sizeof("DT_SMALL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_SMALL_name, &const_DT_SMALL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_SMALL_name); + + zval const_DT_SQUARE_value; + ZVAL_LONG(&const_DT_SQUARE_value, U_DT_SQUARE); + zend_string *const_DT_SQUARE_name = zend_string_init_interned("DT_SQUARE", sizeof("DT_SQUARE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_SQUARE_name, &const_DT_SQUARE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_SQUARE_name); + + zval const_DT_SUB_value; + ZVAL_LONG(&const_DT_SUB_value, U_DT_SUB); + zend_string *const_DT_SUB_name = zend_string_init_interned("DT_SUB", sizeof("DT_SUB") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_SUB_name, &const_DT_SUB_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_SUB_name); + + zval const_DT_SUPER_value; + ZVAL_LONG(&const_DT_SUPER_value, U_DT_SUPER); + zend_string *const_DT_SUPER_name = zend_string_init_interned("DT_SUPER", sizeof("DT_SUPER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_SUPER_name, &const_DT_SUPER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_SUPER_name); + + zval const_DT_VERTICAL_value; + ZVAL_LONG(&const_DT_VERTICAL_value, U_DT_VERTICAL); + zend_string *const_DT_VERTICAL_name = zend_string_init_interned("DT_VERTICAL", sizeof("DT_VERTICAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_VERTICAL_name, &const_DT_VERTICAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_VERTICAL_name); + + zval const_DT_WIDE_value; + ZVAL_LONG(&const_DT_WIDE_value, U_DT_WIDE); + zend_string *const_DT_WIDE_name = zend_string_init_interned("DT_WIDE", sizeof("DT_WIDE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_WIDE_name, &const_DT_WIDE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_WIDE_name); + + zval const_DT_COUNT_value; + ZVAL_LONG(&const_DT_COUNT_value, U_DT_COUNT); + zend_string *const_DT_COUNT_name = zend_string_init_interned("DT_COUNT", sizeof("DT_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_DT_COUNT_name, &const_DT_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_DT_COUNT_name); + + zval const_JT_NON_JOINING_value; + ZVAL_LONG(&const_JT_NON_JOINING_value, U_JT_NON_JOINING); + zend_string *const_JT_NON_JOINING_name = zend_string_init_interned("JT_NON_JOINING", sizeof("JT_NON_JOINING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JT_NON_JOINING_name, &const_JT_NON_JOINING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JT_NON_JOINING_name); + + zval const_JT_JOIN_CAUSING_value; + ZVAL_LONG(&const_JT_JOIN_CAUSING_value, U_JT_JOIN_CAUSING); + zend_string *const_JT_JOIN_CAUSING_name = zend_string_init_interned("JT_JOIN_CAUSING", sizeof("JT_JOIN_CAUSING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JT_JOIN_CAUSING_name, &const_JT_JOIN_CAUSING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JT_JOIN_CAUSING_name); + + zval const_JT_DUAL_JOINING_value; + ZVAL_LONG(&const_JT_DUAL_JOINING_value, U_JT_DUAL_JOINING); + zend_string *const_JT_DUAL_JOINING_name = zend_string_init_interned("JT_DUAL_JOINING", sizeof("JT_DUAL_JOINING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JT_DUAL_JOINING_name, &const_JT_DUAL_JOINING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JT_DUAL_JOINING_name); + + zval const_JT_LEFT_JOINING_value; + ZVAL_LONG(&const_JT_LEFT_JOINING_value, U_JT_LEFT_JOINING); + zend_string *const_JT_LEFT_JOINING_name = zend_string_init_interned("JT_LEFT_JOINING", sizeof("JT_LEFT_JOINING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JT_LEFT_JOINING_name, &const_JT_LEFT_JOINING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JT_LEFT_JOINING_name); + + zval const_JT_RIGHT_JOINING_value; + ZVAL_LONG(&const_JT_RIGHT_JOINING_value, U_JT_RIGHT_JOINING); + zend_string *const_JT_RIGHT_JOINING_name = zend_string_init_interned("JT_RIGHT_JOINING", sizeof("JT_RIGHT_JOINING") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JT_RIGHT_JOINING_name, &const_JT_RIGHT_JOINING_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JT_RIGHT_JOINING_name); + + zval const_JT_TRANSPARENT_value; + ZVAL_LONG(&const_JT_TRANSPARENT_value, U_JT_TRANSPARENT); + zend_string *const_JT_TRANSPARENT_name = zend_string_init_interned("JT_TRANSPARENT", sizeof("JT_TRANSPARENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JT_TRANSPARENT_name, &const_JT_TRANSPARENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JT_TRANSPARENT_name); + + zval const_JT_COUNT_value; + ZVAL_LONG(&const_JT_COUNT_value, U_JT_COUNT); + zend_string *const_JT_COUNT_name = zend_string_init_interned("JT_COUNT", sizeof("JT_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JT_COUNT_name, &const_JT_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JT_COUNT_name); + + zval const_JG_NO_JOINING_GROUP_value; + ZVAL_LONG(&const_JG_NO_JOINING_GROUP_value, U_JG_NO_JOINING_GROUP); + zend_string *const_JG_NO_JOINING_GROUP_name = zend_string_init_interned("JG_NO_JOINING_GROUP", sizeof("JG_NO_JOINING_GROUP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_NO_JOINING_GROUP_name, &const_JG_NO_JOINING_GROUP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_NO_JOINING_GROUP_name); + + zval const_JG_AIN_value; + ZVAL_LONG(&const_JG_AIN_value, U_JG_AIN); + zend_string *const_JG_AIN_name = zend_string_init_interned("JG_AIN", sizeof("JG_AIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_AIN_name, &const_JG_AIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_AIN_name); + + zval const_JG_ALAPH_value; + ZVAL_LONG(&const_JG_ALAPH_value, U_JG_ALAPH); + zend_string *const_JG_ALAPH_name = zend_string_init_interned("JG_ALAPH", sizeof("JG_ALAPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_ALAPH_name, &const_JG_ALAPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_ALAPH_name); + + zval const_JG_ALEF_value; + ZVAL_LONG(&const_JG_ALEF_value, U_JG_ALEF); + zend_string *const_JG_ALEF_name = zend_string_init_interned("JG_ALEF", sizeof("JG_ALEF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_ALEF_name, &const_JG_ALEF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_ALEF_name); + + zval const_JG_BEH_value; + ZVAL_LONG(&const_JG_BEH_value, U_JG_BEH); + zend_string *const_JG_BEH_name = zend_string_init_interned("JG_BEH", sizeof("JG_BEH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_BEH_name, &const_JG_BEH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_BEH_name); + + zval const_JG_BETH_value; + ZVAL_LONG(&const_JG_BETH_value, U_JG_BETH); + zend_string *const_JG_BETH_name = zend_string_init_interned("JG_BETH", sizeof("JG_BETH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_BETH_name, &const_JG_BETH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_BETH_name); + + zval const_JG_DAL_value; + ZVAL_LONG(&const_JG_DAL_value, U_JG_DAL); + zend_string *const_JG_DAL_name = zend_string_init_interned("JG_DAL", sizeof("JG_DAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_DAL_name, &const_JG_DAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_DAL_name); + + zval const_JG_DALATH_RISH_value; + ZVAL_LONG(&const_JG_DALATH_RISH_value, U_JG_DALATH_RISH); + zend_string *const_JG_DALATH_RISH_name = zend_string_init_interned("JG_DALATH_RISH", sizeof("JG_DALATH_RISH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_DALATH_RISH_name, &const_JG_DALATH_RISH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_DALATH_RISH_name); + + zval const_JG_E_value; + ZVAL_LONG(&const_JG_E_value, U_JG_E); + zend_string *const_JG_E_name = zend_string_init_interned("JG_E", sizeof("JG_E") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_E_name, &const_JG_E_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_E_name); + + zval const_JG_FEH_value; + ZVAL_LONG(&const_JG_FEH_value, U_JG_FEH); + zend_string *const_JG_FEH_name = zend_string_init_interned("JG_FEH", sizeof("JG_FEH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_FEH_name, &const_JG_FEH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_FEH_name); + + zval const_JG_FINAL_SEMKATH_value; + ZVAL_LONG(&const_JG_FINAL_SEMKATH_value, U_JG_FINAL_SEMKATH); + zend_string *const_JG_FINAL_SEMKATH_name = zend_string_init_interned("JG_FINAL_SEMKATH", sizeof("JG_FINAL_SEMKATH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_FINAL_SEMKATH_name, &const_JG_FINAL_SEMKATH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_FINAL_SEMKATH_name); + + zval const_JG_GAF_value; + ZVAL_LONG(&const_JG_GAF_value, U_JG_GAF); + zend_string *const_JG_GAF_name = zend_string_init_interned("JG_GAF", sizeof("JG_GAF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_GAF_name, &const_JG_GAF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_GAF_name); + + zval const_JG_GAMAL_value; + ZVAL_LONG(&const_JG_GAMAL_value, U_JG_GAMAL); + zend_string *const_JG_GAMAL_name = zend_string_init_interned("JG_GAMAL", sizeof("JG_GAMAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_GAMAL_name, &const_JG_GAMAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_GAMAL_name); + + zval const_JG_HAH_value; + ZVAL_LONG(&const_JG_HAH_value, U_JG_HAH); + zend_string *const_JG_HAH_name = zend_string_init_interned("JG_HAH", sizeof("JG_HAH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_HAH_name, &const_JG_HAH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_HAH_name); + + zval const_JG_TEH_MARBUTA_GOAL_value; + ZVAL_LONG(&const_JG_TEH_MARBUTA_GOAL_value, U_JG_TEH_MARBUTA_GOAL); + zend_string *const_JG_TEH_MARBUTA_GOAL_name = zend_string_init_interned("JG_TEH_MARBUTA_GOAL", sizeof("JG_TEH_MARBUTA_GOAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_TEH_MARBUTA_GOAL_name, &const_JG_TEH_MARBUTA_GOAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_TEH_MARBUTA_GOAL_name); + + zval const_JG_HAMZA_ON_HEH_GOAL_value; + ZVAL_LONG(&const_JG_HAMZA_ON_HEH_GOAL_value, U_JG_HAMZA_ON_HEH_GOAL); + zend_string *const_JG_HAMZA_ON_HEH_GOAL_name = zend_string_init_interned("JG_HAMZA_ON_HEH_GOAL", sizeof("JG_HAMZA_ON_HEH_GOAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_HAMZA_ON_HEH_GOAL_name, &const_JG_HAMZA_ON_HEH_GOAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_HAMZA_ON_HEH_GOAL_name); + + zval const_JG_HE_value; + ZVAL_LONG(&const_JG_HE_value, U_JG_HE); + zend_string *const_JG_HE_name = zend_string_init_interned("JG_HE", sizeof("JG_HE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_HE_name, &const_JG_HE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_HE_name); + + zval const_JG_HEH_value; + ZVAL_LONG(&const_JG_HEH_value, U_JG_HEH); + zend_string *const_JG_HEH_name = zend_string_init_interned("JG_HEH", sizeof("JG_HEH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_HEH_name, &const_JG_HEH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_HEH_name); + + zval const_JG_HEH_GOAL_value; + ZVAL_LONG(&const_JG_HEH_GOAL_value, U_JG_HEH_GOAL); + zend_string *const_JG_HEH_GOAL_name = zend_string_init_interned("JG_HEH_GOAL", sizeof("JG_HEH_GOAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_HEH_GOAL_name, &const_JG_HEH_GOAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_HEH_GOAL_name); + + zval const_JG_HETH_value; + ZVAL_LONG(&const_JG_HETH_value, U_JG_HETH); + zend_string *const_JG_HETH_name = zend_string_init_interned("JG_HETH", sizeof("JG_HETH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_HETH_name, &const_JG_HETH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_HETH_name); + + zval const_JG_KAF_value; + ZVAL_LONG(&const_JG_KAF_value, U_JG_KAF); + zend_string *const_JG_KAF_name = zend_string_init_interned("JG_KAF", sizeof("JG_KAF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_KAF_name, &const_JG_KAF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_KAF_name); + + zval const_JG_KAPH_value; + ZVAL_LONG(&const_JG_KAPH_value, U_JG_KAPH); + zend_string *const_JG_KAPH_name = zend_string_init_interned("JG_KAPH", sizeof("JG_KAPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_KAPH_name, &const_JG_KAPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_KAPH_name); + + zval const_JG_KNOTTED_HEH_value; + ZVAL_LONG(&const_JG_KNOTTED_HEH_value, U_JG_KNOTTED_HEH); + zend_string *const_JG_KNOTTED_HEH_name = zend_string_init_interned("JG_KNOTTED_HEH", sizeof("JG_KNOTTED_HEH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_KNOTTED_HEH_name, &const_JG_KNOTTED_HEH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_KNOTTED_HEH_name); + + zval const_JG_LAM_value; + ZVAL_LONG(&const_JG_LAM_value, U_JG_LAM); + zend_string *const_JG_LAM_name = zend_string_init_interned("JG_LAM", sizeof("JG_LAM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_LAM_name, &const_JG_LAM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_LAM_name); + + zval const_JG_LAMADH_value; + ZVAL_LONG(&const_JG_LAMADH_value, U_JG_LAMADH); + zend_string *const_JG_LAMADH_name = zend_string_init_interned("JG_LAMADH", sizeof("JG_LAMADH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_LAMADH_name, &const_JG_LAMADH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_LAMADH_name); + + zval const_JG_MEEM_value; + ZVAL_LONG(&const_JG_MEEM_value, U_JG_MEEM); + zend_string *const_JG_MEEM_name = zend_string_init_interned("JG_MEEM", sizeof("JG_MEEM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MEEM_name, &const_JG_MEEM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MEEM_name); + + zval const_JG_MIM_value; + ZVAL_LONG(&const_JG_MIM_value, U_JG_MIM); + zend_string *const_JG_MIM_name = zend_string_init_interned("JG_MIM", sizeof("JG_MIM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MIM_name, &const_JG_MIM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MIM_name); + + zval const_JG_NOON_value; + ZVAL_LONG(&const_JG_NOON_value, U_JG_NOON); + zend_string *const_JG_NOON_name = zend_string_init_interned("JG_NOON", sizeof("JG_NOON") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_NOON_name, &const_JG_NOON_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_NOON_name); + + zval const_JG_NUN_value; + ZVAL_LONG(&const_JG_NUN_value, U_JG_NUN); + zend_string *const_JG_NUN_name = zend_string_init_interned("JG_NUN", sizeof("JG_NUN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_NUN_name, &const_JG_NUN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_NUN_name); + + zval const_JG_PE_value; + ZVAL_LONG(&const_JG_PE_value, U_JG_PE); + zend_string *const_JG_PE_name = zend_string_init_interned("JG_PE", sizeof("JG_PE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_PE_name, &const_JG_PE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_PE_name); + + zval const_JG_QAF_value; + ZVAL_LONG(&const_JG_QAF_value, U_JG_QAF); + zend_string *const_JG_QAF_name = zend_string_init_interned("JG_QAF", sizeof("JG_QAF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_QAF_name, &const_JG_QAF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_QAF_name); + + zval const_JG_QAPH_value; + ZVAL_LONG(&const_JG_QAPH_value, U_JG_QAPH); + zend_string *const_JG_QAPH_name = zend_string_init_interned("JG_QAPH", sizeof("JG_QAPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_QAPH_name, &const_JG_QAPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_QAPH_name); + + zval const_JG_REH_value; + ZVAL_LONG(&const_JG_REH_value, U_JG_REH); + zend_string *const_JG_REH_name = zend_string_init_interned("JG_REH", sizeof("JG_REH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_REH_name, &const_JG_REH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_REH_name); + + zval const_JG_REVERSED_PE_value; + ZVAL_LONG(&const_JG_REVERSED_PE_value, U_JG_REVERSED_PE); + zend_string *const_JG_REVERSED_PE_name = zend_string_init_interned("JG_REVERSED_PE", sizeof("JG_REVERSED_PE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_REVERSED_PE_name, &const_JG_REVERSED_PE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_REVERSED_PE_name); + + zval const_JG_SAD_value; + ZVAL_LONG(&const_JG_SAD_value, U_JG_SAD); + zend_string *const_JG_SAD_name = zend_string_init_interned("JG_SAD", sizeof("JG_SAD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_SAD_name, &const_JG_SAD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_SAD_name); + + zval const_JG_SADHE_value; + ZVAL_LONG(&const_JG_SADHE_value, U_JG_SADHE); + zend_string *const_JG_SADHE_name = zend_string_init_interned("JG_SADHE", sizeof("JG_SADHE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_SADHE_name, &const_JG_SADHE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_SADHE_name); + + zval const_JG_SEEN_value; + ZVAL_LONG(&const_JG_SEEN_value, U_JG_SEEN); + zend_string *const_JG_SEEN_name = zend_string_init_interned("JG_SEEN", sizeof("JG_SEEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_SEEN_name, &const_JG_SEEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_SEEN_name); + + zval const_JG_SEMKATH_value; + ZVAL_LONG(&const_JG_SEMKATH_value, U_JG_SEMKATH); + zend_string *const_JG_SEMKATH_name = zend_string_init_interned("JG_SEMKATH", sizeof("JG_SEMKATH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_SEMKATH_name, &const_JG_SEMKATH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_SEMKATH_name); + + zval const_JG_SHIN_value; + ZVAL_LONG(&const_JG_SHIN_value, U_JG_SHIN); + zend_string *const_JG_SHIN_name = zend_string_init_interned("JG_SHIN", sizeof("JG_SHIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_SHIN_name, &const_JG_SHIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_SHIN_name); + + zval const_JG_SWASH_KAF_value; + ZVAL_LONG(&const_JG_SWASH_KAF_value, U_JG_SWASH_KAF); + zend_string *const_JG_SWASH_KAF_name = zend_string_init_interned("JG_SWASH_KAF", sizeof("JG_SWASH_KAF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_SWASH_KAF_name, &const_JG_SWASH_KAF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_SWASH_KAF_name); + + zval const_JG_SYRIAC_WAW_value; + ZVAL_LONG(&const_JG_SYRIAC_WAW_value, U_JG_SYRIAC_WAW); + zend_string *const_JG_SYRIAC_WAW_name = zend_string_init_interned("JG_SYRIAC_WAW", sizeof("JG_SYRIAC_WAW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_SYRIAC_WAW_name, &const_JG_SYRIAC_WAW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_SYRIAC_WAW_name); + + zval const_JG_TAH_value; + ZVAL_LONG(&const_JG_TAH_value, U_JG_TAH); + zend_string *const_JG_TAH_name = zend_string_init_interned("JG_TAH", sizeof("JG_TAH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_TAH_name, &const_JG_TAH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_TAH_name); + + zval const_JG_TAW_value; + ZVAL_LONG(&const_JG_TAW_value, U_JG_TAW); + zend_string *const_JG_TAW_name = zend_string_init_interned("JG_TAW", sizeof("JG_TAW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_TAW_name, &const_JG_TAW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_TAW_name); + + zval const_JG_TEH_MARBUTA_value; + ZVAL_LONG(&const_JG_TEH_MARBUTA_value, U_JG_TEH_MARBUTA); + zend_string *const_JG_TEH_MARBUTA_name = zend_string_init_interned("JG_TEH_MARBUTA", sizeof("JG_TEH_MARBUTA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_TEH_MARBUTA_name, &const_JG_TEH_MARBUTA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_TEH_MARBUTA_name); + + zval const_JG_TETH_value; + ZVAL_LONG(&const_JG_TETH_value, U_JG_TETH); + zend_string *const_JG_TETH_name = zend_string_init_interned("JG_TETH", sizeof("JG_TETH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_TETH_name, &const_JG_TETH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_TETH_name); + + zval const_JG_WAW_value; + ZVAL_LONG(&const_JG_WAW_value, U_JG_WAW); + zend_string *const_JG_WAW_name = zend_string_init_interned("JG_WAW", sizeof("JG_WAW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_WAW_name, &const_JG_WAW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_WAW_name); + + zval const_JG_YEH_value; + ZVAL_LONG(&const_JG_YEH_value, U_JG_YEH); + zend_string *const_JG_YEH_name = zend_string_init_interned("JG_YEH", sizeof("JG_YEH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_YEH_name, &const_JG_YEH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_YEH_name); + + zval const_JG_YEH_BARREE_value; + ZVAL_LONG(&const_JG_YEH_BARREE_value, U_JG_YEH_BARREE); + zend_string *const_JG_YEH_BARREE_name = zend_string_init_interned("JG_YEH_BARREE", sizeof("JG_YEH_BARREE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_YEH_BARREE_name, &const_JG_YEH_BARREE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_YEH_BARREE_name); + + zval const_JG_YEH_WITH_TAIL_value; + ZVAL_LONG(&const_JG_YEH_WITH_TAIL_value, U_JG_YEH_WITH_TAIL); + zend_string *const_JG_YEH_WITH_TAIL_name = zend_string_init_interned("JG_YEH_WITH_TAIL", sizeof("JG_YEH_WITH_TAIL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_YEH_WITH_TAIL_name, &const_JG_YEH_WITH_TAIL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_YEH_WITH_TAIL_name); + + zval const_JG_YUDH_value; + ZVAL_LONG(&const_JG_YUDH_value, U_JG_YUDH); + zend_string *const_JG_YUDH_name = zend_string_init_interned("JG_YUDH", sizeof("JG_YUDH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_YUDH_name, &const_JG_YUDH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_YUDH_name); + + zval const_JG_YUDH_HE_value; + ZVAL_LONG(&const_JG_YUDH_HE_value, U_JG_YUDH_HE); + zend_string *const_JG_YUDH_HE_name = zend_string_init_interned("JG_YUDH_HE", sizeof("JG_YUDH_HE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_YUDH_HE_name, &const_JG_YUDH_HE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_YUDH_HE_name); + + zval const_JG_ZAIN_value; + ZVAL_LONG(&const_JG_ZAIN_value, U_JG_ZAIN); + zend_string *const_JG_ZAIN_name = zend_string_init_interned("JG_ZAIN", sizeof("JG_ZAIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_ZAIN_name, &const_JG_ZAIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_ZAIN_name); + + zval const_JG_FE_value; + ZVAL_LONG(&const_JG_FE_value, U_JG_FE); + zend_string *const_JG_FE_name = zend_string_init_interned("JG_FE", sizeof("JG_FE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_FE_name, &const_JG_FE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_FE_name); + + zval const_JG_KHAPH_value; + ZVAL_LONG(&const_JG_KHAPH_value, U_JG_KHAPH); + zend_string *const_JG_KHAPH_name = zend_string_init_interned("JG_KHAPH", sizeof("JG_KHAPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_KHAPH_name, &const_JG_KHAPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_KHAPH_name); + + zval const_JG_ZHAIN_value; + ZVAL_LONG(&const_JG_ZHAIN_value, U_JG_ZHAIN); + zend_string *const_JG_ZHAIN_name = zend_string_init_interned("JG_ZHAIN", sizeof("JG_ZHAIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_ZHAIN_name, &const_JG_ZHAIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_ZHAIN_name); + + zval const_JG_BURUSHASKI_YEH_BARREE_value; + ZVAL_LONG(&const_JG_BURUSHASKI_YEH_BARREE_value, U_JG_BURUSHASKI_YEH_BARREE); + zend_string *const_JG_BURUSHASKI_YEH_BARREE_name = zend_string_init_interned("JG_BURUSHASKI_YEH_BARREE", sizeof("JG_BURUSHASKI_YEH_BARREE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_BURUSHASKI_YEH_BARREE_name, &const_JG_BURUSHASKI_YEH_BARREE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_BURUSHASKI_YEH_BARREE_name); + + zval const_JG_FARSI_YEH_value; + ZVAL_LONG(&const_JG_FARSI_YEH_value, U_JG_FARSI_YEH); + zend_string *const_JG_FARSI_YEH_name = zend_string_init_interned("JG_FARSI_YEH", sizeof("JG_FARSI_YEH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_FARSI_YEH_name, &const_JG_FARSI_YEH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_FARSI_YEH_name); + + zval const_JG_NYA_value; + ZVAL_LONG(&const_JG_NYA_value, U_JG_NYA); + zend_string *const_JG_NYA_name = zend_string_init_interned("JG_NYA", sizeof("JG_NYA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_NYA_name, &const_JG_NYA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_NYA_name); + + zval const_JG_ROHINGYA_YEH_value; + ZVAL_LONG(&const_JG_ROHINGYA_YEH_value, U_JG_ROHINGYA_YEH); + zend_string *const_JG_ROHINGYA_YEH_name = zend_string_init_interned("JG_ROHINGYA_YEH", sizeof("JG_ROHINGYA_YEH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_ROHINGYA_YEH_name, &const_JG_ROHINGYA_YEH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_ROHINGYA_YEH_name); +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_ALEPH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_ALEPH_value, U_JG_MANICHAEAN_ALEPH); + zend_string *const_JG_MANICHAEAN_ALEPH_name = zend_string_init_interned("JG_MANICHAEAN_ALEPH", sizeof("JG_MANICHAEAN_ALEPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_ALEPH_name, &const_JG_MANICHAEAN_ALEPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_ALEPH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_AYIN_value; + ZVAL_LONG(&const_JG_MANICHAEAN_AYIN_value, U_JG_MANICHAEAN_AYIN); + zend_string *const_JG_MANICHAEAN_AYIN_name = zend_string_init_interned("JG_MANICHAEAN_AYIN", sizeof("JG_MANICHAEAN_AYIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_AYIN_name, &const_JG_MANICHAEAN_AYIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_AYIN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_BETH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_BETH_value, U_JG_MANICHAEAN_BETH); + zend_string *const_JG_MANICHAEAN_BETH_name = zend_string_init_interned("JG_MANICHAEAN_BETH", sizeof("JG_MANICHAEAN_BETH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_BETH_name, &const_JG_MANICHAEAN_BETH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_BETH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_DALETH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_DALETH_value, U_JG_MANICHAEAN_DALETH); + zend_string *const_JG_MANICHAEAN_DALETH_name = zend_string_init_interned("JG_MANICHAEAN_DALETH", sizeof("JG_MANICHAEAN_DALETH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_DALETH_name, &const_JG_MANICHAEAN_DALETH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_DALETH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_DHAMEDH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_DHAMEDH_value, U_JG_MANICHAEAN_DHAMEDH); + zend_string *const_JG_MANICHAEAN_DHAMEDH_name = zend_string_init_interned("JG_MANICHAEAN_DHAMEDH", sizeof("JG_MANICHAEAN_DHAMEDH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_DHAMEDH_name, &const_JG_MANICHAEAN_DHAMEDH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_DHAMEDH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_FIVE_value; + ZVAL_LONG(&const_JG_MANICHAEAN_FIVE_value, U_JG_MANICHAEAN_FIVE); + zend_string *const_JG_MANICHAEAN_FIVE_name = zend_string_init_interned("JG_MANICHAEAN_FIVE", sizeof("JG_MANICHAEAN_FIVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_FIVE_name, &const_JG_MANICHAEAN_FIVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_FIVE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_GIMEL_value; + ZVAL_LONG(&const_JG_MANICHAEAN_GIMEL_value, U_JG_MANICHAEAN_GIMEL); + zend_string *const_JG_MANICHAEAN_GIMEL_name = zend_string_init_interned("JG_MANICHAEAN_GIMEL", sizeof("JG_MANICHAEAN_GIMEL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_GIMEL_name, &const_JG_MANICHAEAN_GIMEL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_GIMEL_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_HETH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_HETH_value, U_JG_MANICHAEAN_HETH); + zend_string *const_JG_MANICHAEAN_HETH_name = zend_string_init_interned("JG_MANICHAEAN_HETH", sizeof("JG_MANICHAEAN_HETH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_HETH_name, &const_JG_MANICHAEAN_HETH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_HETH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_HUNDRED_value; + ZVAL_LONG(&const_JG_MANICHAEAN_HUNDRED_value, U_JG_MANICHAEAN_HUNDRED); + zend_string *const_JG_MANICHAEAN_HUNDRED_name = zend_string_init_interned("JG_MANICHAEAN_HUNDRED", sizeof("JG_MANICHAEAN_HUNDRED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_HUNDRED_name, &const_JG_MANICHAEAN_HUNDRED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_HUNDRED_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_KAPH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_KAPH_value, U_JG_MANICHAEAN_KAPH); + zend_string *const_JG_MANICHAEAN_KAPH_name = zend_string_init_interned("JG_MANICHAEAN_KAPH", sizeof("JG_MANICHAEAN_KAPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_KAPH_name, &const_JG_MANICHAEAN_KAPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_KAPH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_LAMEDH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_LAMEDH_value, U_JG_MANICHAEAN_LAMEDH); + zend_string *const_JG_MANICHAEAN_LAMEDH_name = zend_string_init_interned("JG_MANICHAEAN_LAMEDH", sizeof("JG_MANICHAEAN_LAMEDH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_LAMEDH_name, &const_JG_MANICHAEAN_LAMEDH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_LAMEDH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_MEM_value; + ZVAL_LONG(&const_JG_MANICHAEAN_MEM_value, U_JG_MANICHAEAN_MEM); + zend_string *const_JG_MANICHAEAN_MEM_name = zend_string_init_interned("JG_MANICHAEAN_MEM", sizeof("JG_MANICHAEAN_MEM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_MEM_name, &const_JG_MANICHAEAN_MEM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_MEM_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_NUN_value; + ZVAL_LONG(&const_JG_MANICHAEAN_NUN_value, U_JG_MANICHAEAN_NUN); + zend_string *const_JG_MANICHAEAN_NUN_name = zend_string_init_interned("JG_MANICHAEAN_NUN", sizeof("JG_MANICHAEAN_NUN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_NUN_name, &const_JG_MANICHAEAN_NUN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_NUN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_ONE_value; + ZVAL_LONG(&const_JG_MANICHAEAN_ONE_value, U_JG_MANICHAEAN_ONE); + zend_string *const_JG_MANICHAEAN_ONE_name = zend_string_init_interned("JG_MANICHAEAN_ONE", sizeof("JG_MANICHAEAN_ONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_ONE_name, &const_JG_MANICHAEAN_ONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_ONE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_PE_value; + ZVAL_LONG(&const_JG_MANICHAEAN_PE_value, U_JG_MANICHAEAN_PE); + zend_string *const_JG_MANICHAEAN_PE_name = zend_string_init_interned("JG_MANICHAEAN_PE", sizeof("JG_MANICHAEAN_PE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_PE_name, &const_JG_MANICHAEAN_PE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_PE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_QOPH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_QOPH_value, U_JG_MANICHAEAN_QOPH); + zend_string *const_JG_MANICHAEAN_QOPH_name = zend_string_init_interned("JG_MANICHAEAN_QOPH", sizeof("JG_MANICHAEAN_QOPH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_QOPH_name, &const_JG_MANICHAEAN_QOPH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_QOPH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_RESH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_RESH_value, U_JG_MANICHAEAN_RESH); + zend_string *const_JG_MANICHAEAN_RESH_name = zend_string_init_interned("JG_MANICHAEAN_RESH", sizeof("JG_MANICHAEAN_RESH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_RESH_name, &const_JG_MANICHAEAN_RESH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_RESH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_SADHE_value; + ZVAL_LONG(&const_JG_MANICHAEAN_SADHE_value, U_JG_MANICHAEAN_SADHE); + zend_string *const_JG_MANICHAEAN_SADHE_name = zend_string_init_interned("JG_MANICHAEAN_SADHE", sizeof("JG_MANICHAEAN_SADHE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_SADHE_name, &const_JG_MANICHAEAN_SADHE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_SADHE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_SAMEKH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_SAMEKH_value, U_JG_MANICHAEAN_SAMEKH); + zend_string *const_JG_MANICHAEAN_SAMEKH_name = zend_string_init_interned("JG_MANICHAEAN_SAMEKH", sizeof("JG_MANICHAEAN_SAMEKH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_SAMEKH_name, &const_JG_MANICHAEAN_SAMEKH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_SAMEKH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_TAW_value; + ZVAL_LONG(&const_JG_MANICHAEAN_TAW_value, U_JG_MANICHAEAN_TAW); + zend_string *const_JG_MANICHAEAN_TAW_name = zend_string_init_interned("JG_MANICHAEAN_TAW", sizeof("JG_MANICHAEAN_TAW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_TAW_name, &const_JG_MANICHAEAN_TAW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_TAW_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_TEN_value; + ZVAL_LONG(&const_JG_MANICHAEAN_TEN_value, U_JG_MANICHAEAN_TEN); + zend_string *const_JG_MANICHAEAN_TEN_name = zend_string_init_interned("JG_MANICHAEAN_TEN", sizeof("JG_MANICHAEAN_TEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_TEN_name, &const_JG_MANICHAEAN_TEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_TEN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_TETH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_TETH_value, U_JG_MANICHAEAN_TETH); + zend_string *const_JG_MANICHAEAN_TETH_name = zend_string_init_interned("JG_MANICHAEAN_TETH", sizeof("JG_MANICHAEAN_TETH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_TETH_name, &const_JG_MANICHAEAN_TETH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_TETH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_THAMEDH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_THAMEDH_value, U_JG_MANICHAEAN_THAMEDH); + zend_string *const_JG_MANICHAEAN_THAMEDH_name = zend_string_init_interned("JG_MANICHAEAN_THAMEDH", sizeof("JG_MANICHAEAN_THAMEDH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_THAMEDH_name, &const_JG_MANICHAEAN_THAMEDH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_THAMEDH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_TWENTY_value; + ZVAL_LONG(&const_JG_MANICHAEAN_TWENTY_value, U_JG_MANICHAEAN_TWENTY); + zend_string *const_JG_MANICHAEAN_TWENTY_name = zend_string_init_interned("JG_MANICHAEAN_TWENTY", sizeof("JG_MANICHAEAN_TWENTY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_TWENTY_name, &const_JG_MANICHAEAN_TWENTY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_TWENTY_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_WAW_value; + ZVAL_LONG(&const_JG_MANICHAEAN_WAW_value, U_JG_MANICHAEAN_WAW); + zend_string *const_JG_MANICHAEAN_WAW_name = zend_string_init_interned("JG_MANICHAEAN_WAW", sizeof("JG_MANICHAEAN_WAW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_WAW_name, &const_JG_MANICHAEAN_WAW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_WAW_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_YODH_value; + ZVAL_LONG(&const_JG_MANICHAEAN_YODH_value, U_JG_MANICHAEAN_YODH); + zend_string *const_JG_MANICHAEAN_YODH_name = zend_string_init_interned("JG_MANICHAEAN_YODH", sizeof("JG_MANICHAEAN_YODH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_YODH_name, &const_JG_MANICHAEAN_YODH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_YODH_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_MANICHAEAN_ZAYIN_value; + ZVAL_LONG(&const_JG_MANICHAEAN_ZAYIN_value, U_JG_MANICHAEAN_ZAYIN); + zend_string *const_JG_MANICHAEAN_ZAYIN_name = zend_string_init_interned("JG_MANICHAEAN_ZAYIN", sizeof("JG_MANICHAEAN_ZAYIN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_MANICHAEAN_ZAYIN_name, &const_JG_MANICHAEAN_ZAYIN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_MANICHAEAN_ZAYIN_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 54 + + zval const_JG_STRAIGHT_WAW_value; + ZVAL_LONG(&const_JG_STRAIGHT_WAW_value, U_JG_STRAIGHT_WAW); + zend_string *const_JG_STRAIGHT_WAW_name = zend_string_init_interned("JG_STRAIGHT_WAW", sizeof("JG_STRAIGHT_WAW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_STRAIGHT_WAW_name, &const_JG_STRAIGHT_WAW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_STRAIGHT_WAW_name); +#endif + + zval const_JG_COUNT_value; + ZVAL_LONG(&const_JG_COUNT_value, U_JG_COUNT); + zend_string *const_JG_COUNT_name = zend_string_init_interned("JG_COUNT", sizeof("JG_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_JG_COUNT_name, &const_JG_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_JG_COUNT_name); + + zval const_GCB_OTHER_value; + ZVAL_LONG(&const_GCB_OTHER_value, U_GCB_OTHER); + zend_string *const_GCB_OTHER_name = zend_string_init_interned("GCB_OTHER", sizeof("GCB_OTHER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_OTHER_name, &const_GCB_OTHER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_OTHER_name); + + zval const_GCB_CONTROL_value; + ZVAL_LONG(&const_GCB_CONTROL_value, U_GCB_CONTROL); + zend_string *const_GCB_CONTROL_name = zend_string_init_interned("GCB_CONTROL", sizeof("GCB_CONTROL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_CONTROL_name, &const_GCB_CONTROL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_CONTROL_name); + + zval const_GCB_CR_value; + ZVAL_LONG(&const_GCB_CR_value, U_GCB_CR); + zend_string *const_GCB_CR_name = zend_string_init_interned("GCB_CR", sizeof("GCB_CR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_CR_name, &const_GCB_CR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_CR_name); + + zval const_GCB_EXTEND_value; + ZVAL_LONG(&const_GCB_EXTEND_value, U_GCB_EXTEND); + zend_string *const_GCB_EXTEND_name = zend_string_init_interned("GCB_EXTEND", sizeof("GCB_EXTEND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_EXTEND_name, &const_GCB_EXTEND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_EXTEND_name); + + zval const_GCB_L_value; + ZVAL_LONG(&const_GCB_L_value, U_GCB_L); + zend_string *const_GCB_L_name = zend_string_init_interned("GCB_L", sizeof("GCB_L") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_L_name, &const_GCB_L_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_L_name); + + zval const_GCB_LF_value; + ZVAL_LONG(&const_GCB_LF_value, U_GCB_LF); + zend_string *const_GCB_LF_name = zend_string_init_interned("GCB_LF", sizeof("GCB_LF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_LF_name, &const_GCB_LF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_LF_name); + + zval const_GCB_LV_value; + ZVAL_LONG(&const_GCB_LV_value, U_GCB_LV); + zend_string *const_GCB_LV_name = zend_string_init_interned("GCB_LV", sizeof("GCB_LV") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_LV_name, &const_GCB_LV_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_LV_name); + + zval const_GCB_LVT_value; + ZVAL_LONG(&const_GCB_LVT_value, U_GCB_LVT); + zend_string *const_GCB_LVT_name = zend_string_init_interned("GCB_LVT", sizeof("GCB_LVT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_LVT_name, &const_GCB_LVT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_LVT_name); + + zval const_GCB_T_value; + ZVAL_LONG(&const_GCB_T_value, U_GCB_T); + zend_string *const_GCB_T_name = zend_string_init_interned("GCB_T", sizeof("GCB_T") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_T_name, &const_GCB_T_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_T_name); + + zval const_GCB_V_value; + ZVAL_LONG(&const_GCB_V_value, U_GCB_V); + zend_string *const_GCB_V_name = zend_string_init_interned("GCB_V", sizeof("GCB_V") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_V_name, &const_GCB_V_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_V_name); + + zval const_GCB_SPACING_MARK_value; + ZVAL_LONG(&const_GCB_SPACING_MARK_value, U_GCB_SPACING_MARK); + zend_string *const_GCB_SPACING_MARK_name = zend_string_init_interned("GCB_SPACING_MARK", sizeof("GCB_SPACING_MARK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_SPACING_MARK_name, &const_GCB_SPACING_MARK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_SPACING_MARK_name); + + zval const_GCB_PREPEND_value; + ZVAL_LONG(&const_GCB_PREPEND_value, U_GCB_PREPEND); + zend_string *const_GCB_PREPEND_name = zend_string_init_interned("GCB_PREPEND", sizeof("GCB_PREPEND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_PREPEND_name, &const_GCB_PREPEND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_PREPEND_name); + + zval const_GCB_REGIONAL_INDICATOR_value; + ZVAL_LONG(&const_GCB_REGIONAL_INDICATOR_value, U_GCB_REGIONAL_INDICATOR); + zend_string *const_GCB_REGIONAL_INDICATOR_name = zend_string_init_interned("GCB_REGIONAL_INDICATOR", sizeof("GCB_REGIONAL_INDICATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_REGIONAL_INDICATOR_name, &const_GCB_REGIONAL_INDICATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_REGIONAL_INDICATOR_name); + + zval const_GCB_COUNT_value; + ZVAL_LONG(&const_GCB_COUNT_value, U_GCB_COUNT); + zend_string *const_GCB_COUNT_name = zend_string_init_interned("GCB_COUNT", sizeof("GCB_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_GCB_COUNT_name, &const_GCB_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_GCB_COUNT_name); + + zval const_WB_OTHER_value; + ZVAL_LONG(&const_WB_OTHER_value, U_WB_OTHER); + zend_string *const_WB_OTHER_name = zend_string_init_interned("WB_OTHER", sizeof("WB_OTHER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_OTHER_name, &const_WB_OTHER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_OTHER_name); + + zval const_WB_ALETTER_value; + ZVAL_LONG(&const_WB_ALETTER_value, U_WB_ALETTER); + zend_string *const_WB_ALETTER_name = zend_string_init_interned("WB_ALETTER", sizeof("WB_ALETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_ALETTER_name, &const_WB_ALETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_ALETTER_name); + + zval const_WB_FORMAT_value; + ZVAL_LONG(&const_WB_FORMAT_value, U_WB_FORMAT); + zend_string *const_WB_FORMAT_name = zend_string_init_interned("WB_FORMAT", sizeof("WB_FORMAT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_FORMAT_name, &const_WB_FORMAT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_FORMAT_name); + + zval const_WB_KATAKANA_value; + ZVAL_LONG(&const_WB_KATAKANA_value, U_WB_KATAKANA); + zend_string *const_WB_KATAKANA_name = zend_string_init_interned("WB_KATAKANA", sizeof("WB_KATAKANA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_KATAKANA_name, &const_WB_KATAKANA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_KATAKANA_name); + + zval const_WB_MIDLETTER_value; + ZVAL_LONG(&const_WB_MIDLETTER_value, U_WB_MIDLETTER); + zend_string *const_WB_MIDLETTER_name = zend_string_init_interned("WB_MIDLETTER", sizeof("WB_MIDLETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_MIDLETTER_name, &const_WB_MIDLETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_MIDLETTER_name); + + zval const_WB_MIDNUM_value; + ZVAL_LONG(&const_WB_MIDNUM_value, U_WB_MIDNUM); + zend_string *const_WB_MIDNUM_name = zend_string_init_interned("WB_MIDNUM", sizeof("WB_MIDNUM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_MIDNUM_name, &const_WB_MIDNUM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_MIDNUM_name); + + zval const_WB_NUMERIC_value; + ZVAL_LONG(&const_WB_NUMERIC_value, U_WB_NUMERIC); + zend_string *const_WB_NUMERIC_name = zend_string_init_interned("WB_NUMERIC", sizeof("WB_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_NUMERIC_name, &const_WB_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_NUMERIC_name); + + zval const_WB_EXTENDNUMLET_value; + ZVAL_LONG(&const_WB_EXTENDNUMLET_value, U_WB_EXTENDNUMLET); + zend_string *const_WB_EXTENDNUMLET_name = zend_string_init_interned("WB_EXTENDNUMLET", sizeof("WB_EXTENDNUMLET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_EXTENDNUMLET_name, &const_WB_EXTENDNUMLET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_EXTENDNUMLET_name); + + zval const_WB_CR_value; + ZVAL_LONG(&const_WB_CR_value, U_WB_CR); + zend_string *const_WB_CR_name = zend_string_init_interned("WB_CR", sizeof("WB_CR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_CR_name, &const_WB_CR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_CR_name); + + zval const_WB_EXTEND_value; + ZVAL_LONG(&const_WB_EXTEND_value, U_WB_EXTEND); + zend_string *const_WB_EXTEND_name = zend_string_init_interned("WB_EXTEND", sizeof("WB_EXTEND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_EXTEND_name, &const_WB_EXTEND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_EXTEND_name); + + zval const_WB_LF_value; + ZVAL_LONG(&const_WB_LF_value, U_WB_LF); + zend_string *const_WB_LF_name = zend_string_init_interned("WB_LF", sizeof("WB_LF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_LF_name, &const_WB_LF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_LF_name); + + zval const_WB_MIDNUMLET_value; + ZVAL_LONG(&const_WB_MIDNUMLET_value, U_WB_MIDNUMLET); + zend_string *const_WB_MIDNUMLET_name = zend_string_init_interned("WB_MIDNUMLET", sizeof("WB_MIDNUMLET") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_MIDNUMLET_name, &const_WB_MIDNUMLET_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_MIDNUMLET_name); + + zval const_WB_NEWLINE_value; + ZVAL_LONG(&const_WB_NEWLINE_value, U_WB_NEWLINE); + zend_string *const_WB_NEWLINE_name = zend_string_init_interned("WB_NEWLINE", sizeof("WB_NEWLINE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_NEWLINE_name, &const_WB_NEWLINE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_NEWLINE_name); + + zval const_WB_REGIONAL_INDICATOR_value; + ZVAL_LONG(&const_WB_REGIONAL_INDICATOR_value, U_WB_REGIONAL_INDICATOR); + zend_string *const_WB_REGIONAL_INDICATOR_name = zend_string_init_interned("WB_REGIONAL_INDICATOR", sizeof("WB_REGIONAL_INDICATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_REGIONAL_INDICATOR_name, &const_WB_REGIONAL_INDICATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_REGIONAL_INDICATOR_name); +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_WB_HEBREW_LETTER_value; + ZVAL_LONG(&const_WB_HEBREW_LETTER_value, U_WB_HEBREW_LETTER); + zend_string *const_WB_HEBREW_LETTER_name = zend_string_init_interned("WB_HEBREW_LETTER", sizeof("WB_HEBREW_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_HEBREW_LETTER_name, &const_WB_HEBREW_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_HEBREW_LETTER_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_WB_SINGLE_QUOTE_value; + ZVAL_LONG(&const_WB_SINGLE_QUOTE_value, U_WB_SINGLE_QUOTE); + zend_string *const_WB_SINGLE_QUOTE_name = zend_string_init_interned("WB_SINGLE_QUOTE", sizeof("WB_SINGLE_QUOTE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_SINGLE_QUOTE_name, &const_WB_SINGLE_QUOTE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_SINGLE_QUOTE_name); +#endif +#if U_ICU_VERSION_MAJOR_NUM >= 52 + + zval const_WB_DOUBLE_QUOTE_value; + ZVAL_LONG(&const_WB_DOUBLE_QUOTE_value, U_WB_DOUBLE_QUOTE); + zend_string *const_WB_DOUBLE_QUOTE_name = zend_string_init_interned("WB_DOUBLE_QUOTE", sizeof("WB_DOUBLE_QUOTE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_DOUBLE_QUOTE_name, &const_WB_DOUBLE_QUOTE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_DOUBLE_QUOTE_name); +#endif + + zval const_WB_COUNT_value; + ZVAL_LONG(&const_WB_COUNT_value, U_WB_COUNT); + zend_string *const_WB_COUNT_name = zend_string_init_interned("WB_COUNT", sizeof("WB_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_WB_COUNT_name, &const_WB_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_WB_COUNT_name); + + zval const_SB_OTHER_value; + ZVAL_LONG(&const_SB_OTHER_value, U_SB_OTHER); + zend_string *const_SB_OTHER_name = zend_string_init_interned("SB_OTHER", sizeof("SB_OTHER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_OTHER_name, &const_SB_OTHER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_OTHER_name); + + zval const_SB_ATERM_value; + ZVAL_LONG(&const_SB_ATERM_value, U_SB_ATERM); + zend_string *const_SB_ATERM_name = zend_string_init_interned("SB_ATERM", sizeof("SB_ATERM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_ATERM_name, &const_SB_ATERM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_ATERM_name); + + zval const_SB_CLOSE_value; + ZVAL_LONG(&const_SB_CLOSE_value, U_SB_CLOSE); + zend_string *const_SB_CLOSE_name = zend_string_init_interned("SB_CLOSE", sizeof("SB_CLOSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_CLOSE_name, &const_SB_CLOSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_CLOSE_name); + + zval const_SB_FORMAT_value; + ZVAL_LONG(&const_SB_FORMAT_value, U_SB_FORMAT); + zend_string *const_SB_FORMAT_name = zend_string_init_interned("SB_FORMAT", sizeof("SB_FORMAT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_FORMAT_name, &const_SB_FORMAT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_FORMAT_name); + + zval const_SB_LOWER_value; + ZVAL_LONG(&const_SB_LOWER_value, U_SB_LOWER); + zend_string *const_SB_LOWER_name = zend_string_init_interned("SB_LOWER", sizeof("SB_LOWER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_LOWER_name, &const_SB_LOWER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_LOWER_name); + + zval const_SB_NUMERIC_value; + ZVAL_LONG(&const_SB_NUMERIC_value, U_SB_NUMERIC); + zend_string *const_SB_NUMERIC_name = zend_string_init_interned("SB_NUMERIC", sizeof("SB_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_NUMERIC_name, &const_SB_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_NUMERIC_name); + + zval const_SB_OLETTER_value; + ZVAL_LONG(&const_SB_OLETTER_value, U_SB_OLETTER); + zend_string *const_SB_OLETTER_name = zend_string_init_interned("SB_OLETTER", sizeof("SB_OLETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_OLETTER_name, &const_SB_OLETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_OLETTER_name); + + zval const_SB_SEP_value; + ZVAL_LONG(&const_SB_SEP_value, U_SB_SEP); + zend_string *const_SB_SEP_name = zend_string_init_interned("SB_SEP", sizeof("SB_SEP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_SEP_name, &const_SB_SEP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_SEP_name); + + zval const_SB_SP_value; + ZVAL_LONG(&const_SB_SP_value, U_SB_SP); + zend_string *const_SB_SP_name = zend_string_init_interned("SB_SP", sizeof("SB_SP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_SP_name, &const_SB_SP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_SP_name); + + zval const_SB_STERM_value; + ZVAL_LONG(&const_SB_STERM_value, U_SB_STERM); + zend_string *const_SB_STERM_name = zend_string_init_interned("SB_STERM", sizeof("SB_STERM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_STERM_name, &const_SB_STERM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_STERM_name); + + zval const_SB_UPPER_value; + ZVAL_LONG(&const_SB_UPPER_value, U_SB_UPPER); + zend_string *const_SB_UPPER_name = zend_string_init_interned("SB_UPPER", sizeof("SB_UPPER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_UPPER_name, &const_SB_UPPER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_UPPER_name); + + zval const_SB_CR_value; + ZVAL_LONG(&const_SB_CR_value, U_SB_CR); + zend_string *const_SB_CR_name = zend_string_init_interned("SB_CR", sizeof("SB_CR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_CR_name, &const_SB_CR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_CR_name); + + zval const_SB_EXTEND_value; + ZVAL_LONG(&const_SB_EXTEND_value, U_SB_EXTEND); + zend_string *const_SB_EXTEND_name = zend_string_init_interned("SB_EXTEND", sizeof("SB_EXTEND") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_EXTEND_name, &const_SB_EXTEND_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_EXTEND_name); + + zval const_SB_LF_value; + ZVAL_LONG(&const_SB_LF_value, U_SB_LF); + zend_string *const_SB_LF_name = zend_string_init_interned("SB_LF", sizeof("SB_LF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_LF_name, &const_SB_LF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_LF_name); + + zval const_SB_SCONTINUE_value; + ZVAL_LONG(&const_SB_SCONTINUE_value, U_SB_SCONTINUE); + zend_string *const_SB_SCONTINUE_name = zend_string_init_interned("SB_SCONTINUE", sizeof("SB_SCONTINUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_SCONTINUE_name, &const_SB_SCONTINUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_SCONTINUE_name); + + zval const_SB_COUNT_value; + ZVAL_LONG(&const_SB_COUNT_value, U_SB_COUNT); + zend_string *const_SB_COUNT_name = zend_string_init_interned("SB_COUNT", sizeof("SB_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_SB_COUNT_name, &const_SB_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_SB_COUNT_name); + + zval const_LB_UNKNOWN_value; + ZVAL_LONG(&const_LB_UNKNOWN_value, U_LB_UNKNOWN); + zend_string *const_LB_UNKNOWN_name = zend_string_init_interned("LB_UNKNOWN", sizeof("LB_UNKNOWN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_UNKNOWN_name, &const_LB_UNKNOWN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_UNKNOWN_name); + + zval const_LB_AMBIGUOUS_value; + ZVAL_LONG(&const_LB_AMBIGUOUS_value, U_LB_AMBIGUOUS); + zend_string *const_LB_AMBIGUOUS_name = zend_string_init_interned("LB_AMBIGUOUS", sizeof("LB_AMBIGUOUS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_AMBIGUOUS_name, &const_LB_AMBIGUOUS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_AMBIGUOUS_name); + + zval const_LB_ALPHABETIC_value; + ZVAL_LONG(&const_LB_ALPHABETIC_value, U_LB_ALPHABETIC); + zend_string *const_LB_ALPHABETIC_name = zend_string_init_interned("LB_ALPHABETIC", sizeof("LB_ALPHABETIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_ALPHABETIC_name, &const_LB_ALPHABETIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_ALPHABETIC_name); + + zval const_LB_BREAK_BOTH_value; + ZVAL_LONG(&const_LB_BREAK_BOTH_value, U_LB_BREAK_BOTH); + zend_string *const_LB_BREAK_BOTH_name = zend_string_init_interned("LB_BREAK_BOTH", sizeof("LB_BREAK_BOTH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_BREAK_BOTH_name, &const_LB_BREAK_BOTH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_BREAK_BOTH_name); + + zval const_LB_BREAK_AFTER_value; + ZVAL_LONG(&const_LB_BREAK_AFTER_value, U_LB_BREAK_AFTER); + zend_string *const_LB_BREAK_AFTER_name = zend_string_init_interned("LB_BREAK_AFTER", sizeof("LB_BREAK_AFTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_BREAK_AFTER_name, &const_LB_BREAK_AFTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_BREAK_AFTER_name); + + zval const_LB_BREAK_BEFORE_value; + ZVAL_LONG(&const_LB_BREAK_BEFORE_value, U_LB_BREAK_BEFORE); + zend_string *const_LB_BREAK_BEFORE_name = zend_string_init_interned("LB_BREAK_BEFORE", sizeof("LB_BREAK_BEFORE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_BREAK_BEFORE_name, &const_LB_BREAK_BEFORE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_BREAK_BEFORE_name); + + zval const_LB_MANDATORY_BREAK_value; + ZVAL_LONG(&const_LB_MANDATORY_BREAK_value, U_LB_MANDATORY_BREAK); + zend_string *const_LB_MANDATORY_BREAK_name = zend_string_init_interned("LB_MANDATORY_BREAK", sizeof("LB_MANDATORY_BREAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_MANDATORY_BREAK_name, &const_LB_MANDATORY_BREAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_MANDATORY_BREAK_name); + + zval const_LB_CONTINGENT_BREAK_value; + ZVAL_LONG(&const_LB_CONTINGENT_BREAK_value, U_LB_CONTINGENT_BREAK); + zend_string *const_LB_CONTINGENT_BREAK_name = zend_string_init_interned("LB_CONTINGENT_BREAK", sizeof("LB_CONTINGENT_BREAK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_CONTINGENT_BREAK_name, &const_LB_CONTINGENT_BREAK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_CONTINGENT_BREAK_name); + + zval const_LB_CLOSE_PUNCTUATION_value; + ZVAL_LONG(&const_LB_CLOSE_PUNCTUATION_value, U_LB_CLOSE_PUNCTUATION); + zend_string *const_LB_CLOSE_PUNCTUATION_name = zend_string_init_interned("LB_CLOSE_PUNCTUATION", sizeof("LB_CLOSE_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_CLOSE_PUNCTUATION_name, &const_LB_CLOSE_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_CLOSE_PUNCTUATION_name); + + zval const_LB_COMBINING_MARK_value; + ZVAL_LONG(&const_LB_COMBINING_MARK_value, U_LB_COMBINING_MARK); + zend_string *const_LB_COMBINING_MARK_name = zend_string_init_interned("LB_COMBINING_MARK", sizeof("LB_COMBINING_MARK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_COMBINING_MARK_name, &const_LB_COMBINING_MARK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_COMBINING_MARK_name); + + zval const_LB_CARRIAGE_RETURN_value; + ZVAL_LONG(&const_LB_CARRIAGE_RETURN_value, U_LB_CARRIAGE_RETURN); + zend_string *const_LB_CARRIAGE_RETURN_name = zend_string_init_interned("LB_CARRIAGE_RETURN", sizeof("LB_CARRIAGE_RETURN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_CARRIAGE_RETURN_name, &const_LB_CARRIAGE_RETURN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_CARRIAGE_RETURN_name); + + zval const_LB_EXCLAMATION_value; + ZVAL_LONG(&const_LB_EXCLAMATION_value, U_LB_EXCLAMATION); + zend_string *const_LB_EXCLAMATION_name = zend_string_init_interned("LB_EXCLAMATION", sizeof("LB_EXCLAMATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_EXCLAMATION_name, &const_LB_EXCLAMATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_EXCLAMATION_name); + + zval const_LB_GLUE_value; + ZVAL_LONG(&const_LB_GLUE_value, U_LB_GLUE); + zend_string *const_LB_GLUE_name = zend_string_init_interned("LB_GLUE", sizeof("LB_GLUE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_GLUE_name, &const_LB_GLUE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_GLUE_name); + + zval const_LB_HYPHEN_value; + ZVAL_LONG(&const_LB_HYPHEN_value, U_LB_HYPHEN); + zend_string *const_LB_HYPHEN_name = zend_string_init_interned("LB_HYPHEN", sizeof("LB_HYPHEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_HYPHEN_name, &const_LB_HYPHEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_HYPHEN_name); + + zval const_LB_IDEOGRAPHIC_value; + ZVAL_LONG(&const_LB_IDEOGRAPHIC_value, U_LB_IDEOGRAPHIC); + zend_string *const_LB_IDEOGRAPHIC_name = zend_string_init_interned("LB_IDEOGRAPHIC", sizeof("LB_IDEOGRAPHIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_IDEOGRAPHIC_name, &const_LB_IDEOGRAPHIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_IDEOGRAPHIC_name); + + zval const_LB_INSEPARABLE_value; + ZVAL_LONG(&const_LB_INSEPARABLE_value, U_LB_INSEPARABLE); + zend_string *const_LB_INSEPARABLE_name = zend_string_init_interned("LB_INSEPARABLE", sizeof("LB_INSEPARABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_INSEPARABLE_name, &const_LB_INSEPARABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_INSEPARABLE_name); + + zval const_LB_INSEPERABLE_value; + ZVAL_LONG(&const_LB_INSEPERABLE_value, U_LB_INSEPERABLE); + zend_string *const_LB_INSEPERABLE_name = zend_string_init_interned("LB_INSEPERABLE", sizeof("LB_INSEPERABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_INSEPERABLE_name, &const_LB_INSEPERABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_INSEPERABLE_name); + + zval const_LB_INFIX_NUMERIC_value; + ZVAL_LONG(&const_LB_INFIX_NUMERIC_value, U_LB_INFIX_NUMERIC); + zend_string *const_LB_INFIX_NUMERIC_name = zend_string_init_interned("LB_INFIX_NUMERIC", sizeof("LB_INFIX_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_INFIX_NUMERIC_name, &const_LB_INFIX_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_INFIX_NUMERIC_name); + + zval const_LB_LINE_FEED_value; + ZVAL_LONG(&const_LB_LINE_FEED_value, U_LB_LINE_FEED); + zend_string *const_LB_LINE_FEED_name = zend_string_init_interned("LB_LINE_FEED", sizeof("LB_LINE_FEED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_LINE_FEED_name, &const_LB_LINE_FEED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_LINE_FEED_name); + + zval const_LB_NONSTARTER_value; + ZVAL_LONG(&const_LB_NONSTARTER_value, U_LB_NONSTARTER); + zend_string *const_LB_NONSTARTER_name = zend_string_init_interned("LB_NONSTARTER", sizeof("LB_NONSTARTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_NONSTARTER_name, &const_LB_NONSTARTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_NONSTARTER_name); + + zval const_LB_NUMERIC_value; + ZVAL_LONG(&const_LB_NUMERIC_value, U_LB_NUMERIC); + zend_string *const_LB_NUMERIC_name = zend_string_init_interned("LB_NUMERIC", sizeof("LB_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_NUMERIC_name, &const_LB_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_NUMERIC_name); + + zval const_LB_OPEN_PUNCTUATION_value; + ZVAL_LONG(&const_LB_OPEN_PUNCTUATION_value, U_LB_OPEN_PUNCTUATION); + zend_string *const_LB_OPEN_PUNCTUATION_name = zend_string_init_interned("LB_OPEN_PUNCTUATION", sizeof("LB_OPEN_PUNCTUATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_OPEN_PUNCTUATION_name, &const_LB_OPEN_PUNCTUATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_OPEN_PUNCTUATION_name); + + zval const_LB_POSTFIX_NUMERIC_value; + ZVAL_LONG(&const_LB_POSTFIX_NUMERIC_value, U_LB_POSTFIX_NUMERIC); + zend_string *const_LB_POSTFIX_NUMERIC_name = zend_string_init_interned("LB_POSTFIX_NUMERIC", sizeof("LB_POSTFIX_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_POSTFIX_NUMERIC_name, &const_LB_POSTFIX_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_POSTFIX_NUMERIC_name); + + zval const_LB_PREFIX_NUMERIC_value; + ZVAL_LONG(&const_LB_PREFIX_NUMERIC_value, U_LB_PREFIX_NUMERIC); + zend_string *const_LB_PREFIX_NUMERIC_name = zend_string_init_interned("LB_PREFIX_NUMERIC", sizeof("LB_PREFIX_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_PREFIX_NUMERIC_name, &const_LB_PREFIX_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_PREFIX_NUMERIC_name); + + zval const_LB_QUOTATION_value; + ZVAL_LONG(&const_LB_QUOTATION_value, U_LB_QUOTATION); + zend_string *const_LB_QUOTATION_name = zend_string_init_interned("LB_QUOTATION", sizeof("LB_QUOTATION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_QUOTATION_name, &const_LB_QUOTATION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_QUOTATION_name); + + zval const_LB_COMPLEX_CONTEXT_value; + ZVAL_LONG(&const_LB_COMPLEX_CONTEXT_value, U_LB_COMPLEX_CONTEXT); + zend_string *const_LB_COMPLEX_CONTEXT_name = zend_string_init_interned("LB_COMPLEX_CONTEXT", sizeof("LB_COMPLEX_CONTEXT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_COMPLEX_CONTEXT_name, &const_LB_COMPLEX_CONTEXT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_COMPLEX_CONTEXT_name); + + zval const_LB_SURROGATE_value; + ZVAL_LONG(&const_LB_SURROGATE_value, U_LB_SURROGATE); + zend_string *const_LB_SURROGATE_name = zend_string_init_interned("LB_SURROGATE", sizeof("LB_SURROGATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_SURROGATE_name, &const_LB_SURROGATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_SURROGATE_name); + + zval const_LB_SPACE_value; + ZVAL_LONG(&const_LB_SPACE_value, U_LB_SPACE); + zend_string *const_LB_SPACE_name = zend_string_init_interned("LB_SPACE", sizeof("LB_SPACE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_SPACE_name, &const_LB_SPACE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_SPACE_name); + + zval const_LB_BREAK_SYMBOLS_value; + ZVAL_LONG(&const_LB_BREAK_SYMBOLS_value, U_LB_BREAK_SYMBOLS); + zend_string *const_LB_BREAK_SYMBOLS_name = zend_string_init_interned("LB_BREAK_SYMBOLS", sizeof("LB_BREAK_SYMBOLS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_BREAK_SYMBOLS_name, &const_LB_BREAK_SYMBOLS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_BREAK_SYMBOLS_name); + + zval const_LB_ZWSPACE_value; + ZVAL_LONG(&const_LB_ZWSPACE_value, U_LB_ZWSPACE); + zend_string *const_LB_ZWSPACE_name = zend_string_init_interned("LB_ZWSPACE", sizeof("LB_ZWSPACE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_ZWSPACE_name, &const_LB_ZWSPACE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_ZWSPACE_name); + + zval const_LB_NEXT_LINE_value; + ZVAL_LONG(&const_LB_NEXT_LINE_value, U_LB_NEXT_LINE); + zend_string *const_LB_NEXT_LINE_name = zend_string_init_interned("LB_NEXT_LINE", sizeof("LB_NEXT_LINE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_NEXT_LINE_name, &const_LB_NEXT_LINE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_NEXT_LINE_name); + + zval const_LB_WORD_JOINER_value; + ZVAL_LONG(&const_LB_WORD_JOINER_value, U_LB_WORD_JOINER); + zend_string *const_LB_WORD_JOINER_name = zend_string_init_interned("LB_WORD_JOINER", sizeof("LB_WORD_JOINER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_WORD_JOINER_name, &const_LB_WORD_JOINER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_WORD_JOINER_name); + + zval const_LB_H2_value; + ZVAL_LONG(&const_LB_H2_value, U_LB_H2); + zend_string *const_LB_H2_name = zend_string_init_interned("LB_H2", sizeof("LB_H2") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_H2_name, &const_LB_H2_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_H2_name); + + zval const_LB_H3_value; + ZVAL_LONG(&const_LB_H3_value, U_LB_H3); + zend_string *const_LB_H3_name = zend_string_init_interned("LB_H3", sizeof("LB_H3") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_H3_name, &const_LB_H3_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_H3_name); + + zval const_LB_JL_value; + ZVAL_LONG(&const_LB_JL_value, U_LB_JL); + zend_string *const_LB_JL_name = zend_string_init_interned("LB_JL", sizeof("LB_JL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_JL_name, &const_LB_JL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_JL_name); + + zval const_LB_JT_value; + ZVAL_LONG(&const_LB_JT_value, U_LB_JT); + zend_string *const_LB_JT_name = zend_string_init_interned("LB_JT", sizeof("LB_JT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_JT_name, &const_LB_JT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_JT_name); + + zval const_LB_JV_value; + ZVAL_LONG(&const_LB_JV_value, U_LB_JV); + zend_string *const_LB_JV_name = zend_string_init_interned("LB_JV", sizeof("LB_JV") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_JV_name, &const_LB_JV_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_JV_name); + + zval const_LB_CLOSE_PARENTHESIS_value; + ZVAL_LONG(&const_LB_CLOSE_PARENTHESIS_value, U_LB_CLOSE_PARENTHESIS); + zend_string *const_LB_CLOSE_PARENTHESIS_name = zend_string_init_interned("LB_CLOSE_PARENTHESIS", sizeof("LB_CLOSE_PARENTHESIS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_CLOSE_PARENTHESIS_name, &const_LB_CLOSE_PARENTHESIS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_CLOSE_PARENTHESIS_name); + + zval const_LB_CONDITIONAL_JAPANESE_STARTER_value; + ZVAL_LONG(&const_LB_CONDITIONAL_JAPANESE_STARTER_value, U_LB_CONDITIONAL_JAPANESE_STARTER); + zend_string *const_LB_CONDITIONAL_JAPANESE_STARTER_name = zend_string_init_interned("LB_CONDITIONAL_JAPANESE_STARTER", sizeof("LB_CONDITIONAL_JAPANESE_STARTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_CONDITIONAL_JAPANESE_STARTER_name, &const_LB_CONDITIONAL_JAPANESE_STARTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_CONDITIONAL_JAPANESE_STARTER_name); + + zval const_LB_HEBREW_LETTER_value; + ZVAL_LONG(&const_LB_HEBREW_LETTER_value, U_LB_HEBREW_LETTER); + zend_string *const_LB_HEBREW_LETTER_name = zend_string_init_interned("LB_HEBREW_LETTER", sizeof("LB_HEBREW_LETTER") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_HEBREW_LETTER_name, &const_LB_HEBREW_LETTER_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_HEBREW_LETTER_name); + + zval const_LB_REGIONAL_INDICATOR_value; + ZVAL_LONG(&const_LB_REGIONAL_INDICATOR_value, U_LB_REGIONAL_INDICATOR); + zend_string *const_LB_REGIONAL_INDICATOR_name = zend_string_init_interned("LB_REGIONAL_INDICATOR", sizeof("LB_REGIONAL_INDICATOR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_REGIONAL_INDICATOR_name, &const_LB_REGIONAL_INDICATOR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_REGIONAL_INDICATOR_name); + + zval const_LB_COUNT_value; + ZVAL_LONG(&const_LB_COUNT_value, U_LB_COUNT); + zend_string *const_LB_COUNT_name = zend_string_init_interned("LB_COUNT", sizeof("LB_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LB_COUNT_name, &const_LB_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LB_COUNT_name); + + zval const_NT_NONE_value; + ZVAL_LONG(&const_NT_NONE_value, U_NT_NONE); + zend_string *const_NT_NONE_name = zend_string_init_interned("NT_NONE", sizeof("NT_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NT_NONE_name, &const_NT_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NT_NONE_name); + + zval const_NT_DECIMAL_value; + ZVAL_LONG(&const_NT_DECIMAL_value, U_NT_DECIMAL); + zend_string *const_NT_DECIMAL_name = zend_string_init_interned("NT_DECIMAL", sizeof("NT_DECIMAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NT_DECIMAL_name, &const_NT_DECIMAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NT_DECIMAL_name); + + zval const_NT_DIGIT_value; + ZVAL_LONG(&const_NT_DIGIT_value, U_NT_DIGIT); + zend_string *const_NT_DIGIT_name = zend_string_init_interned("NT_DIGIT", sizeof("NT_DIGIT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NT_DIGIT_name, &const_NT_DIGIT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NT_DIGIT_name); + + zval const_NT_NUMERIC_value; + ZVAL_LONG(&const_NT_NUMERIC_value, U_NT_NUMERIC); + zend_string *const_NT_NUMERIC_name = zend_string_init_interned("NT_NUMERIC", sizeof("NT_NUMERIC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NT_NUMERIC_name, &const_NT_NUMERIC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NT_NUMERIC_name); + + zval const_NT_COUNT_value; + ZVAL_LONG(&const_NT_COUNT_value, U_NT_COUNT); + zend_string *const_NT_COUNT_name = zend_string_init_interned("NT_COUNT", sizeof("NT_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_NT_COUNT_name, &const_NT_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_NT_COUNT_name); + + zval const_HST_NOT_APPLICABLE_value; + ZVAL_LONG(&const_HST_NOT_APPLICABLE_value, U_HST_NOT_APPLICABLE); + zend_string *const_HST_NOT_APPLICABLE_name = zend_string_init_interned("HST_NOT_APPLICABLE", sizeof("HST_NOT_APPLICABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HST_NOT_APPLICABLE_name, &const_HST_NOT_APPLICABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HST_NOT_APPLICABLE_name); + + zval const_HST_LEADING_JAMO_value; + ZVAL_LONG(&const_HST_LEADING_JAMO_value, U_HST_LEADING_JAMO); + zend_string *const_HST_LEADING_JAMO_name = zend_string_init_interned("HST_LEADING_JAMO", sizeof("HST_LEADING_JAMO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HST_LEADING_JAMO_name, &const_HST_LEADING_JAMO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HST_LEADING_JAMO_name); + + zval const_HST_VOWEL_JAMO_value; + ZVAL_LONG(&const_HST_VOWEL_JAMO_value, U_HST_VOWEL_JAMO); + zend_string *const_HST_VOWEL_JAMO_name = zend_string_init_interned("HST_VOWEL_JAMO", sizeof("HST_VOWEL_JAMO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HST_VOWEL_JAMO_name, &const_HST_VOWEL_JAMO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HST_VOWEL_JAMO_name); + + zval const_HST_TRAILING_JAMO_value; + ZVAL_LONG(&const_HST_TRAILING_JAMO_value, U_HST_TRAILING_JAMO); + zend_string *const_HST_TRAILING_JAMO_name = zend_string_init_interned("HST_TRAILING_JAMO", sizeof("HST_TRAILING_JAMO") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HST_TRAILING_JAMO_name, &const_HST_TRAILING_JAMO_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HST_TRAILING_JAMO_name); + + zval const_HST_LV_SYLLABLE_value; + ZVAL_LONG(&const_HST_LV_SYLLABLE_value, U_HST_LV_SYLLABLE); + zend_string *const_HST_LV_SYLLABLE_name = zend_string_init_interned("HST_LV_SYLLABLE", sizeof("HST_LV_SYLLABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HST_LV_SYLLABLE_name, &const_HST_LV_SYLLABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HST_LV_SYLLABLE_name); + + zval const_HST_LVT_SYLLABLE_value; + ZVAL_LONG(&const_HST_LVT_SYLLABLE_value, U_HST_LVT_SYLLABLE); + zend_string *const_HST_LVT_SYLLABLE_name = zend_string_init_interned("HST_LVT_SYLLABLE", sizeof("HST_LVT_SYLLABLE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HST_LVT_SYLLABLE_name, &const_HST_LVT_SYLLABLE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HST_LVT_SYLLABLE_name); + + zval const_HST_COUNT_value; + ZVAL_LONG(&const_HST_COUNT_value, U_HST_COUNT); + zend_string *const_HST_COUNT_name = zend_string_init_interned("HST_COUNT", sizeof("HST_COUNT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_HST_COUNT_name, &const_HST_COUNT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_HST_COUNT_name); + + zval const_FOLD_CASE_DEFAULT_value; + ZVAL_LONG(&const_FOLD_CASE_DEFAULT_value, U_FOLD_CASE_DEFAULT); + zend_string *const_FOLD_CASE_DEFAULT_name = zend_string_init_interned("FOLD_CASE_DEFAULT", sizeof("FOLD_CASE_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FOLD_CASE_DEFAULT_name, &const_FOLD_CASE_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FOLD_CASE_DEFAULT_name); + + zval const_FOLD_CASE_EXCLUDE_SPECIAL_I_value; + ZVAL_LONG(&const_FOLD_CASE_EXCLUDE_SPECIAL_I_value, U_FOLD_CASE_EXCLUDE_SPECIAL_I); + zend_string *const_FOLD_CASE_EXCLUDE_SPECIAL_I_name = zend_string_init_interned("FOLD_CASE_EXCLUDE_SPECIAL_I", sizeof("FOLD_CASE_EXCLUDE_SPECIAL_I") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FOLD_CASE_EXCLUDE_SPECIAL_I_name, &const_FOLD_CASE_EXCLUDE_SPECIAL_I_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FOLD_CASE_EXCLUDE_SPECIAL_I_name); + return class_entry; } diff --git a/ext/intl/uchar/ucharcategory-enum.h b/ext/intl/uchar/ucharcategory-enum.h deleted file mode 100644 index 2db8a2f8609cf..0000000000000 --- a/ext/intl/uchar/ucharcategory-enum.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Generate from http://icu-project.org/apiref/icu4c/uchar_8h.html#a6a2dbc531efce8d77fdb4c314e7fc25e */ -UCHARCATEGORY(UNASSIGNED) -UCHARCATEGORY(GENERAL_OTHER_TYPES) -UCHARCATEGORY(UPPERCASE_LETTER) -UCHARCATEGORY(LOWERCASE_LETTER) -UCHARCATEGORY(TITLECASE_LETTER) -UCHARCATEGORY(MODIFIER_LETTER) -UCHARCATEGORY(OTHER_LETTER) -UCHARCATEGORY(NON_SPACING_MARK) -UCHARCATEGORY(ENCLOSING_MARK) -UCHARCATEGORY(COMBINING_SPACING_MARK) -UCHARCATEGORY(DECIMAL_DIGIT_NUMBER) -UCHARCATEGORY(LETTER_NUMBER) -UCHARCATEGORY(OTHER_NUMBER) -UCHARCATEGORY(SPACE_SEPARATOR) -UCHARCATEGORY(LINE_SEPARATOR) -UCHARCATEGORY(PARAGRAPH_SEPARATOR) -UCHARCATEGORY(CONTROL_CHAR) -UCHARCATEGORY(FORMAT_CHAR) -UCHARCATEGORY(PRIVATE_USE_CHAR) -UCHARCATEGORY(SURROGATE) -UCHARCATEGORY(DASH_PUNCTUATION) -UCHARCATEGORY(START_PUNCTUATION) -UCHARCATEGORY(END_PUNCTUATION) -UCHARCATEGORY(CONNECTOR_PUNCTUATION) -UCHARCATEGORY(OTHER_PUNCTUATION) -UCHARCATEGORY(MATH_SYMBOL) -UCHARCATEGORY(CURRENCY_SYMBOL) -UCHARCATEGORY(MODIFIER_SYMBOL) -UCHARCATEGORY(OTHER_SYMBOL) -UCHARCATEGORY(INITIAL_PUNCTUATION) -UCHARCATEGORY(FINAL_PUNCTUATION) -UCHARCATEGORY(CHAR_CATEGORY_COUNT) diff --git a/ext/intl/uchar/uchardirection-enum.h b/ext/intl/uchar/uchardirection-enum.h deleted file mode 100644 index afbbdb28cb438..0000000000000 --- a/ext/intl/uchar/uchardirection-enum.h +++ /dev/null @@ -1,26 +0,0 @@ -UCHARDIRECTION(LEFT_TO_RIGHT) -UCHARDIRECTION(RIGHT_TO_LEFT) -UCHARDIRECTION(EUROPEAN_NUMBER) -UCHARDIRECTION(EUROPEAN_NUMBER_SEPARATOR) -UCHARDIRECTION(EUROPEAN_NUMBER_TERMINATOR) -UCHARDIRECTION(ARABIC_NUMBER) -UCHARDIRECTION(COMMON_NUMBER_SEPARATOR) -UCHARDIRECTION(BLOCK_SEPARATOR) -UCHARDIRECTION(SEGMENT_SEPARATOR) -UCHARDIRECTION(WHITE_SPACE_NEUTRAL) -UCHARDIRECTION(OTHER_NEUTRAL) -UCHARDIRECTION(LEFT_TO_RIGHT_EMBEDDING) -UCHARDIRECTION(LEFT_TO_RIGHT_OVERRIDE) -UCHARDIRECTION(RIGHT_TO_LEFT_ARABIC) -UCHARDIRECTION(RIGHT_TO_LEFT_EMBEDDING) -UCHARDIRECTION(RIGHT_TO_LEFT_OVERRIDE) -UCHARDIRECTION(POP_DIRECTIONAL_FORMAT) -UCHARDIRECTION(DIR_NON_SPACING_MARK) -UCHARDIRECTION(BOUNDARY_NEUTRAL) -#if U_ICU_VERSION_MAJOR_NUM >= 52 -UCHARDIRECTION(FIRST_STRONG_ISOLATE) -UCHARDIRECTION(LEFT_TO_RIGHT_ISOLATE) -UCHARDIRECTION(RIGHT_TO_LEFT_ISOLATE) -UCHARDIRECTION(POP_DIRECTIONAL_ISOLATE) -#endif /* ICU >= 52 */ -UCHARDIRECTION(CHAR_DIRECTION_COUNT) diff --git a/ext/intl/uchar/uother-enum.h b/ext/intl/uchar/uother-enum.h deleted file mode 100644 index c45dfad6c7931..0000000000000 --- a/ext/intl/uchar/uother-enum.h +++ /dev/null @@ -1,270 +0,0 @@ -/* UBidiPairedBracketType - http://icu-project.org/apiref/icu4c/uchar_8h.html#af954219aa1df452657ec355221c6703d */ -#if U_ICU_VERSION_MAJOR_NUM >= 52 -UOTHER(BPT_NONE) -UOTHER(BPT_OPEN) -UOTHER(BPT_CLOSE) -UOTHER(BPT_COUNT) -#endif /* ICU >= 52 */ - -/* UEastAsianWidth - http://icu-project.org/apiref/icu4c/uchar_8h.html#a95cc2ca2f9cfd6d0c63eee2c65951333 */ -UOTHER(EA_NEUTRAL) -UOTHER(EA_AMBIGUOUS) -UOTHER(EA_HALFWIDTH) -UOTHER(EA_FULLWIDTH ) -UOTHER(EA_NARROW) -UOTHER(EA_WIDE) -UOTHER(EA_COUNT) - -/* UCharNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a2ba37edcca62eff48226e8096035addf */ -UOTHER(UNICODE_CHAR_NAME) -UOTHER(UNICODE_10_CHAR_NAME) -UOTHER(EXTENDED_CHAR_NAME) -UOTHER(CHAR_NAME_ALIAS) -UOTHER(CHAR_NAME_CHOICE_COUNT) - -/* UPropertyNameChoice - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5056494c7d5a2c7185f3c464f48fe5d1 */ -UOTHER(SHORT_PROPERTY_NAME) -UOTHER(LONG_PROPERTY_NAME) -UOTHER(PROPERTY_NAME_CHOICE_COUNT) - -/* UDecompositionType - http://icu-project.org/apiref/icu4c/uchar_8h.html#ae2c56994fcf28062c7e77beb671533f5 */ -UOTHER(DT_NONE) -UOTHER(DT_CANONICAL) -UOTHER(DT_COMPAT) -UOTHER(DT_CIRCLE) -UOTHER(DT_FINAL) -UOTHER(DT_FONT) -UOTHER(DT_FRACTION) -UOTHER(DT_INITIAL) -UOTHER(DT_ISOLATED) -UOTHER(DT_MEDIAL) -UOTHER(DT_NARROW) -UOTHER(DT_NOBREAK) -UOTHER(DT_SMALL) -UOTHER(DT_SQUARE) -UOTHER(DT_SUB) -UOTHER(DT_SUPER) -UOTHER(DT_VERTICAL) -UOTHER(DT_WIDE) -UOTHER(DT_COUNT ) - -/* UJoiningType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a3ce1ce20e7f3b8534eb3490ad3aba3dd */ -UOTHER(JT_NON_JOINING) -UOTHER(JT_JOIN_CAUSING) -UOTHER(JT_DUAL_JOINING) -UOTHER(JT_LEFT_JOINING) -UOTHER(JT_RIGHT_JOINING) -UOTHER(JT_TRANSPARENT) -UOTHER(JT_COUNT) - -/* UJoiningGroup - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7887844ec0872e6e9a283e0825fcae65 */ -UOTHER(JG_NO_JOINING_GROUP) -UOTHER(JG_AIN) -UOTHER(JG_ALAPH) -UOTHER(JG_ALEF) -UOTHER(JG_BEH) -UOTHER(JG_BETH) -UOTHER(JG_DAL) -UOTHER(JG_DALATH_RISH) -UOTHER(JG_E) -UOTHER(JG_FEH) -UOTHER(JG_FINAL_SEMKATH) -UOTHER(JG_GAF) -UOTHER(JG_GAMAL) -UOTHER(JG_HAH) -UOTHER(JG_TEH_MARBUTA_GOAL) -UOTHER(JG_HAMZA_ON_HEH_GOAL) -UOTHER(JG_HE) -UOTHER(JG_HEH) -UOTHER(JG_HEH_GOAL) -UOTHER(JG_HETH) -UOTHER(JG_KAF) -UOTHER(JG_KAPH) -UOTHER(JG_KNOTTED_HEH) -UOTHER(JG_LAM) -UOTHER(JG_LAMADH) -UOTHER(JG_MEEM) -UOTHER(JG_MIM) -UOTHER(JG_NOON) -UOTHER(JG_NUN) -UOTHER(JG_PE) -UOTHER(JG_QAF) -UOTHER(JG_QAPH) -UOTHER(JG_REH) -UOTHER(JG_REVERSED_PE) -UOTHER(JG_SAD) -UOTHER(JG_SADHE) -UOTHER(JG_SEEN) -UOTHER(JG_SEMKATH) -UOTHER(JG_SHIN) -UOTHER(JG_SWASH_KAF) -UOTHER(JG_SYRIAC_WAW) -UOTHER(JG_TAH) -UOTHER(JG_TAW) -UOTHER(JG_TEH_MARBUTA) -UOTHER(JG_TETH) -UOTHER(JG_WAW) -UOTHER(JG_YEH) -UOTHER(JG_YEH_BARREE) -UOTHER(JG_YEH_WITH_TAIL) -UOTHER(JG_YUDH) -UOTHER(JG_YUDH_HE) -UOTHER(JG_ZAIN) -UOTHER(JG_FE) -UOTHER(JG_KHAPH) -UOTHER(JG_ZHAIN) -UOTHER(JG_BURUSHASKI_YEH_BARREE) -UOTHER(JG_FARSI_YEH) -UOTHER(JG_NYA) -UOTHER(JG_ROHINGYA_YEH) -#if U_ICU_VERSION_MAJOR_NUM >= 54 -UOTHER(JG_MANICHAEAN_ALEPH) -UOTHER(JG_MANICHAEAN_AYIN) -UOTHER(JG_MANICHAEAN_BETH) -UOTHER(JG_MANICHAEAN_DALETH) -UOTHER(JG_MANICHAEAN_DHAMEDH) -UOTHER(JG_MANICHAEAN_FIVE) -UOTHER(JG_MANICHAEAN_GIMEL) -UOTHER(JG_MANICHAEAN_HETH) -UOTHER(JG_MANICHAEAN_HUNDRED) -UOTHER(JG_MANICHAEAN_KAPH) -UOTHER(JG_MANICHAEAN_LAMEDH) -UOTHER(JG_MANICHAEAN_MEM) -UOTHER(JG_MANICHAEAN_NUN) -UOTHER(JG_MANICHAEAN_ONE) -UOTHER(JG_MANICHAEAN_PE) -UOTHER(JG_MANICHAEAN_QOPH) -UOTHER(JG_MANICHAEAN_RESH) -UOTHER(JG_MANICHAEAN_SADHE) -UOTHER(JG_MANICHAEAN_SAMEKH) -UOTHER(JG_MANICHAEAN_TAW) -UOTHER(JG_MANICHAEAN_TEN) -UOTHER(JG_MANICHAEAN_TETH) -UOTHER(JG_MANICHAEAN_THAMEDH) -UOTHER(JG_MANICHAEAN_TWENTY) -UOTHER(JG_MANICHAEAN_WAW) -UOTHER(JG_MANICHAEAN_YODH) -UOTHER(JG_MANICHAEAN_ZAYIN) -UOTHER(JG_STRAIGHT_WAW) -#endif /* ICU 54 */ -UOTHER(JG_COUNT ) - -/* UGraphemeClusterBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#abb9bae7d2a1c80ce342be4647661fde1 */ -UOTHER(GCB_OTHER) -UOTHER(GCB_CONTROL) -UOTHER(GCB_CR) -UOTHER(GCB_EXTEND) -UOTHER(GCB_L) -UOTHER(GCB_LF) -UOTHER(GCB_LV) -UOTHER(GCB_LVT) -UOTHER(GCB_T) -UOTHER(GCB_V) -UOTHER(GCB_SPACING_MARK) -UOTHER(GCB_PREPEND) -UOTHER(GCB_REGIONAL_INDICATOR) -UOTHER(GCB_COUNT) - -/* UWordBreakValues - http://icu-project.org/apiref/icu4c/uchar_8h.html#af70ee907368e663f8dd4b90c7196e15c */ -UOTHER(WB_OTHER) -UOTHER(WB_ALETTER) -UOTHER(WB_FORMAT) -UOTHER(WB_KATAKANA) -UOTHER(WB_MIDLETTER) -UOTHER(WB_MIDNUM) -UOTHER(WB_NUMERIC) -UOTHER(WB_EXTENDNUMLET) -UOTHER(WB_CR) -UOTHER(WB_EXTEND) -UOTHER(WB_LF) -UOTHER(WB_MIDNUMLET) -UOTHER(WB_NEWLINE) -UOTHER(WB_REGIONAL_INDICATOR) -#if U_ICU_VERSION_MAJOR_NUM >= 52 -UOTHER(WB_HEBREW_LETTER) -UOTHER(WB_SINGLE_QUOTE) -UOTHER(WB_DOUBLE_QUOTE) -#endif /* ICU >= 52 */ -UOTHER(WB_COUNT) - -/* USentenceBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a89e9e463c3bae1d2d46b1dbb6f90de0f */ -UOTHER(SB_OTHER) -UOTHER(SB_ATERM) -UOTHER(SB_CLOSE) -UOTHER(SB_FORMAT) -UOTHER(SB_LOWER) -UOTHER(SB_NUMERIC) -UOTHER(SB_OLETTER) -UOTHER(SB_SEP) -UOTHER(SB_SP) -UOTHER(SB_STERM) -UOTHER(SB_UPPER) -UOTHER(SB_CR) -UOTHER(SB_EXTEND) -UOTHER(SB_LF) -UOTHER(SB_SCONTINUE) -UOTHER(SB_COUNT) - -/* ULineBreak - http://icu-project.org/apiref/icu4c/uchar_8h.html#a5d1abdf05be22cb9599f804a8506277c */ -UOTHER(LB_UNKNOWN) -UOTHER(LB_AMBIGUOUS) -UOTHER(LB_ALPHABETIC) -UOTHER(LB_BREAK_BOTH) -UOTHER(LB_BREAK_AFTER) -UOTHER(LB_BREAK_BEFORE) -UOTHER(LB_MANDATORY_BREAK) -UOTHER(LB_CONTINGENT_BREAK) -UOTHER(LB_CLOSE_PUNCTUATION) -UOTHER(LB_COMBINING_MARK) -UOTHER(LB_CARRIAGE_RETURN) -UOTHER(LB_EXCLAMATION) -UOTHER(LB_GLUE) -UOTHER(LB_HYPHEN) -UOTHER(LB_IDEOGRAPHIC) -UOTHER(LB_INSEPARABLE) -UOTHER(LB_INSEPERABLE) -UOTHER(LB_INFIX_NUMERIC) -UOTHER(LB_LINE_FEED) -UOTHER(LB_NONSTARTER) -UOTHER(LB_NUMERIC) -UOTHER(LB_OPEN_PUNCTUATION) -UOTHER(LB_POSTFIX_NUMERIC) -UOTHER(LB_PREFIX_NUMERIC) -UOTHER(LB_QUOTATION) -UOTHER(LB_COMPLEX_CONTEXT) -UOTHER(LB_SURROGATE) -UOTHER(LB_SPACE) -UOTHER(LB_BREAK_SYMBOLS) -UOTHER(LB_ZWSPACE) -UOTHER(LB_NEXT_LINE) -UOTHER(LB_WORD_JOINER) -UOTHER(LB_H2) -UOTHER(LB_H3) -UOTHER(LB_JL) -UOTHER(LB_JT) -UOTHER(LB_JV) -UOTHER(LB_CLOSE_PARENTHESIS) -UOTHER(LB_CONDITIONAL_JAPANESE_STARTER) -UOTHER(LB_HEBREW_LETTER) -UOTHER(LB_REGIONAL_INDICATOR) -UOTHER(LB_COUNT) - -/* UNumericType - http://icu-project.org/apiref/icu4c/uchar_8h.html#adec3e7a6ae3a00274c019b3b2ddaecbe */ -UOTHER(NT_NONE) -UOTHER(NT_DECIMAL) -UOTHER(NT_DIGIT) -UOTHER(NT_NUMERIC) -UOTHER(NT_COUNT) - -/* UHangulSyllableType - http://icu-project.org/apiref/icu4c/uchar_8h.html#a7cb09027c37ad73571cf541caf002c8f */ -UOTHER(HST_NOT_APPLICABLE) -UOTHER(HST_LEADING_JAMO) -UOTHER(HST_VOWEL_JAMO) -UOTHER(HST_TRAILING_JAMO) -UOTHER(HST_LV_SYLLABLE) -UOTHER(HST_LVT_SYLLABLE) -UOTHER(HST_COUNT ) - -/* StringOptions - http://icu-project.org/apiref/icu4c/stringoptions_8h.html */ -UOTHER(FOLD_CASE_DEFAULT) -UOTHER(FOLD_CASE_EXCLUDE_SPECIAL_I) diff --git a/ext/intl/uchar/uproperty-enum.h b/ext/intl/uchar/uproperty-enum.h deleted file mode 100644 index 59095a493e655..0000000000000 --- a/ext/intl/uchar/uproperty-enum.h +++ /dev/null @@ -1,114 +0,0 @@ -/* Generated from http://icu-project.org/apiref/icu4c/uchar_8h.html#ae40d616419e74ecc7c80a9febab03199 */ -UPROPERTY(ALPHABETIC) -UPROPERTY(BINARY_START) -UPROPERTY(ASCII_HEX_DIGIT) -UPROPERTY(BIDI_CONTROL) -UPROPERTY(BIDI_MIRRORED) -UPROPERTY(DASH) -UPROPERTY(DEFAULT_IGNORABLE_CODE_POINT) -UPROPERTY(DEPRECATED) -UPROPERTY(DIACRITIC) -UPROPERTY(EXTENDER) -UPROPERTY(FULL_COMPOSITION_EXCLUSION) -UPROPERTY(GRAPHEME_BASE) -UPROPERTY(GRAPHEME_EXTEND) -UPROPERTY(GRAPHEME_LINK) -UPROPERTY(HEX_DIGIT) -UPROPERTY(HYPHEN) -UPROPERTY(ID_CONTINUE) -UPROPERTY(ID_START) -UPROPERTY(IDEOGRAPHIC) -UPROPERTY(IDS_BINARY_OPERATOR) -UPROPERTY(IDS_TRINARY_OPERATOR) -UPROPERTY(JOIN_CONTROL) -UPROPERTY(LOGICAL_ORDER_EXCEPTION) -UPROPERTY(LOWERCASE) -UPROPERTY(MATH) -UPROPERTY(NONCHARACTER_CODE_POINT) -UPROPERTY(QUOTATION_MARK) -UPROPERTY(RADICAL) -UPROPERTY(SOFT_DOTTED) -UPROPERTY(TERMINAL_PUNCTUATION) -UPROPERTY(UNIFIED_IDEOGRAPH) -UPROPERTY(UPPERCASE) -UPROPERTY(WHITE_SPACE) -UPROPERTY(XID_CONTINUE) -UPROPERTY(XID_START) -UPROPERTY(CASE_SENSITIVE) -UPROPERTY(S_TERM) -UPROPERTY(VARIATION_SELECTOR) -UPROPERTY(NFD_INERT) -UPROPERTY(NFKD_INERT) -UPROPERTY(NFC_INERT) -UPROPERTY(NFKC_INERT) -UPROPERTY(SEGMENT_STARTER) -UPROPERTY(PATTERN_SYNTAX) -UPROPERTY(PATTERN_WHITE_SPACE) -UPROPERTY(POSIX_ALNUM) -UPROPERTY(POSIX_BLANK) -UPROPERTY(POSIX_GRAPH) -UPROPERTY(POSIX_PRINT) -UPROPERTY(POSIX_XDIGIT) -UPROPERTY(CASED) -UPROPERTY(CASE_IGNORABLE) -UPROPERTY(CHANGES_WHEN_LOWERCASED) -UPROPERTY(CHANGES_WHEN_UPPERCASED) -UPROPERTY(CHANGES_WHEN_TITLECASED) -UPROPERTY(CHANGES_WHEN_CASEFOLDED) -UPROPERTY(CHANGES_WHEN_CASEMAPPED) -UPROPERTY(CHANGES_WHEN_NFKC_CASEFOLDED) -UPROPERTY(BINARY_LIMIT) -UPROPERTY(BIDI_CLASS) -UPROPERTY(INT_START) -UPROPERTY(BLOCK) -UPROPERTY(CANONICAL_COMBINING_CLASS) -UPROPERTY(DECOMPOSITION_TYPE) -UPROPERTY(EAST_ASIAN_WIDTH) -UPROPERTY(GENERAL_CATEGORY) -UPROPERTY(JOINING_GROUP) -UPROPERTY(JOINING_TYPE) -UPROPERTY(LINE_BREAK) -UPROPERTY(NUMERIC_TYPE) -UPROPERTY(SCRIPT) -UPROPERTY(HANGUL_SYLLABLE_TYPE) -UPROPERTY(NFD_QUICK_CHECK) -UPROPERTY(NFKD_QUICK_CHECK) -UPROPERTY(NFC_QUICK_CHECK) -UPROPERTY(NFKC_QUICK_CHECK) -UPROPERTY(LEAD_CANONICAL_COMBINING_CLASS) -UPROPERTY(TRAIL_CANONICAL_COMBINING_CLASS) -UPROPERTY(GRAPHEME_CLUSTER_BREAK) -UPROPERTY(SENTENCE_BREAK) -UPROPERTY(WORD_BREAK) -#if U_ICU_VERSION_MAJOR_NUM >= 52 -UPROPERTY(BIDI_PAIRED_BRACKET_TYPE) -#endif /* ICU >= 52 */ -UPROPERTY(INT_LIMIT) -UPROPERTY(GENERAL_CATEGORY_MASK) -UPROPERTY(MASK_START) -UPROPERTY(MASK_LIMIT) -UPROPERTY(NUMERIC_VALUE) -UPROPERTY(DOUBLE_START) -UPROPERTY(DOUBLE_LIMIT) -UPROPERTY(AGE) -UPROPERTY(STRING_START) -UPROPERTY(BIDI_MIRRORING_GLYPH) -UPROPERTY(CASE_FOLDING) -UPROPERTY(ISO_COMMENT) -UPROPERTY(LOWERCASE_MAPPING) -UPROPERTY(NAME) -UPROPERTY(SIMPLE_CASE_FOLDING) -UPROPERTY(SIMPLE_LOWERCASE_MAPPING) -UPROPERTY(SIMPLE_TITLECASE_MAPPING) -UPROPERTY(SIMPLE_UPPERCASE_MAPPING) -UPROPERTY(TITLECASE_MAPPING) -UPROPERTY(UNICODE_1_NAME) -UPROPERTY(UPPERCASE_MAPPING) -#if U_ICU_VERSION_MAJOR_NUM >= 52 -UPROPERTY(BIDI_PAIRED_BRACKET) -#endif /* ICU >= 52 */ -UPROPERTY(STRING_LIMIT) -UPROPERTY(SCRIPT_EXTENSIONS) -UPROPERTY(OTHER_PROPERTY_START) -UPROPERTY(OTHER_PROPERTY_LIMIT) -UPROPERTY(INVALID_CODE) diff --git a/ext/json/json_arginfo.h b/ext/json/json_arginfo.h index 8c88f24c403cd..53a31f542bbc9 100644 --- a/ext/json/json_arginfo.h +++ b/ext/json/json_arginfo.h @@ -51,35 +51,35 @@ static const zend_function_entry class_JsonException_methods[] = { static void register_json_symbols(int module_number) { - REGISTER_LONG_CONSTANT("JSON_HEX_TAG", PHP_JSON_HEX_TAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_HEX_AMP", PHP_JSON_HEX_AMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_HEX_APOS", PHP_JSON_HEX_APOS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_NUMERIC_CHECK", PHP_JSON_NUMERIC_CHECK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_UNESCAPED_SLASHES", PHP_JSON_UNESCAPED_SLASHES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_PRETTY_PRINT", PHP_JSON_PRETTY_PRINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_UNESCAPED_UNICODE", PHP_JSON_UNESCAPED_UNICODE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_PARTIAL_OUTPUT_ON_ERROR", PHP_JSON_PARTIAL_OUTPUT_ON_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_PRESERVE_ZERO_FRACTION", PHP_JSON_PRESERVE_ZERO_FRACTION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_UNESCAPED_LINE_TERMINATORS", PHP_JSON_UNESCAPED_LINE_TERMINATORS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_OBJECT_AS_ARRAY", PHP_JSON_OBJECT_AS_ARRAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_BIGINT_AS_STRING", PHP_JSON_BIGINT_AS_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_IGNORE", PHP_JSON_INVALID_UTF8_IGNORE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_SUBSTITUTE", PHP_JSON_INVALID_UTF8_SUBSTITUTE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_THROW_ON_ERROR", PHP_JSON_THROW_ON_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_STATE_MISMATCH", PHP_JSON_ERROR_STATE_MISMATCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_CTRL_CHAR", PHP_JSON_ERROR_CTRL_CHAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_SYNTAX", PHP_JSON_ERROR_SYNTAX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_UTF8", PHP_JSON_ERROR_UTF8, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_RECURSION", PHP_JSON_ERROR_RECURSION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_INF_OR_NAN", PHP_JSON_ERROR_INF_OR_NAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_UNSUPPORTED_TYPE", PHP_JSON_ERROR_UNSUPPORTED_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_INVALID_PROPERTY_NAME", PHP_JSON_ERROR_INVALID_PROPERTY_NAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_UTF16", PHP_JSON_ERROR_UTF16, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("JSON_ERROR_NON_BACKED_ENUM", PHP_JSON_ERROR_NON_BACKED_ENUM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_HEX_TAG", PHP_JSON_HEX_TAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_HEX_AMP", PHP_JSON_HEX_AMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_HEX_APOS", PHP_JSON_HEX_APOS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_NUMERIC_CHECK", PHP_JSON_NUMERIC_CHECK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_UNESCAPED_SLASHES", PHP_JSON_UNESCAPED_SLASHES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_PRETTY_PRINT", PHP_JSON_PRETTY_PRINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_UNESCAPED_UNICODE", PHP_JSON_UNESCAPED_UNICODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_PARTIAL_OUTPUT_ON_ERROR", PHP_JSON_PARTIAL_OUTPUT_ON_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_PRESERVE_ZERO_FRACTION", PHP_JSON_PRESERVE_ZERO_FRACTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_UNESCAPED_LINE_TERMINATORS", PHP_JSON_UNESCAPED_LINE_TERMINATORS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_OBJECT_AS_ARRAY", PHP_JSON_OBJECT_AS_ARRAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_BIGINT_AS_STRING", PHP_JSON_BIGINT_AS_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_IGNORE", PHP_JSON_INVALID_UTF8_IGNORE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_INVALID_UTF8_SUBSTITUTE", PHP_JSON_INVALID_UTF8_SUBSTITUTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_THROW_ON_ERROR", PHP_JSON_THROW_ON_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_STATE_MISMATCH", PHP_JSON_ERROR_STATE_MISMATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_CTRL_CHAR", PHP_JSON_ERROR_CTRL_CHAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_SYNTAX", PHP_JSON_ERROR_SYNTAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_UTF8", PHP_JSON_ERROR_UTF8, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_RECURSION", PHP_JSON_ERROR_RECURSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_INF_OR_NAN", PHP_JSON_ERROR_INF_OR_NAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_UNSUPPORTED_TYPE", PHP_JSON_ERROR_UNSUPPORTED_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_INVALID_PROPERTY_NAME", PHP_JSON_ERROR_INVALID_PROPERTY_NAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_UTF16", PHP_JSON_ERROR_UTF16, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_ERROR_NON_BACKED_ENUM", PHP_JSON_ERROR_NON_BACKED_ENUM, CONST_PERSISTENT); } static zend_class_entry *register_class_JsonSerializable(void) diff --git a/ext/json/json_encoder.c b/ext/json/json_encoder.c index 13c5ed0aad683..adb53598326bd 100644 --- a/ext/json/json_encoder.c +++ b/ext/json/json_encoder.c @@ -71,7 +71,14 @@ static inline void php_json_pretty_print_indent(smart_str *buf, int options, php /* }}} */ -static inline bool php_json_is_valid_double(double d) /* {{{ */ +static +#if defined(_MSC_VER) && defined(_M_ARM64) +// MSVC bug: https://developercommunity.visualstudio.com/t/corrupt-optimization-on-arm64-with-Ox-/10102551 +zend_never_inline +#else +inline +#endif +bool php_json_is_valid_double(double d) /* {{{ */ { return !zend_isinf(d) && !zend_isnan(d); } diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index b8fb4274215ff..ecd94c2da509e 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -115,7 +115,6 @@ static zend_object *ldap_link_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &ldap_link_object_handlers; return &intern->std; } @@ -161,7 +160,6 @@ static zend_object *ldap_result_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &ldap_result_object_handlers; return &intern->std; } @@ -199,7 +197,6 @@ static zend_object *ldap_result_entry_create_object(zend_class_entry *class_type zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &ldap_result_entry_object_handlers; return &intern->std; } @@ -828,6 +825,7 @@ PHP_MINIT_FUNCTION(ldap) ldap_link_ce = register_class_LDAP_Connection(); ldap_link_ce->create_object = ldap_link_create_object; + ldap_link_ce->default_object_handlers = &ldap_link_object_handlers; memcpy(&ldap_link_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); ldap_link_object_handlers.offset = XtOffsetOf(ldap_linkdata, std); @@ -838,6 +836,7 @@ PHP_MINIT_FUNCTION(ldap) ldap_result_ce = register_class_LDAP_Result(); ldap_result_ce->create_object = ldap_result_create_object; + ldap_result_ce->default_object_handlers = &ldap_result_object_handlers; memcpy(&ldap_result_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); ldap_result_object_handlers.offset = XtOffsetOf(ldap_resultdata, std); @@ -848,6 +847,7 @@ PHP_MINIT_FUNCTION(ldap) ldap_result_entry_ce = register_class_LDAP_ResultEntry(); ldap_result_entry_ce->create_object = ldap_result_entry_create_object; + ldap_result_entry_ce->default_object_handlers = &ldap_result_entry_object_handlers; memcpy(&ldap_result_entry_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); ldap_result_entry_object_handlers.offset = XtOffsetOf(ldap_result_entry, std); diff --git a/ext/ldap/ldap.stub.php b/ext/ldap/ldap.stub.php index 3b5aaae78a848..19deffccad9d7 100644 --- a/ext/ldap/ldap.stub.php +++ b/ext/ldap/ldap.stub.php @@ -751,7 +751,7 @@ function ldap_parse_result(LDAP\Connection $ldap, LDAP\Result $result, &$error_c #endif #endif - #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) + #if (defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)) function ldap_set_rebind_proc(LDAP\Connection $ldap, ?callable $callback): bool {} #endif diff --git a/ext/ldap/ldap_arginfo.h b/ext/ldap/ldap_arginfo.h index 858840f4750b3..e44f4f0417622 100644 --- a/ext/ldap/ldap_arginfo.h +++ b/ext/ldap/ldap_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 470fcd62773b033ac200d7817b7917eee5bb812e */ + * Stub hash: 893c86a23c81c32d2c8a4b2ca14a785cd8a99a37 */ #if defined(HAVE_ORALDAP) ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_ldap_connect, 0, 0, LDAP\\Connection, MAY_BE_FALSE) @@ -267,7 +267,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_parse_result, 0, 3, _IS_BOO ZEND_END_ARG_INFO() #endif -#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) +#if (defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ldap_set_rebind_proc, 0, 2, _IS_BOOL, 0) ZEND_ARG_OBJ_INFO(0, ldap, LDAP\\Connection, 0) ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 1) @@ -410,7 +410,7 @@ ZEND_FUNCTION(ldap_parse_reference); #if (LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP) && defined(HAVE_LDAP_PARSE_RESULT) ZEND_FUNCTION(ldap_parse_result); #endif -#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) +#if (defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)) ZEND_FUNCTION(ldap_set_rebind_proc); #endif #if defined(HAVE_LDAP_START_TLS_S) @@ -513,7 +513,7 @@ static const zend_function_entry ext_functions[] = { #if (LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP) && defined(HAVE_LDAP_PARSE_RESULT) ZEND_FE(ldap_parse_result, arginfo_ldap_parse_result) #endif -#if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) +#if (defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC)) ZEND_FE(ldap_set_rebind_proc, arginfo_ldap_set_rebind_proc) #endif #if defined(HAVE_LDAP_START_TLS_S) @@ -561,273 +561,273 @@ static const zend_function_entry class_LDAP_ResultEntry_methods[] = { static void register_ldap_symbols(int module_number) { - REGISTER_LONG_CONSTANT("LDAP_DEREF_NEVER", LDAP_DEREF_NEVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_DEREF_SEARCHING", LDAP_DEREF_SEARCHING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_DEREF_FINDING", LDAP_DEREF_FINDING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_DEREF_ALWAYS", LDAP_DEREF_ALWAYS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_ADD", LDAP_MODIFY_BATCH_ADD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_REMOVE", LDAP_MODIFY_BATCH_REMOVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_REMOVE_ALL", LDAP_MODIFY_BATCH_REMOVE_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_REPLACE", LDAP_MODIFY_BATCH_REPLACE, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_ATTRIB", LDAP_MODIFY_BATCH_ATTRIB, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_MODTYPE", LDAP_MODIFY_BATCH_MODTYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_VALUES", LDAP_MODIFY_BATCH_VALUES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_DEREF_NEVER", LDAP_DEREF_NEVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_DEREF_SEARCHING", LDAP_DEREF_SEARCHING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_DEREF_FINDING", LDAP_DEREF_FINDING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_DEREF_ALWAYS", LDAP_DEREF_ALWAYS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_ADD", LDAP_MODIFY_BATCH_ADD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_REMOVE", LDAP_MODIFY_BATCH_REMOVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_REMOVE_ALL", LDAP_MODIFY_BATCH_REMOVE_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_MODIFY_BATCH_REPLACE", LDAP_MODIFY_BATCH_REPLACE, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_ATTRIB", LDAP_MODIFY_BATCH_ATTRIB, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_MODTYPE", LDAP_MODIFY_BATCH_MODTYPE, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_MODIFY_BATCH_VALUES", LDAP_MODIFY_BATCH_VALUES, CONST_PERSISTENT); #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_DEREF", LDAP_OPT_DEREF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_DEREF", LDAP_OPT_DEREF, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_SIZELIMIT", LDAP_OPT_SIZELIMIT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_SIZELIMIT", LDAP_OPT_SIZELIMIT, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_TIMELIMIT", LDAP_OPT_TIMELIMIT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_TIMELIMIT", LDAP_OPT_TIMELIMIT, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) && defined(LDAP_OPT_NETWORK_TIMEOUT) - REGISTER_LONG_CONSTANT("LDAP_OPT_NETWORK_TIMEOUT", LDAP_OPT_NETWORK_TIMEOUT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_NETWORK_TIMEOUT", LDAP_OPT_NETWORK_TIMEOUT, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) && (!defined(LDAP_OPT_NETWORK_TIMEOUT) && defined(LDAP_X_OPT_CONNECT_TIMEOUT)) - REGISTER_LONG_CONSTANT("LDAP_OPT_NETWORK_TIMEOUT", LDAP_X_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_NETWORK_TIMEOUT", LDAP_X_OPT_CONNECT_TIMEOUT, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) && defined(LDAP_OPT_TIMEOUT) - REGISTER_LONG_CONSTANT("LDAP_OPT_TIMEOUT", LDAP_OPT_TIMEOUT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_TIMEOUT", LDAP_OPT_TIMEOUT, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_PROTOCOL_VERSION", LDAP_OPT_PROTOCOL_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_PROTOCOL_VERSION", LDAP_OPT_PROTOCOL_VERSION, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_ERROR_NUMBER", LDAP_OPT_ERROR_NUMBER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_ERROR_NUMBER", LDAP_OPT_ERROR_NUMBER, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_REFERRALS", LDAP_OPT_REFERRALS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_REFERRALS", LDAP_OPT_REFERRALS, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) && defined(LDAP_OPT_RESTART) - REGISTER_LONG_CONSTANT("LDAP_OPT_RESTART", LDAP_OPT_RESTART, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_RESTART", LDAP_OPT_RESTART, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) && defined(LDAP_OPT_HOST_NAME) - REGISTER_LONG_CONSTANT("LDAP_OPT_HOST_NAME", LDAP_OPT_HOST_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_HOST_NAME", LDAP_OPT_HOST_NAME, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_ERROR_STRING", LDAP_OPT_ERROR_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_ERROR_STRING", LDAP_OPT_ERROR_STRING, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) && defined(LDAP_OPT_MATCHED_DN) - REGISTER_LONG_CONSTANT("LDAP_OPT_MATCHED_DN", LDAP_OPT_MATCHED_DN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_MATCHED_DN", LDAP_OPT_MATCHED_DN, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_SERVER_CONTROLS", LDAP_OPT_SERVER_CONTROLS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_SERVER_CONTROLS", LDAP_OPT_SERVER_CONTROLS, CONST_PERSISTENT); #endif #if ((LDAP_API_VERSION > 2000) || defined(HAVE_ORALDAP)) - REGISTER_LONG_CONSTANT("LDAP_OPT_CLIENT_CONTROLS", LDAP_OPT_CLIENT_CONTROLS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_CLIENT_CONTROLS", LDAP_OPT_CLIENT_CONTROLS, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_DEBUG_LEVEL) - REGISTER_LONG_CONSTANT("LDAP_OPT_DEBUG_LEVEL", LDAP_OPT_DEBUG_LEVEL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_DEBUG_LEVEL", LDAP_OPT_DEBUG_LEVEL, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_DIAGNOSTIC_MESSAGE) - REGISTER_LONG_CONSTANT("LDAP_OPT_DIAGNOSTIC_MESSAGE", LDAP_OPT_DIAGNOSTIC_MESSAGE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_DIAGNOSTIC_MESSAGE", LDAP_OPT_DIAGNOSTIC_MESSAGE, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_SASL) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_MECH", LDAP_OPT_X_SASL_MECH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_MECH", LDAP_OPT_X_SASL_MECH, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_SASL) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_REALM", LDAP_OPT_X_SASL_REALM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_REALM", LDAP_OPT_X_SASL_REALM, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_SASL) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_AUTHCID", LDAP_OPT_X_SASL_AUTHCID, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_AUTHCID", LDAP_OPT_X_SASL_AUTHCID, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_SASL) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_AUTHZID", LDAP_OPT_X_SASL_AUTHZID, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_AUTHZID", LDAP_OPT_X_SASL_AUTHZID, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_SASL_NOCANON) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_NOCANON", LDAP_OPT_X_SASL_NOCANON, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_NOCANON", LDAP_OPT_X_SASL_NOCANON, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_SASL_USERNAME) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_USERNAME", LDAP_OPT_X_SASL_USERNAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_SASL_USERNAME", LDAP_OPT_X_SASL_USERNAME, CONST_PERSISTENT); #endif #if defined(ORALDAP) - REGISTER_LONG_CONSTANT("GSLC_SSL_NO_AUTH", GSLC_SSL_NO_AUTH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GSLC_SSL_NO_AUTH", GSLC_SSL_NO_AUTH, CONST_PERSISTENT); #endif #if defined(ORALDAP) - REGISTER_LONG_CONSTANT("GSLC_SSL_ONEWAY_AUTH", GSLC_SSL_ONEWAY_AUTH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GSLC_SSL_ONEWAY_AUTH", GSLC_SSL_ONEWAY_AUTH, CONST_PERSISTENT); #endif #if defined(ORALDAP) - REGISTER_LONG_CONSTANT("GSLC_SSL_TWOWAY_AUTH", GSLC_SSL_TWOWAY_AUTH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("GSLC_SSL_TWOWAY_AUTH", GSLC_SSL_TWOWAY_AUTH, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_REQUIRE_CERT", LDAP_OPT_X_TLS_REQUIRE_CERT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_REQUIRE_CERT", LDAP_OPT_X_TLS_REQUIRE_CERT, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_NEVER", LDAP_OPT_X_TLS_NEVER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_NEVER", LDAP_OPT_X_TLS_NEVER, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_HARD", LDAP_OPT_X_TLS_HARD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_HARD", LDAP_OPT_X_TLS_HARD, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_DEMAND", LDAP_OPT_X_TLS_DEMAND, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_DEMAND", LDAP_OPT_X_TLS_DEMAND, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_ALLOW", LDAP_OPT_X_TLS_ALLOW, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_ALLOW", LDAP_OPT_X_TLS_ALLOW, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_TRY", LDAP_OPT_X_TLS_TRY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_TRY", LDAP_OPT_X_TLS_TRY, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CACERTDIR", LDAP_OPT_X_TLS_CACERTDIR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CACERTDIR", LDAP_OPT_X_TLS_CACERTDIR, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CACERTFILE", LDAP_OPT_X_TLS_CACERTFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CACERTFILE", LDAP_OPT_X_TLS_CACERTFILE, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CERTFILE", LDAP_OPT_X_TLS_CERTFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CERTFILE", LDAP_OPT_X_TLS_CERTFILE, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CIPHER_SUITE", LDAP_OPT_X_TLS_CIPHER_SUITE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CIPHER_SUITE", LDAP_OPT_X_TLS_CIPHER_SUITE, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_KEYFILE", LDAP_OPT_X_TLS_KEYFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_KEYFILE", LDAP_OPT_X_TLS_KEYFILE, CONST_PERSISTENT); #endif #if (LDAP_API_VERSION > 2000) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_RANDOM_FILE", LDAP_OPT_X_TLS_RANDOM_FILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_RANDOM_FILE", LDAP_OPT_X_TLS_RANDOM_FILE, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_CRLCHECK) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRLCHECK", LDAP_OPT_X_TLS_CRLCHECK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRLCHECK", LDAP_OPT_X_TLS_CRLCHECK, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_CRLCHECK) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRL_NONE", LDAP_OPT_X_TLS_CRL_NONE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRL_NONE", LDAP_OPT_X_TLS_CRL_NONE, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_CRLCHECK) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRL_PEER", LDAP_OPT_X_TLS_CRL_PEER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRL_PEER", LDAP_OPT_X_TLS_CRL_PEER, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_CRLCHECK) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRL_ALL", LDAP_OPT_X_TLS_CRL_ALL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRL_ALL", LDAP_OPT_X_TLS_CRL_ALL, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_DHFILE) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_DHFILE", LDAP_OPT_X_TLS_DHFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_DHFILE", LDAP_OPT_X_TLS_DHFILE, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_CRLFILE) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRLFILE", LDAP_OPT_X_TLS_CRLFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_CRLFILE", LDAP_OPT_X_TLS_CRLFILE, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_PROTOCOL_MIN) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_MIN", LDAP_OPT_X_TLS_PROTOCOL_MIN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_MIN", LDAP_OPT_X_TLS_PROTOCOL_MIN, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_PROTOCOL_MIN) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_SSL2", LDAP_OPT_X_TLS_PROTOCOL_SSL2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_SSL2", LDAP_OPT_X_TLS_PROTOCOL_SSL2, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_PROTOCOL_MIN) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_SSL3", LDAP_OPT_X_TLS_PROTOCOL_SSL3, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_SSL3", LDAP_OPT_X_TLS_PROTOCOL_SSL3, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_PROTOCOL_MIN) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_TLS1_0", LDAP_OPT_X_TLS_PROTOCOL_TLS1_0, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_TLS1_0", LDAP_OPT_X_TLS_PROTOCOL_TLS1_0, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_PROTOCOL_MIN) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_TLS1_1", LDAP_OPT_X_TLS_PROTOCOL_TLS1_1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_TLS1_1", LDAP_OPT_X_TLS_PROTOCOL_TLS1_1, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_PROTOCOL_MIN) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_TLS1_2", LDAP_OPT_X_TLS_PROTOCOL_TLS1_2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PROTOCOL_TLS1_2", LDAP_OPT_X_TLS_PROTOCOL_TLS1_2, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_TLS_PACKAGE) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PACKAGE", LDAP_OPT_X_TLS_PACKAGE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_TLS_PACKAGE", LDAP_OPT_X_TLS_PACKAGE, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_KEEPALIVE_IDLE) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_KEEPALIVE_IDLE", LDAP_OPT_X_KEEPALIVE_IDLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_KEEPALIVE_IDLE", LDAP_OPT_X_KEEPALIVE_IDLE, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_KEEPALIVE_IDLE) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_KEEPALIVE_PROBES", LDAP_OPT_X_KEEPALIVE_PROBES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_KEEPALIVE_PROBES", LDAP_OPT_X_KEEPALIVE_PROBES, CONST_PERSISTENT); #endif #if defined(LDAP_OPT_X_KEEPALIVE_IDLE) - REGISTER_LONG_CONSTANT("LDAP_OPT_X_KEEPALIVE_INTERVAL", LDAP_OPT_X_KEEPALIVE_INTERVAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_OPT_X_KEEPALIVE_INTERVAL", LDAP_OPT_X_KEEPALIVE_INTERVAL, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("LDAP_ESCAPE_FILTER", PHP_LDAP_ESCAPE_FILTER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LDAP_ESCAPE_DN", PHP_LDAP_ESCAPE_DN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_ESCAPE_FILTER", PHP_LDAP_ESCAPE_FILTER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LDAP_ESCAPE_DN", PHP_LDAP_ESCAPE_DN, CONST_PERSISTENT); #if defined(HAVE_LDAP_EXTENDED_OPERATION_S) - REGISTER_STRING_CONSTANT("LDAP_EXOP_START_TLS", LDAP_EXOP_START_TLS, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_EXOP_START_TLS", LDAP_EXOP_START_TLS, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_EXTENDED_OPERATION_S) - REGISTER_STRING_CONSTANT("LDAP_EXOP_MODIFY_PASSWD", LDAP_EXOP_MODIFY_PASSWD, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_EXOP_MODIFY_PASSWD", LDAP_EXOP_MODIFY_PASSWD, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_EXTENDED_OPERATION_S) - REGISTER_STRING_CONSTANT("LDAP_EXOP_REFRESH", LDAP_EXOP_REFRESH, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_EXOP_REFRESH", LDAP_EXOP_REFRESH, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_EXTENDED_OPERATION_S) - REGISTER_STRING_CONSTANT("LDAP_EXOP_WHO_AM_I", LDAP_EXOP_WHO_AM_I, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_EXOP_WHO_AM_I", LDAP_EXOP_WHO_AM_I, CONST_PERSISTENT); #endif #if defined(HAVE_LDAP_EXTENDED_OPERATION_S) - REGISTER_STRING_CONSTANT("LDAP_EXOP_TURN", LDAP_EXOP_TURN, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_EXOP_TURN", LDAP_EXOP_TURN, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_MANAGEDSAIT) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_MANAGEDSAIT", LDAP_CONTROL_MANAGEDSAIT, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_MANAGEDSAIT", LDAP_CONTROL_MANAGEDSAIT, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_PROXY_AUTHZ) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_PROXY_AUTHZ", LDAP_CONTROL_PROXY_AUTHZ, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PROXY_AUTHZ", LDAP_CONTROL_PROXY_AUTHZ, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_SUBENTRIES) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_SUBENTRIES", LDAP_CONTROL_SUBENTRIES, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SUBENTRIES", LDAP_CONTROL_SUBENTRIES, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_VALUESRETURNFILTER) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_VALUESRETURNFILTER", LDAP_CONTROL_VALUESRETURNFILTER, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_VALUESRETURNFILTER", LDAP_CONTROL_VALUESRETURNFILTER, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_ASSERT) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_ASSERT", LDAP_CONTROL_ASSERT, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_ASSERT", LDAP_CONTROL_ASSERT, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_ASSERT) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_PRE_READ", LDAP_CONTROL_PRE_READ, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PRE_READ", LDAP_CONTROL_PRE_READ, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_ASSERT) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_POST_READ", LDAP_CONTROL_POST_READ, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_POST_READ", LDAP_CONTROL_POST_READ, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_SORTREQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_SORTREQUEST", LDAP_CONTROL_SORTREQUEST, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SORTREQUEST", LDAP_CONTROL_SORTREQUEST, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_SORTREQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_SORTRESPONSE", LDAP_CONTROL_SORTRESPONSE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SORTRESPONSE", LDAP_CONTROL_SORTRESPONSE, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_PAGEDRESULTS) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_PAGEDRESULTS", LDAP_CONTROL_PAGEDRESULTS, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PAGEDRESULTS", LDAP_CONTROL_PAGEDRESULTS, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_AUTHZID_REQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_AUTHZID_REQUEST", LDAP_CONTROL_AUTHZID_REQUEST, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_AUTHZID_REQUEST", LDAP_CONTROL_AUTHZID_REQUEST, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_AUTHZID_REQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_AUTHZID_RESPONSE", LDAP_CONTROL_AUTHZID_RESPONSE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_AUTHZID_RESPONSE", LDAP_CONTROL_AUTHZID_RESPONSE, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_SYNC) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC", LDAP_CONTROL_SYNC, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC", LDAP_CONTROL_SYNC, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_SYNC) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC_STATE", LDAP_CONTROL_SYNC_STATE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC_STATE", LDAP_CONTROL_SYNC_STATE, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_SYNC) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC_DONE", LDAP_CONTROL_SYNC_DONE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC_DONE", LDAP_CONTROL_SYNC_DONE, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_DONTUSECOPY) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_DONTUSECOPY", LDAP_CONTROL_DONTUSECOPY, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_DONTUSECOPY", LDAP_CONTROL_DONTUSECOPY, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_PASSWORDPOLICYREQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_PASSWORDPOLICYREQUEST", LDAP_CONTROL_PASSWORDPOLICYREQUEST, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PASSWORDPOLICYREQUEST", LDAP_CONTROL_PASSWORDPOLICYREQUEST, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_PASSWORDPOLICYREQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_PASSWORDPOLICYRESPONSE", LDAP_CONTROL_PASSWORDPOLICYRESPONSE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PASSWORDPOLICYRESPONSE", LDAP_CONTROL_PASSWORDPOLICYRESPONSE, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_X_INCREMENTAL_VALUES) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_INCREMENTAL_VALUES", LDAP_CONTROL_X_INCREMENTAL_VALUES, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_INCREMENTAL_VALUES", LDAP_CONTROL_X_INCREMENTAL_VALUES, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_X_INCREMENTAL_VALUES) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_DOMAIN_SCOPE", LDAP_CONTROL_X_DOMAIN_SCOPE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_DOMAIN_SCOPE", LDAP_CONTROL_X_DOMAIN_SCOPE, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_X_INCREMENTAL_VALUES) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_PERMISSIVE_MODIFY", LDAP_CONTROL_X_PERMISSIVE_MODIFY, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_PERMISSIVE_MODIFY", LDAP_CONTROL_X_PERMISSIVE_MODIFY, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_X_INCREMENTAL_VALUES) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_SEARCH_OPTIONS", LDAP_CONTROL_X_SEARCH_OPTIONS, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_SEARCH_OPTIONS", LDAP_CONTROL_X_SEARCH_OPTIONS, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_X_INCREMENTAL_VALUES) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_TREE_DELETE", LDAP_CONTROL_X_TREE_DELETE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_TREE_DELETE", LDAP_CONTROL_X_TREE_DELETE, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_X_INCREMENTAL_VALUES) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_EXTENDED_DN", LDAP_CONTROL_X_EXTENDED_DN, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_EXTENDED_DN", LDAP_CONTROL_X_EXTENDED_DN, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_VLVREQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_VLVREQUEST", LDAP_CONTROL_VLVREQUEST, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_VLVREQUEST", LDAP_CONTROL_VLVREQUEST, CONST_PERSISTENT); #endif #if defined(LDAP_CONTROL_VLVREQUEST) - REGISTER_STRING_CONSTANT("LDAP_CONTROL_VLVRESPONSE", LDAP_CONTROL_VLVRESPONSE, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_VLVRESPONSE", LDAP_CONTROL_VLVRESPONSE, CONST_PERSISTENT); #endif #if defined(HAVE_ORALDAP) diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c index 21ad5df2c3ce0..270a0367481bf 100644 --- a/ext/libxml/libxml.c +++ b/ext/libxml/libxml.c @@ -228,23 +228,11 @@ static PHP_GINIT_FUNCTION(libxml) ZVAL_UNDEF(&libxml_globals->stream_context); libxml_globals->error_buffer.s = NULL; libxml_globals->error_list = NULL; - ZVAL_UNDEF(&libxml_globals->entity_loader.object); + ZVAL_NULL(&libxml_globals->entity_loader.callback); libxml_globals->entity_loader.fci.size = 0; libxml_globals->entity_loader_disabled = 0; } -static void _php_libxml_destroy_fci(zend_fcall_info *fci, zval *object) -{ - if (fci->size > 0) { - zval_ptr_dtor(&fci->function_name); - fci->size = 0; - } - if (!Z_ISUNDEF_P(object)) { - zval_ptr_dtor(object); - ZVAL_UNDEF(object); - } -} - /* Channel libxml file io layer through the PHP streams subsystem. * This allows use of ftps:// and https:// urls */ @@ -775,7 +763,7 @@ PHP_LIBXML_API void php_libxml_initialize(void) PHP_LIBXML_API void php_libxml_shutdown(void) { if (_php_libxml_initialized) { -#ifdef LIBXML_SCHEMAS_ENABLED +#if defined(LIBXML_SCHEMAS_ENABLED) && LIBXML_VERSION < 21000 xmlRelaxNGCleanupTypes(); #endif /* xmlCleanupParser(); */ @@ -851,7 +839,9 @@ static PHP_RINIT_FUNCTION(libxml) static PHP_RSHUTDOWN_FUNCTION(libxml) { - _php_libxml_destroy_fci(&LIBXML(entity_loader).fci, &LIBXML(entity_loader).object); + LIBXML(entity_loader).fci.size = 0; + zval_ptr_dtor_nogc(&LIBXML(entity_loader).callback); + ZVAL_NULL(&LIBXML(entity_loader).callback); return SUCCESS; } @@ -1071,29 +1061,36 @@ PHP_FUNCTION(libxml_disable_entity_loader) /* {{{ Changes the default external entity loader */ PHP_FUNCTION(libxml_set_external_entity_loader) { + zval *callback; zend_fcall_info fci; zend_fcall_info_cache fcc; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_FUNC_OR_NULL(fci, fcc) + Z_PARAM_FUNC_OR_NULL_WITH_ZVAL(fci, fcc, callback) ZEND_PARSE_PARAMETERS_END(); - _php_libxml_destroy_fci(&LIBXML(entity_loader).fci, &LIBXML(entity_loader).object); - if (ZEND_FCI_INITIALIZED(fci)) { /* argument not null */ LIBXML(entity_loader).fci = fci; - Z_ADDREF(fci.function_name); - if (fci.object != NULL) { - ZVAL_OBJ(&LIBXML(entity_loader).object, fci.object); - Z_ADDREF(LIBXML(entity_loader).object); - } LIBXML(entity_loader).fcc = fcc; + } else { + LIBXML(entity_loader).fci.size = 0; } - + if (!Z_ISNULL(LIBXML(entity_loader).callback)) { + zval_ptr_dtor_nogc(&LIBXML(entity_loader).callback); + } + ZVAL_COPY(&LIBXML(entity_loader).callback, callback); RETURN_TRUE; } /* }}} */ +/* {{{ Get the current external entity loader, or null if the default loader is installer. */ +PHP_FUNCTION(libxml_get_external_entity_loader) +{ + ZEND_PARSE_PARAMETERS_NONE(); + RETURN_COPY(&LIBXML(entity_loader).callback); +} +/* }}} */ + /* {{{ Common functions shared by extensions */ int php_libxml_xmlCheckUTF8(const unsigned char *s) { diff --git a/ext/libxml/libxml.stub.php b/ext/libxml/libxml.stub.php index 747e43d035b14..97793f0cdeea9 100644 --- a/ext/libxml/libxml.stub.php +++ b/ext/libxml/libxml.stub.php @@ -177,3 +177,5 @@ function libxml_clear_errors(): void {} function libxml_disable_entity_loader(bool $disable = true): bool {} function libxml_set_external_entity_loader(?callable $resolver_function): bool {} + +function libxml_get_external_entity_loader(): ?callable {} diff --git a/ext/libxml/libxml_arginfo.h b/ext/libxml/libxml_arginfo.h index 09ba9fa5871a0..bd143cbed4df0 100644 --- a/ext/libxml/libxml_arginfo.h +++ b/ext/libxml/libxml_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: d0c03ca63f0403ea38a59bde94510715e993b423 */ + * Stub hash: 8fa6f4fa2f3eb8db944626b5b3d814f5e3ae04a3 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_libxml_set_streams_context, 0, 1, IS_VOID, 0) ZEND_ARG_INFO(0, context) @@ -26,6 +26,9 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_libxml_set_external_entity_loade ZEND_ARG_TYPE_INFO(0, resolver_function, IS_CALLABLE, 1) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_libxml_get_external_entity_loader, 0, 0, IS_CALLABLE, 1) +ZEND_END_ARG_INFO() + ZEND_FUNCTION(libxml_set_streams_context); ZEND_FUNCTION(libxml_use_internal_errors); @@ -34,6 +37,7 @@ ZEND_FUNCTION(libxml_get_errors); ZEND_FUNCTION(libxml_clear_errors); ZEND_FUNCTION(libxml_disable_entity_loader); ZEND_FUNCTION(libxml_set_external_entity_loader); +ZEND_FUNCTION(libxml_get_external_entity_loader); static const zend_function_entry ext_functions[] = { @@ -44,6 +48,7 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(libxml_clear_errors, arginfo_libxml_clear_errors) ZEND_DEP_FE(libxml_disable_entity_loader, arginfo_libxml_disable_entity_loader) ZEND_FE(libxml_set_external_entity_loader, arginfo_libxml_set_external_entity_loader) + ZEND_FE(libxml_get_external_entity_loader, arginfo_libxml_get_external_entity_loader) ZEND_FE_END }; @@ -54,41 +59,41 @@ static const zend_function_entry class_LibXMLError_methods[] = { static void register_libxml_symbols(int module_number) { - REGISTER_LONG_CONSTANT("LIBXML_VERSION", LIBXML_VERSION, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("LIBXML_DOTTED_VERSION", LIBXML_DOTTED_VERSION, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("LIBXML_LOADED_VERSION", PHP_LIBXML_LOADED_VERSION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NOENT", XML_PARSE_NOENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_DTDLOAD", XML_PARSE_DTDLOAD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_DTDATTR", XML_PARSE_DTDATTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_DTDVALID", XML_PARSE_DTDVALID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NOERROR", XML_PARSE_NOERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NOWARNING", XML_PARSE_NOWARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NOBLANKS", XML_PARSE_NOBLANKS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_XINCLUDE", XML_PARSE_XINCLUDE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NSCLEAN", XML_PARSE_NSCLEAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NOCDATA", XML_PARSE_NOCDATA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NONET", XML_PARSE_NONET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_PEDANTIC", XML_PARSE_PEDANTIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_COMPACT", XML_PARSE_COMPACT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_NOXMLDECL", XML_SAVE_NO_DECL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_PARSEHUGE", XML_PARSE_HUGE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_VERSION", LIBXML_VERSION, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LIBXML_DOTTED_VERSION", LIBXML_DOTTED_VERSION, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LIBXML_LOADED_VERSION", PHP_LIBXML_LOADED_VERSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NOENT", XML_PARSE_NOENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_DTDLOAD", XML_PARSE_DTDLOAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_DTDATTR", XML_PARSE_DTDATTR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_DTDVALID", XML_PARSE_DTDVALID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NOERROR", XML_PARSE_NOERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NOWARNING", XML_PARSE_NOWARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NOBLANKS", XML_PARSE_NOBLANKS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_XINCLUDE", XML_PARSE_XINCLUDE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NSCLEAN", XML_PARSE_NSCLEAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NOCDATA", XML_PARSE_NOCDATA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NONET", XML_PARSE_NONET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_PEDANTIC", XML_PARSE_PEDANTIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_COMPACT", XML_PARSE_COMPACT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NOXMLDECL", XML_SAVE_NO_DECL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_PARSEHUGE", XML_PARSE_HUGE, CONST_PERSISTENT); #if LIBXML_VERSION >= 20900 - REGISTER_LONG_CONSTANT("LIBXML_BIGLINES", XML_PARSE_BIG_LINES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_BIGLINES", XML_PARSE_BIG_LINES, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("LIBXML_NOEMPTYTAG", LIBXML_SAVE_NOEMPTYTAG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_NOEMPTYTAG", LIBXML_SAVE_NOEMPTYTAG, CONST_PERSISTENT); #if defined(LIBXML_SCHEMAS_ENABLED) - REGISTER_LONG_CONSTANT("LIBXML_SCHEMA_CREATE", XML_SCHEMA_VAL_VC_I_CREATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_SCHEMA_CREATE", XML_SCHEMA_VAL_VC_I_CREATE, CONST_PERSISTENT); #endif #if LIBXML_VERSION >= 20707 - REGISTER_LONG_CONSTANT("LIBXML_HTML_NOIMPLIED", HTML_PARSE_NOIMPLIED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_HTML_NOIMPLIED", HTML_PARSE_NOIMPLIED, CONST_PERSISTENT); #endif #if LIBXML_VERSION >= 20708 - REGISTER_LONG_CONSTANT("LIBXML_HTML_NODEFDTD", HTML_PARSE_NODEFDTD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_HTML_NODEFDTD", HTML_PARSE_NODEFDTD, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("LIBXML_ERR_NONE", XML_ERR_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_ERR_WARNING", XML_ERR_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_ERR_ERROR", XML_ERR_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXML_ERR_FATAL", XML_ERR_FATAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_ERR_NONE", XML_ERR_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_ERR_WARNING", XML_ERR_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_ERR_ERROR", XML_ERR_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXML_ERR_FATAL", XML_ERR_FATAL, CONST_PERSISTENT); } static zend_class_entry *register_class_LibXMLError(void) diff --git a/ext/libxml/php_libxml.h b/ext/libxml/php_libxml.h index 0e014f451af75..96217fd778627 100644 --- a/ext/libxml/php_libxml.h +++ b/ext/libxml/php_libxml.h @@ -43,8 +43,8 @@ ZEND_BEGIN_MODULE_GLOBALS(libxml) smart_str error_buffer; zend_llist *error_list; struct _php_libxml_entity_resolver { - zval object; - zend_fcall_info fci; + zval callback; + zend_fcall_info fci; zend_fcall_info_cache fcc; } entity_loader; bool entity_loader_disabled; diff --git a/ext/libxml/php_libxml2.def b/ext/libxml/php_libxml2.def index f4be787c8abde..5980df8bf8891 100644 --- a/ext/libxml/php_libxml2.def +++ b/ext/libxml/php_libxml2.def @@ -1,5 +1,4 @@ EXPORTS -__docbDefaultSAXHandler __htmlDefaultSAXHandler __oldXMLWDcompatibility __xmlBufferAllocScheme @@ -53,17 +52,6 @@ cdataBlock characters checkNamespace comment -docbCreateFileParserCtxt -docbCreatePushParserCtxt -docbDefaultSAXHandlerInit -docbEncodeEntities -docbFreeParserCtxt -docbParseChunk -docbParseDoc -docbParseDocument -docbParseFile -docbSAXParseDoc -docbSAXParseFile elementDecl endDocument endElement @@ -137,7 +125,6 @@ htmlSetMetaEncoding htmlTagLookup ignorableWhitespace initGenericErrorDefaultFunc -initdocbDefaultSAXHandler inithtmlDefaultSAXHandler initxmlDefaultSAXHandler inputPop @@ -801,7 +788,6 @@ xmlRegisterHTTPPostCallbacks xmlRegisterInputCallbacks xmlRegisterNodeDefault xmlRegisterOutputCallbacks -xmlRelaxNGCleanupTypes xmlRelaxNGDump xmlRelaxNGDumpTree xmlRelaxNGFree @@ -849,7 +835,6 @@ xmlSAX2HasExternalSubset xmlSAX2HasInternalSubset xmlSAX2IgnorableWhitespace xmlSAX2InitDefaultSAXHandler -xmlSAX2InitDocbDefaultSAXHandler xmlSAX2InitHtmlDefaultSAXHandler xmlSAX2InternalSubset xmlSAX2IsStandalone @@ -1523,27 +1508,8 @@ xmlXPathWrapExternal xmlXPathWrapNodeSet xmlXPathWrapString xmlXPatherror -xmlXPtrBuildNodeList xmlXPtrEval -xmlXPtrEvalRangePredicate -xmlXPtrFreeLocationSet -xmlXPtrLocationSetAdd -xmlXPtrLocationSetCreate -xmlXPtrLocationSetDel -xmlXPtrLocationSetMerge -xmlXPtrLocationSetRemove -xmlXPtrNewCollapsedRange xmlXPtrNewContext -xmlXPtrNewLocationSetNodeSet -xmlXPtrNewLocationSetNodes -xmlXPtrNewRange -xmlXPtrNewRangeNodeObject -xmlXPtrNewRangeNodePoint -xmlXPtrNewRangeNodes -xmlXPtrNewRangePointNode -xmlXPtrNewRangePoints -xmlXPtrRangeToFunction -xmlXPtrWrapLocationSet xmlBufContent xmlBufUse xmlBufferDetach diff --git a/ext/libxml/tests/libxml_get_external_entity_loader.phpt b/ext/libxml/tests/libxml_get_external_entity_loader.phpt new file mode 100644 index 0000000000000..48751d5cf2d2b --- /dev/null +++ b/ext/libxml/tests/libxml_get_external_entity_loader.phpt @@ -0,0 +1,36 @@ +--TEST-- +libxml_get_external_entity_loader() returns current handler +--EXTENSIONS-- +libxml +--FILE-- +name = $name; + } + + public function handle($public, $system, $context) { + return null; + } + + public function __toString() { + return "Handler#{$this->name}"; + } +} + +var_dump(libxml_get_external_entity_loader()); +libxml_set_external_entity_loader([new Handler('A'), 'handle']); +print libxml_get_external_entity_loader()[0] . "\n"; +libxml_set_external_entity_loader([new Handler('B'), 'handle']); +print libxml_get_external_entity_loader()[0] . "\n"; +libxml_set_external_entity_loader(null); +var_dump(libxml_get_external_entity_loader()); + +--EXPECT-- +NULL +Handler#A +Handler#B +NULL diff --git a/ext/libxml/tests/libxml_set_external_entity_loader_error2.phpt b/ext/libxml/tests/libxml_set_external_entity_loader_error2.phpt new file mode 100644 index 0000000000000..053551f5ff3e2 --- /dev/null +++ b/ext/libxml/tests/libxml_set_external_entity_loader_error2.phpt @@ -0,0 +1,14 @@ +--TEST-- +libxml_set_external_entity_loader() with non-callable argument +--EXTENSIONS-- +libxml +--FILE-- +getMessage() . "\n"; +} +?> +--EXPECT-- +Exception: libxml_set_external_entity_loader(): Argument #1 ($resolver_function) must be a valid callback or null, function "nonexistent_function" not found or invalid function name diff --git a/ext/mbstring/libmbfl/filters/mbfilter_7bit.c b/ext/mbstring/libmbfl/filters/mbfilter_7bit.c index 3097dabd26e95..208792720af46 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_7bit.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_7bit.c @@ -34,21 +34,18 @@ static size_t mb_7bit_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf, size_t bufsize, unsigned int *state); static void mb_wchar_to_7bit(uint32_t *in, size_t len, mb_convert_buf *buf, bool end); -const mbfl_encoding mbfl_encoding_7bit = { +const struct mbfl_convert_vtbl vtbl_7bit_wchar = { mbfl_no_encoding_7bit, - "7bit", - "7bit", - NULL, - NULL, - MBFL_ENCTYPE_SBCS, + mbfl_no_encoding_wchar, + mbfl_filt_conv_common_ctor, NULL, + mbfl_filt_conv_7bit_any, + mbfl_filt_conv_common_flush, NULL, - mb_7bit_to_wchar, - mb_wchar_to_7bit }; -const struct mbfl_convert_vtbl vtbl_8bit_7bit = { - mbfl_no_encoding_8bit, +const struct mbfl_convert_vtbl vtbl_wchar_7bit = { + mbfl_no_encoding_wchar, mbfl_no_encoding_7bit, mbfl_filt_conv_common_ctor, NULL, @@ -57,17 +54,19 @@ const struct mbfl_convert_vtbl vtbl_8bit_7bit = { NULL, }; -const struct mbfl_convert_vtbl vtbl_7bit_8bit = { +const mbfl_encoding mbfl_encoding_7bit = { mbfl_no_encoding_7bit, - mbfl_no_encoding_8bit, - mbfl_filt_conv_common_ctor, + "7bit", + "7bit", NULL, - mbfl_filt_conv_7bit_any, - mbfl_filt_conv_common_flush, NULL, + MBFL_ENCTYPE_SBCS, + &vtbl_7bit_wchar, + &vtbl_wchar_7bit, + mb_7bit_to_wchar, + mb_wchar_to_7bit }; - #define CK(statement) do { if ((statement) < 0) return (-1); } while (0) int mbfl_filt_conv_7bit_any(int c, mbfl_convert_filter *filter) @@ -75,7 +74,6 @@ int mbfl_filt_conv_7bit_any(int c, mbfl_convert_filter *filter) return (*filter->output_function)(c < 0x80 ? c : MBFL_BAD_INPUT, filter->data); } - int mbfl_filt_conv_any_7bit(int c, mbfl_convert_filter *filter) { if (c >= 0 && c < 0x80) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_base64.c b/ext/mbstring/libmbfl/filters/mbfilter_base64.c index 41d91ef6daf6c..ede3eef18ce7c 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_base64.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_base64.c @@ -337,6 +337,10 @@ static void mb_wchar_to_base64(uint32_t *in, size_t len, mb_convert_buf *buf, bo } if (end && bits) { + if (chars_output > 72) { + out = mb_convert_buf_add2(out, '\r', '\n'); + chars_output = 0; + } if (bits == 8) { out = mb_convert_buf_add4(out, mbfl_base64_table[(cache >> 2) & 0x3F], mbfl_base64_table[(cache & 0x3) << 4], '=', '='); } else { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_big5.c b/ext/mbstring/libmbfl/filters/mbfilter_big5.c index 7d389efc79e91..58f89d1b5759e 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_big5.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_big5.c @@ -257,6 +257,7 @@ static int mbfl_filt_conv_big5_wchar_flush(mbfl_convert_filter *filter) { if (filter->status == 1) { /* 2-byte character was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c b/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c index faa04f4eaa715..32a8bdf15f59a 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c @@ -322,6 +322,7 @@ static int mbfl_filt_conv_cp5022x_wchar_flush(mbfl_convert_filter *filter) * escape sequence was truncated */ CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); @@ -555,7 +556,9 @@ static int mbfl_filt_conv_wchar_cp50220_flush(mbfl_convert_filter *filter) if (filter->cache) { int s = mb_convert_kana_codepoint(filter->cache, 0, NULL, NULL, mode); + filter->filter_function = mbfl_filt_conv_wchar_cp50221; mbfl_filt_conv_wchar_cp50221(s, filter); + filter->filter_function = mbfl_filt_conv_wchar_cp50220; filter->cache = 0; } @@ -822,7 +825,7 @@ static int mbfl_filt_conv_wchar_cp50222_flush(mbfl_convert_filter *filter) CK((*filter->output_function)(0x28, filter->data)); /* '(' */ CK((*filter->output_function)(0x42, filter->data)); /* 'B' */ } - filter->status &= 0xff; + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); @@ -1041,7 +1044,6 @@ static void mb_wchar_to_cp50220(uint32_t *in, size_t len, mb_convert_buf *buf, b MB_CONVERT_BUF_LOAD(buf, out, limit); MB_CONVERT_BUF_ENSURE(buf, out, limit, len); - bool consumed = false; uint32_t w; if (buf->state & 0xFFFF00) { @@ -1060,10 +1062,10 @@ static void mb_wchar_to_cp50220(uint32_t *in, size_t len, mb_convert_buf *buf, b * but the 'next one' will come in a separate buffer */ buf->state |= w << 8; break; - } else { - w = mb_convert_kana_codepoint(w, len ? *in : 0, &consumed, NULL, MBFL_HAN2ZEN_KATAKANA | MBFL_HAN2ZEN_GLUE); } + bool consumed = false; + w = mb_convert_kana_codepoint(w, len ? *in : 0, &consumed, NULL, MBFL_HAN2ZEN_KATAKANA | MBFL_HAN2ZEN_GLUE); if (consumed) { /* Two successive codepoints were converted into one */ in++; len--; consumed = false; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c b/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c index 7d1a739f3369e..6311f9b72139a 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_cp51932.c @@ -178,6 +178,7 @@ static int mbfl_filt_conv_cp51932_wchar_flush(mbfl_convert_filter *filter) if (filter->status) { /* Input string was truncated */ (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + filter->status = 0; } if (filter->flush_function) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp932.c b/ext/mbstring/libmbfl/filters/mbfilter_cp932.c index ef7c47e967415..cf8e461e1d9c0 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cp932.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_cp932.c @@ -27,6 +27,36 @@ * */ +/* CP932 is Microsoft's version of Shift-JIS. + * + * What we call "SJIS-win" is a variant of CP932 which maps U+00A5 + * and U+203E the same way as eucJP-win; namely, instead of mapping + * U+00A5 (YEN SIGN) to 0x5C and U+203E (OVERLINE) to 0x7E, + * these codepoints are mapped to appropriate JIS X 0208 characters. + * + * When converting from Shift-JIS to Unicode, there is no difference + * between CP932 and "SJIS-win". + * + * Additional facts: + * + * • In the libmbfl library which formed the base for mbstring, "CP932" and + * "SJIS-win" were originally aliases. The differing mappings were added in + * December 2002. The libmbfl author later stated that this was done so that + * "CP932" would comply with a certain specification, while "SJIS-win" would + * maintain the existing mappings. He does not remember which specification + * it was. + * • The WHATWG specification for "Shift_JIS" (followed by web browsers) + * agrees with our mappings for "CP932". + * • Microsoft Windows' "best-fit" mappings for CP932 (via the + * WideCharToMultiByte API) convert U+00A5 to 0x5C, which also agrees with + * our mappings for "CP932". + * • glibc's iconv converts U+203E to CP932 0x7E, which again agrees with + * our mappings for "CP932". + * • When converting Shift-JIS to CP932, the conversion goes through Unicode. + * Shift-JIS 0x7E converts to U+203E, so mapping U+203E to 0x7E means that + * 0x7E will go to 0x7E when converting Shift-JIS to CP932. + */ + #include "mbfilter.h" #include "mbfilter_cp932.h" @@ -36,6 +66,7 @@ static int mbfl_filt_conv_cp932_wchar_flush(mbfl_convert_filter *filter); static size_t mb_cp932_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf, size_t bufsize, unsigned int *state); static void mb_wchar_to_cp932(uint32_t *in, size_t len, mb_convert_buf *buf, bool end); +static void mb_wchar_to_sjiswin(uint32_t *in, size_t len, mb_convert_buf *buf, bool end); static const unsigned char mblen_table_sjis[] = { /* 0x80-0x9f,0xE0-0xFF */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -56,7 +87,8 @@ static const unsigned char mblen_table_sjis[] = { /* 0x80-0x9f,0xE0-0xFF */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; -static const char *mbfl_encoding_cp932_aliases[] = {"MS932", "Windows-31J", "MS_Kanji", "SJIS-win", "SJIS-ms", "SJIS-open", NULL}; +static const char *mbfl_encoding_cp932_aliases[] = {"MS932", "Windows-31J", "MS_Kanji", NULL}; +static const char *mbfl_encoding_sjiswin_aliases[] = {"SJIS-ms", "SJIS-open", NULL}; const mbfl_encoding mbfl_encoding_cp932 = { mbfl_no_encoding_cp932, @@ -91,6 +123,39 @@ const struct mbfl_convert_vtbl vtbl_wchar_cp932 = { NULL, }; +const mbfl_encoding mbfl_encoding_sjiswin = { + mbfl_no_encoding_sjiswin, + "SJIS-win", + "Shift_JIS", + mbfl_encoding_sjiswin_aliases, + mblen_table_sjis, + MBFL_ENCTYPE_GL_UNSAFE, + &vtbl_sjiswin_wchar, + &vtbl_wchar_sjiswin, + mb_cp932_to_wchar, + mb_wchar_to_sjiswin +}; + +const struct mbfl_convert_vtbl vtbl_sjiswin_wchar = { + mbfl_no_encoding_sjiswin, + mbfl_no_encoding_wchar, + mbfl_filt_conv_common_ctor, + NULL, + mbfl_filt_conv_cp932_wchar, + mbfl_filt_conv_cp932_wchar_flush, + NULL, +}; + +const struct mbfl_convert_vtbl vtbl_wchar_sjiswin = { + mbfl_no_encoding_wchar, + mbfl_no_encoding_sjiswin, + mbfl_filt_conv_common_ctor, + NULL, + mbfl_filt_conv_wchar_sjiswin, + mbfl_filt_conv_common_flush, + NULL, +}; + #define CK(statement) do { if ((statement) < 0) return (-1); } while (0) #define SJIS_ENCODE(c1,c2,s1,s2) \ @@ -136,12 +201,7 @@ const struct mbfl_convert_vtbl vtbl_wchar_cp932 = { } \ } while (0) - -/* - * SJIS-win => wchar - */ -int -mbfl_filt_conv_cp932_wchar(int c, mbfl_convert_filter *filter) +int mbfl_filt_conv_cp932_wchar(int c, mbfl_convert_filter *filter) { int c1, s, s1, s2, w; @@ -217,6 +277,7 @@ static int mbfl_filt_conv_cp932_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + filter->status = 0; } if (filter->flush_function) { @@ -226,11 +287,7 @@ static int mbfl_filt_conv_cp932_wchar_flush(mbfl_convert_filter *filter) return 0; } -/* - * wchar => SJIS-win - */ -int -mbfl_filt_conv_wchar_cp932(int c, mbfl_convert_filter *filter) +int mbfl_filt_conv_wchar_cp932(int c, mbfl_convert_filter *filter) { int c1, c2, s1, s2; @@ -238,6 +295,8 @@ mbfl_filt_conv_wchar_cp932(int c, mbfl_convert_filter *filter) s2 = 0; if (c >= ucs_a1_jis_table_min && c < ucs_a1_jis_table_max) { s1 = ucs_a1_jis_table[c - ucs_a1_jis_table_min]; + } else if (c == 0x203E) { + s1 = 0x7E; } else if (c >= ucs_a2_jis_table_min && c < ucs_a2_jis_table_max) { s1 = ucs_a2_jis_table[c - ucs_a2_jis_table_min]; } else if (c >= ucs_i_jis_table_min && c < ucs_i_jis_table_max) { @@ -253,7 +312,7 @@ mbfl_filt_conv_wchar_cp932(int c, mbfl_convert_filter *filter) } if (s1 <= 0) { if (c == 0xa5) { /* YEN SIGN */ - s1 = 0x216F; /* FULLWIDTH YEN SIGN */ + s1 = 0x5C; } else if (c == 0xff3c) { /* FULLWIDTH REVERSE SOLIDUS */ s1 = 0x2140; } else if (c == 0x2225) { /* PARALLEL TO */ @@ -313,6 +372,20 @@ mbfl_filt_conv_wchar_cp932(int c, mbfl_convert_filter *filter) return 0; } +int mbfl_filt_conv_wchar_sjiswin(int c, mbfl_convert_filter *filter) +{ + if (c == 0xA5) { + CK((*filter->output_function)(0x81, filter->data)); + CK((*filter->output_function)(0x8F, filter->data)); + } else if (c == 0x203E) { + CK((*filter->output_function)(0x81, filter->data)); + CK((*filter->output_function)(0x50, filter->data)); + } else { + return mbfl_filt_conv_wchar_cp932(c, filter); + } + return 0; +} + static size_t mb_cp932_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf, size_t bufsize, unsigned int *state) { unsigned char *p = *in, *e = p + *in_len; @@ -388,6 +461,87 @@ static void mb_wchar_to_cp932(uint32_t *in, size_t len, mb_convert_buf *buf, boo MB_CONVERT_BUF_LOAD(buf, out, limit); MB_CONVERT_BUF_ENSURE(buf, out, limit, len * 2); + while (len--) { + uint32_t w = *in++; + unsigned int s1 = 0, s2 = 0, c1, c2; + + if (w >= ucs_a1_jis_table_min && w < ucs_a1_jis_table_max) { + s1 = ucs_a1_jis_table[w - ucs_a1_jis_table_min]; + } else if (w == 0x203E) { + s1 = 0x7E; + } else if (w >= ucs_a2_jis_table_min && w < ucs_a2_jis_table_max) { + s1 = ucs_a2_jis_table[w - ucs_a2_jis_table_min]; + } else if (w >= ucs_i_jis_table_min && w < ucs_i_jis_table_max) { + s1 = ucs_i_jis_table[w - ucs_i_jis_table_min]; + } else if (w >= ucs_r_jis_table_min && w < ucs_r_jis_table_max) { + s1 = ucs_r_jis_table[w - ucs_r_jis_table_min]; + } else if (w >= 0xE000 && w < (0xE000 + 20*94)) { + s1 = w - 0xE000; + c1 = s1/94 + 0x7F; + c2 = s1%94 + 0x21; + s1 = (c1 << 8) | c2; + s2 = 1; + } + + if (w == 0xA5) { /* YEN SIGN */ + s1 = 0x5C; + } else if (w == 0xFF3C) { /* FULLWIDTH REVERSE SOLIDUS */ + s1 = 0x2140; + } else if (w == 0x2225) { /* PARALLEL TO */ + s1 = 0x2142; + } else if (w == 0xFF0D) { /* FULLWIDTH HYPHEN-MINUS */ + s1 = 0x215D; + } else if (w == 0xFFE0) { /* FULLWIDTH CENT SIGN */ + s1 = 0x2171; + } else if (w == 0xFFE1) { /* FULLWIDTH POUND SIGN */ + s1 = 0x2172; + } else if (w == 0xFFE2) { /* FULLWIDTH NOT SIGN */ + s1 = 0x224C; + } else if (w == 0) { + out = mb_convert_buf_add(out, 0); + continue; + } + + if (!s1 || (s1 >= 0x8080 && !s2)) { /* not found or X 0212 */ + for (unsigned int i = 0; i < cp932ext1_ucs_table_max - cp932ext1_ucs_table_min; i++) { + if (cp932ext1_ucs_table[i] == w) { + s1 = ((i/94 + 0x2D) << 8) + (i%94 + 0x21); + goto emit_output; + } + } + + for (unsigned int i = 0; i < cp932ext3_ucs_table_max - cp932ext3_ucs_table_min; i++) { + if (cp932ext3_ucs_table[i] == w) { + s1 = ((i/94 + 0x93) << 8) + (i%94 + 0x21); + goto emit_output; + } + } + + MB_CONVERT_ERROR(buf, out, limit, w, mb_wchar_to_cp932); + MB_CONVERT_BUF_ENSURE(buf, out, limit, len * 2); + continue; + } + +emit_output: + if (s1 < 0x100) { + out = mb_convert_buf_add(out, s1); + } else { + c1 = (s1 >> 8) & 0xFF; + c2 = s1 & 0xFF; + SJIS_ENCODE(c1, c2, s1, s2); + out = mb_convert_buf_add2(out, s1, s2); + } + } + + MB_CONVERT_BUF_STORE(buf, out, limit); +} + +static void mb_wchar_to_sjiswin(uint32_t *in, size_t len, mb_convert_buf *buf, bool end) +{ + unsigned char *out, *limit; + MB_CONVERT_BUF_LOAD(buf, out, limit); + MB_CONVERT_BUF_ENSURE(buf, out, limit, len * 2); + while (len--) { uint32_t w = *in++; unsigned int s1 = 0, s2 = 0, c1, c2; @@ -402,7 +556,7 @@ static void mb_wchar_to_cp932(uint32_t *in, size_t len, mb_convert_buf *buf, boo s1 = ucs_r_jis_table[w - ucs_r_jis_table_min]; } else if (w >= 0xE000 && w < (0xE000 + 20*94)) { s1 = w - 0xE000; - c1 = s1/94 + 0x7f; + c1 = s1/94 + 0x7F; c2 = s1%94 + 0x21; s1 = (c1 << 8) | c2; s2 = 1; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp932.h b/ext/mbstring/libmbfl/filters/mbfilter_cp932.h index 031276ddf1470..8dce3ab9e91d8 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cp932.h +++ b/ext/mbstring/libmbfl/filters/mbfilter_cp932.h @@ -36,7 +36,12 @@ extern const mbfl_encoding mbfl_encoding_cp932; extern const struct mbfl_convert_vtbl vtbl_cp932_wchar; extern const struct mbfl_convert_vtbl vtbl_wchar_cp932; +extern const mbfl_encoding mbfl_encoding_sjiswin; +extern const struct mbfl_convert_vtbl vtbl_sjiswin_wchar; +extern const struct mbfl_convert_vtbl vtbl_wchar_sjiswin; + int mbfl_filt_conv_cp932_wchar(int c, mbfl_convert_filter *filter); int mbfl_filt_conv_wchar_cp932(int c, mbfl_convert_filter *filter); +int mbfl_filt_conv_wchar_sjiswin(int c, mbfl_convert_filter *filter); #endif /* MBFL_MBFILTER_CP932_H */ diff --git a/ext/mbstring/libmbfl/filters/mbfilter_cp936.c b/ext/mbstring/libmbfl/filters/mbfilter_cp936.c index 5591608afa87d..40ae8c86f9119 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_cp936.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_cp936.c @@ -166,6 +166,7 @@ static int mbfl_filt_conv_cp936_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { /* 2-byte character was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c index f179d602505a2..50a0368a923f4 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c @@ -209,6 +209,7 @@ static int mbfl_filt_conv_euccn_wchar_flush(mbfl_convert_filter *filter) { if (filter->status == 1) { /* 2-byte character was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c index d83c47bd67006..2b0ae77534d56 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c @@ -180,6 +180,7 @@ static int mbfl_filt_conv_eucjp_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + filter->status = 0; } if (filter->flush_function) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c index 4845abda5c280..09287a9d8f634 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c @@ -226,6 +226,7 @@ static int mbfl_filt_conv_eucjpwin_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + filter->status = 0; } if (filter->flush_function) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c index fd7bb3b9f7c1e..69e6811922e30 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c @@ -193,6 +193,7 @@ static int mbfl_filt_conv_euckr_wchar_flush(mbfl_convert_filter *filter) { if (filter->status == 1) { /* 2-byte character was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c b/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c index 571b711bdf6c7..de1deb47705f1 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c @@ -245,6 +245,7 @@ static int mbfl_filt_conv_euctw_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { /* 2-byte or 4-byte character was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c b/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c index c95fd1ebd8491..492df6046244f 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_gb18030.c @@ -231,6 +231,7 @@ static int mbfl_filt_conv_gb18030_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { /* multi-byte character was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c index d463ae714a611..afebdfd00811f 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_htmlent.c @@ -180,7 +180,7 @@ int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter) int pos; unsigned int ent = 0; mbfl_html_entity_entry *entity; - char *buffer = (char*)filter->opaque; + unsigned char *buffer = (unsigned char*)filter->opaque; if (!filter->status) { if (c == '&' ) { @@ -196,7 +196,7 @@ int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter) if (filter->status > 3) { /* numeric entity */ for (pos=3; posstatus; pos++) { - int v = buffer[pos]; + int v = buffer[pos]; if (v >= '0' && v <= '9') { v = v - '0'; } else if (v >= 'A' && v <= 'F') { @@ -242,13 +242,12 @@ int mbfl_filt_conv_html_dec(int c, mbfl_convert_filter *filter) CK((*filter->output_function)(c, filter->data)); } filter->status = 0; - /*php_error_docref("ref.mbstring", E_NOTICE, "mbstring decoded '%s'=%d", buffer, ent);*/ } else { /* named entity */ buffer[filter->status] = 0; entity = (mbfl_html_entity_entry *)mbfl_html_entity_list; while (entity->name) { - if (!strcmp(buffer+1, entity->name)) { + if (!strcmp((const char*)buffer+1, entity->name)) { ent = entity->code; break; } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_hz.c b/ext/mbstring/libmbfl/filters/mbfilter_hz.c index 8dc74c531d231..72e5963acfc18 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_hz.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_hz.c @@ -154,6 +154,8 @@ static int mbfl_filt_conv_hz_wchar_flush(mbfl_convert_filter *filter) CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } + filter->status = 0; + if (filter->flush_function) { (*filter->flush_function)(filter->data); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c index 94e2e4bd84844..65b6d66d2ec2e 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c @@ -219,6 +219,7 @@ static int mbfl_filt_conv_2022jpms_wchar_flush(mbfl_convert_filter *filter) if (filter->status & 0xF) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); @@ -354,6 +355,7 @@ int mbfl_filt_conv_any_2022jpms_flush(mbfl_convert_filter *filter) CK((*filter->output_function)('(', filter->data)); CK((*filter->output_function)('B', filter->data)); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c index e858025eb75ab..c4b2bf0b9f1b9 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022_kr.c @@ -145,7 +145,7 @@ int mbfl_filt_conv_2022kr_wchar(int c, mbfl_convert_filter *filter) if (c == '$') { filter->status++; } else { - filter->status = 0; + filter->status &= ~0xF; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } break; @@ -154,7 +154,7 @@ int mbfl_filt_conv_2022kr_wchar(int c, mbfl_convert_filter *filter) if (c == ')') { filter->status++; } else { - filter->status = 0; + filter->status &= ~0xF; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } break; @@ -178,6 +178,7 @@ static int mbfl_filt_conv_2022kr_wchar_flush(mbfl_convert_filter *filter) /* 2-byte character was truncated */ CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); @@ -257,6 +258,10 @@ int mbfl_filt_conv_wchar_2022kr(int c, mbfl_convert_filter *filter) static int mbfl_filt_conv_any_2022kr_flush(mbfl_convert_filter *filter) { + if (filter->status & 0xF) { + /* Escape sequence or 2-byte character was truncated */ + (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + } /* back to ascii */ if (filter->status & 0x10) { CK((*filter->output_function)(0x0f, filter->data)); /* shift in */ @@ -304,7 +309,6 @@ static size_t mb_iso2022kr_to_wchar(unsigned char **in, size_t *in_len, uint32_t p--; } *out++ = MBFL_BAD_INPUT; - *state = ASCII; } } else if (c == 0xF) { *state = ASCII; diff --git a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c index 91bf0f30a56e7..ded492cafc13a 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c @@ -313,6 +313,7 @@ static int mbfl_filt_conv_2022jp_mobile_wchar_flush(mbfl_convert_filter *filter) if (filter->status & 0xF) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); @@ -483,6 +484,7 @@ static int mbfl_filt_conv_wchar_2022jp_mobile_flush(mbfl_convert_filter *filter) if ((filter->status & 0xFF) == 1 && (c1 == '#' || (c1 >= '0' && c1 <= '9'))) { (*filter->output_function)(c1, filter->data); } + filter->status = filter->cache = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); diff --git a/ext/mbstring/libmbfl/filters/mbfilter_jis.c b/ext/mbstring/libmbfl/filters/mbfilter_jis.c index 536020fe2c809..af3c24ea6366f 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_jis.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_jis.c @@ -271,6 +271,7 @@ static int mbfl_filt_conv_jis_wchar_flush(mbfl_convert_filter *filter) * or else escape sequence was truncated */ CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); @@ -451,7 +452,7 @@ mbfl_filt_conv_any_jis_flush(mbfl_convert_filter *filter) CK((*filter->output_function)(0x28, filter->data)); /* '(' */ CK((*filter->output_function)(0x42, filter->data)); /* 'B' */ } - filter->status &= 0xff; + filter->status = 0; if (filter->flush_function != NULL) { return (*filter->flush_function)(filter->data); @@ -480,6 +481,8 @@ static size_t mb_iso2022jp_to_wchar(unsigned char **in, size_t *in_len, uint32_t /* ESC seen; this is an escape sequence */ if ((e - p) < 2) { *out++ = MBFL_BAD_INPUT; + if (p != e && (*p == '$' || *p == '(')) + p++; continue; } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis.c index 420c027b4cea0..1f52e0aa97786 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis.c @@ -183,6 +183,7 @@ static int mbfl_filt_conv_sjis_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + filter->status = 0; } if (filter->flush_function) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c index 4f09af3b73663..a62a9764145ce 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c @@ -491,6 +491,7 @@ int mbfl_filt_conv_jis2004_wchar_flush(mbfl_convert_filter *filter) if (filter->status & 0xF) { CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } + filter->status = 0; if (filter->flush_function) { return (*filter->flush_function)(filter->data); @@ -633,6 +634,8 @@ int mbfl_filt_conv_wchar_jis2004(int c, mbfl_convert_filter *filter) if (filter->to->no_encoding == mbfl_no_encoding_eucjp2004) { CK((*filter->output_function)(0x8e, filter->data)); CK((*filter->output_function)(s1, filter->data)); + } else if (filter->to->no_encoding == mbfl_no_encoding_sjis2004 && (s1 >= 0xA1 && s1 <= 0xDF)) { + CK((*filter->output_function)(s1, filter->data)); } else { CK(mbfl_filt_conv_illegal_output(c, filter)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c index 7962639d34191..0cb93cc38e8c7 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c @@ -266,6 +266,7 @@ mbfl_filt_conv_sjis_mac_wchar(int c, mbfl_convert_filter *filter) static int mbfl_filt_conv_sjis_mac_wchar_flush(mbfl_convert_filter *filter) { if (filter->status == 1) { + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c index b47b783627b86..31a1e3a4d777f 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c @@ -722,6 +722,7 @@ static int mbfl_filt_conv_sjis_wchar_flush(mbfl_convert_filter *filter) if (filter->status && filter->status != 4) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); @@ -826,6 +827,7 @@ int mbfl_filt_conv_sjis_mobile_flush(mbfl_convert_filter *filter) { int c1 = filter->cache; if (filter->status == 1 && (c1 == '#' || (c1 >= '0' && c1 <= '9'))) { + filter->cache = filter->status = 0; CK((*filter->output_function)(c1, filter->data)); } else if (filter->status == 2) { /* First of a pair of Regional Indicator codepoints came at the end of a string */ @@ -1341,7 +1343,7 @@ static size_t mb_sjis_sb_to_wchar(unsigned char **in, size_t *in_len, uint32_t * continue; } unsigned char c2 = *p++; - if (((c2 < 'E' || c2 > 'G') && (c2 < 'O' || c2 > 'Q')) || p == e) { + if ((c2 < 'E' || c2 > 'G') && (c2 < 'O' || c2 > 'Q')) { *out++ = MBFL_BAD_INPUT; continue; } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c b/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c index 9ee1e4bf63a89..3e0d0828cfa62 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_ucs2.c @@ -218,6 +218,7 @@ static int mbfl_filt_conv_ucs2_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { /* Input string was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c b/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c index 101fb4bb7c0a9..90312b8d501d5 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_ucs4.c @@ -301,6 +301,7 @@ static int mbfl_filt_conv_ucs4_wchar_flush(mbfl_convert_filter *filter) /* Input string was truncated */ CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } + filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); diff --git a/ext/mbstring/libmbfl/filters/mbfilter_uhc.c b/ext/mbstring/libmbfl/filters/mbfilter_uhc.c index bec134aabd2aa..2ac351d644cdb 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_uhc.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_uhc.c @@ -147,6 +147,7 @@ static int mbfl_filt_conv_uhc_wchar_flush(mbfl_convert_filter *filter) { if (filter->status == 1) { /* 2-byte character was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf16.c b/ext/mbstring/libmbfl/filters/mbfilter_utf16.c index 3a250a3134188..eddd56f362756 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf16.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf16.c @@ -323,6 +323,7 @@ static int mbfl_filt_conv_utf16_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { /* Input string was truncated */ + filter->status = 0; CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf32.c b/ext/mbstring/libmbfl/filters/mbfilter_utf32.c index a6594ed75162e..e8cd4ad454f2e 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf32.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf32.c @@ -233,6 +233,7 @@ static int mbfl_filt_conv_utf32_wchar_flush(mbfl_convert_filter *filter) /* Input string was truncated */ CK((*filter->output_function)(MBFL_BAD_INPUT, filter->data)); } + filter->cache = filter->status = 0; if (filter->flush_function) { (*filter->flush_function)(filter->data); diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf7.c b/ext/mbstring/libmbfl/filters/mbfilter_utf7.c index 82cd202cfdbc6..bcc590b680c83 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf7.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf7.c @@ -267,6 +267,7 @@ static int mbfl_filt_conv_utf7_wchar_flush(mbfl_convert_filter *filter) if (filter->cache) { /* Either we were expecting the 2nd half of a surrogate pair which * never came, or else the last Base64 data was not padded with zeroes */ + filter->cache = 0; (*filter->output_function)(MBFL_BAD_INPUT, filter->data); } @@ -373,6 +374,7 @@ int mbfl_filt_conv_wchar_utf7_flush(mbfl_convert_filter *filter) { int status = filter->status; int cache = filter->cache; + filter->status = filter->cache = 0; /* flush fragments */ switch (status) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c b/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c index 0ef5fba64d468..45722ce2c8904 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf7imap.c @@ -287,6 +287,7 @@ static int mbfl_filt_conv_utf7imap_wchar_flush(mbfl_convert_filter *filter) /* It is illegal for a UTF-7 IMAP string to end in a Base-64 encoded * section. It should always change back to ASCII before the end. */ (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + filter->status = 0; } if (filter->flush_function) { diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf8.c b/ext/mbstring/libmbfl/filters/mbfilter_utf8.c index fc18076ba68b3..6c7bad0e805ac 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf8.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf8.c @@ -180,6 +180,7 @@ int mbfl_filt_conv_utf8_wchar_flush(mbfl_convert_filter *filter) { if (filter->status) { (*filter->output_function)(MBFL_BAD_INPUT, filter->data); + filter->status = 0; } if (filter->flush_function) { @@ -256,8 +257,11 @@ static size_t mb_utf8_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf } } else { *out++ = MBFL_BAD_INPUT; - while (p < e && (*p & 0xC0) == 0x80) { + if (p < e && (c != 0xE0 || *p >= 0xA0) && (c != 0xED || *p < 0xA0) && (*p & 0xC0) == 0x80) { p++; + if (p < e && (*p & 0xC0) == 0x80) { + p++; + } } } } else if (c >= 0xF0 && c <= 0xF4) { /* 4 byte character */ @@ -285,7 +289,7 @@ static size_t mb_utf8_to_wchar(unsigned char **in, size_t *in_len, uint32_t *buf *out++ = MBFL_BAD_INPUT; if (p < e) { unsigned char c2 = *p; - if ((c == 0xF0 && c2 >= 0x90) || (c == 0xF4 && c2 < 0x90)) { + if ((c == 0xF0 && c2 >= 0x90) || (c == 0xF4 && c2 < 0x90) || (c >= 0xF1 && c <= 0xF3)) { while (p < e && (*p & 0xC0) == 0x80) { p++; } diff --git a/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c b/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c index d6c64e1b7780d..c573ec70f3bc9 100644 --- a/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c +++ b/ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c @@ -362,8 +362,11 @@ static size_t mb_mobile_utf8_to_wchar(unsigned char **in, size_t *in_len, uint32 } else if (c >= 0xE0 && c <= 0xEF) { if ((e - p) < 2) { *out++ = MBFL_BAD_INPUT; - while (p < e && (*p & 0xC0) == 0x80) { + if (p < e && (c != 0xE0 || *p >= 0xA0) && (c != 0xED || *p < 0xA0) && (*p & 0xC0) == 0x80) { p++; + if (p < e && (*p & 0xC0) == 0x80) { + p++; + } } continue; } @@ -386,7 +389,7 @@ static size_t mb_mobile_utf8_to_wchar(unsigned char **in, size_t *in_len, uint32 *out++ = MBFL_BAD_INPUT; if (p < e) { unsigned char c2 = *p; - if ((c == 0xF0 && c2 >= 0x90) || (c == 0xF4 && c2 < 0x90)) { + if ((c == 0xF0 && c2 >= 0x90) || (c == 0xF4 && c2 < 0x90) || (c >= 0xF1 && c <= 0xF3)) { while (p < e && (*p & 0xC0) == 0x80) { p++; } diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c index c6f75893ed738..f0737b9e6777c 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfl_convert.c +++ b/ext/mbstring/libmbfl/mbfl/mbfl_convert.c @@ -85,8 +85,6 @@ static const struct mbfl_convert_vtbl *mbfl_special_filter_list[] = { &vtbl_uuencode_8bit, &vtbl_8bit_qprint, &vtbl_qprint_8bit, - &vtbl_8bit_7bit, - &vtbl_7bit_8bit, &vtbl_pass, NULL }; @@ -302,13 +300,11 @@ int mbfl_filt_conv_illegal_output(int c, mbfl_convert_filter *filter) const struct mbfl_convert_vtbl* mbfl_convert_filter_get_vtbl(const mbfl_encoding *from, const mbfl_encoding *to) { if (to->no_encoding == mbfl_no_encoding_base64 || - to->no_encoding == mbfl_no_encoding_qprint || - to->no_encoding == mbfl_no_encoding_7bit) { + to->no_encoding == mbfl_no_encoding_qprint) { from = &mbfl_encoding_8bit; } else if (from->no_encoding == mbfl_no_encoding_base64 || from->no_encoding == mbfl_no_encoding_qprint || - from->no_encoding == mbfl_no_encoding_uuencode || - from->no_encoding == mbfl_no_encoding_7bit) { + from->no_encoding == mbfl_no_encoding_uuencode) { to = &mbfl_encoding_8bit; } @@ -353,6 +349,12 @@ zend_string* mb_fast_convert(unsigned char *in, size_t in_len, const mbfl_encodi uint32_t wchar_buf[128]; unsigned int state = 0; + if (to == &mbfl_encoding_base64 || to == &mbfl_encoding_qprint) { + from = &mbfl_encoding_8bit; + } else if (from == &mbfl_encoding_base64 || from == &mbfl_encoding_qprint || from == &mbfl_encoding_uuencode) { + to = &mbfl_encoding_8bit; + } + mb_convert_buf buf; mb_convert_buf_init(&buf, in_len, replacement_char, error_mode); diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c index f298eab6df238..2495f7447aa3a 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c +++ b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.c @@ -121,6 +121,7 @@ static const mbfl_encoding *mbfl_encoding_ptr_list[] = { &mbfl_encoding_utf8_kddi_b, &mbfl_encoding_utf8_sb, &mbfl_encoding_cp932, + &mbfl_encoding_sjiswin, &mbfl_encoding_cp51932, &mbfl_encoding_jis, &mbfl_encoding_2022jp, diff --git a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h index f8751f835f054..e5ae285098ea0 100644 --- a/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h +++ b/ext/mbstring/libmbfl/mbfl/mbfl_encoding.h @@ -75,6 +75,7 @@ enum mbfl_no_encoding { mbfl_no_encoding_sjis_mac, mbfl_no_encoding_sjis2004, mbfl_no_encoding_cp932, + mbfl_no_encoding_sjiswin, mbfl_no_encoding_cp51932, mbfl_no_encoding_jis, mbfl_no_encoding_2022jp, diff --git a/ext/mbstring/mb_gpc.c b/ext/mbstring/mb_gpc.c index cc87543357609..99a8ff903a1e4 100644 --- a/ext/mbstring/mb_gpc.c +++ b/ext/mbstring/mb_gpc.c @@ -27,7 +27,6 @@ #include "main/php_output.h" #include "ext/standard/info.h" -#include "php_variables.h" #include "php_globals.h" #include "rfc1867.h" #include "php_content_types.h" @@ -133,12 +132,10 @@ MBSTRING_API SAPI_TREAT_DATA_FUNC(mbstr_treat_data) info.data_type = arg; info.separator = separator; - info.report_errors = 0; + info.report_errors = false; info.to_encoding = MBSTRG(internal_encoding); - info.to_language = MBSTRG(language); info.from_encodings = MBSTRG(http_input_list); info.num_from_encodings = MBSTRG(http_input_list_size); - info.from_language = MBSTRG(language); MBSTRG(illegalchars) = 0; @@ -173,33 +170,23 @@ MBSTRING_API SAPI_TREAT_DATA_FUNC(mbstr_treat_data) /* }}} */ /* {{{ mbfl_no_encoding _php_mb_encoding_handler_ex() */ -const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_info_t *info, zval *arg, char *res) +const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_info_t *info, zval *array_ptr, char *res) { char *var, *val; - const char *s1, *s2; char *strtok_buf = NULL, **val_list = NULL; - zval *array_ptr = (zval *) arg; - size_t n, num, *len_list = NULL; - size_t val_len, new_val_len; - mbfl_string string, resvar, resval; + size_t n, num = 1, *len_list = NULL; + size_t new_val_len; const mbfl_encoding *from_encoding = NULL; mbfl_encoding_detector *identd = NULL; - mbfl_buffer_converter *convd = NULL; - - mbfl_string_init_set(&string, info->to_encoding); - mbfl_string_init_set(&resvar, info->to_encoding); - mbfl_string_init_set(&resval, info->to_encoding); if (!res || *res == '\0') { goto out; } - /* count the variables(separators) contained in the "res". - * separator may contain multiple separator chars. - */ - num = 1; - for (s1=res; *s1 != '\0'; s1++) { - for (s2=info->separator; *s2 != '\0'; s2++) { + /* count variables contained in `res`. + * separator may contain multiple separator chars; ANY of them demarcate variables */ + for (char *s1 = res; *s1; s1++) { + for (const char *s2 = info->separator; *s2; s2++) { if (*s1 == *s2) { num++; } @@ -212,7 +199,6 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i /* split and decode the query */ n = 0; - strtok_buf = NULL; var = php_strtok_r(res, info->separator, &strtok_buf); while (var) { val = strchr(var, '='); @@ -255,6 +241,7 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i if (identd != NULL) { n = 0; while (n < num) { + mbfl_string string; string.val = (unsigned char *)val_list[n]; string.len = len_list[n]; if (mbfl_encoding_detector_feed(identd, &string)) { @@ -273,62 +260,40 @@ const mbfl_encoding *_php_mb_encoding_handler_ex(const php_mb_encoding_handler_i } } - convd = NULL; - if (from_encoding != &mbfl_encoding_pass) { - convd = mbfl_buffer_converter_new(from_encoding, info->to_encoding, 0); - if (convd != NULL) { - mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); - mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); - } else { - if (info->report_errors) { - php_error_docref(NULL, E_WARNING, "Unable to create converter"); - } - goto out; - } - } - /* convert encoding */ - string.encoding = from_encoding; - n = 0; while (n < num) { - string.val = (unsigned char *)val_list[n]; - string.len = len_list[n]; - if (convd != NULL && mbfl_buffer_converter_feed_result(convd, &string, &resvar) != NULL) { - var = (char *)resvar.val; - } else { - var = val_list[n]; - } - n++; - string.val = (unsigned char *)val_list[n]; - string.len = len_list[n]; - if (convd != NULL && mbfl_buffer_converter_feed_result(convd, &string, &resval) != NULL) { - val = (char *)resval.val; - val_len = resval.len; + if (from_encoding != &mbfl_encoding_pass && info->to_encoding != &mbfl_encoding_pass) { + unsigned int num_errors = 0; + zend_string *converted_var = mb_fast_convert((unsigned char*)val_list[n], len_list[n], from_encoding, info->to_encoding, MBSTRG(current_filter_illegal_substchar), MBSTRG(current_filter_illegal_mode), &num_errors); + MBSTRG(illegalchars) += num_errors; + n++; + + num_errors = 0; + zend_string *converted_val = mb_fast_convert((unsigned char*)val_list[n], len_list[n], from_encoding, info->to_encoding, MBSTRG(current_filter_illegal_substchar), MBSTRG(current_filter_illegal_mode), &num_errors); + MBSTRG(illegalchars) += num_errors; + n++; + + /* `val` must be a pointer returned by `emalloc` */ + val = estrndup(ZSTR_VAL(converted_val), ZSTR_LEN(converted_val)); + if (sapi_module.input_filter(info->data_type, ZSTR_VAL(converted_var), &val, ZSTR_LEN(converted_val), &new_val_len)) { + /* add variable to symbol table */ + php_register_variable_safe(ZSTR_VAL(converted_var), val, new_val_len, array_ptr); + } + zend_string_free(converted_var); + zend_string_free(converted_val); } else { - val = val_list[n]; - val_len = len_list[n]; - } - n++; - /* we need val to be emalloc()ed */ - val = estrndup(val, val_len); - if (sapi_module.input_filter(info->data_type, var, &val, val_len, &new_val_len)) { - /* add variable to symbol table */ - php_register_variable_safe(var, val, new_val_len, array_ptr); + var = val_list[n++]; + val = estrndup(val_list[n], len_list[n]); + if (sapi_module.input_filter(info->data_type, var, &val, len_list[n], &new_val_len)) { + php_register_variable_safe(var, val, new_val_len, array_ptr); + } + n++; } efree(val); - - if (convd != NULL){ - mbfl_string_clear(&resvar); - mbfl_string_clear(&resval); - } } out: - if (convd != NULL) { - MBSTRG(illegalchars) += mbfl_buffer_illegalchars(convd); - mbfl_buffer_converter_delete(convd); - } if (val_list != NULL) { efree((void *)val_list); } @@ -351,12 +316,10 @@ SAPI_POST_HANDLER_FUNC(php_mb_post_handler) info.data_type = PARSE_POST; info.separator = "&"; - info.report_errors = 0; + info.report_errors = false; info.to_encoding = MBSTRG(internal_encoding); - info.to_language = MBSTRG(language); info.from_encodings = MBSTRG(http_input_list); info.num_from_encodings = MBSTRG(http_input_list_size); - info.from_language = MBSTRG(language); php_stream_rewind(SG(request_info).request_body); post_data_str = php_stream_copy_to_mem(SG(request_info).request_body, PHP_STREAM_COPY_ALL, 0); diff --git a/ext/mbstring/mb_gpc.h b/ext/mbstring/mb_gpc.h index 85d0dc1a6a26e..63337755cdea0 100644 --- a/ext/mbstring/mb_gpc.h +++ b/ext/mbstring/mb_gpc.h @@ -26,9 +26,7 @@ typedef struct _php_mb_encoding_handler_info_t { const mbfl_encoding **from_encodings; size_t num_from_encodings; int data_type; - unsigned int report_errors : 1; - enum mbfl_no_language to_language; - enum mbfl_no_language from_language; + bool report_errors; } php_mb_encoding_handler_info_t; /* }}}*/ diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index b9cfe628b4002..9735bfef80bb2 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -1531,12 +1531,10 @@ PHP_FUNCTION(mb_parse_str) info.data_type = PARSE_STRING; info.separator = PG(arg_separator).input; - info.report_errors = 1; + info.report_errors = true; info.to_encoding = MBSTRG(current_internal_encoding); - info.to_language = MBSTRG(language); info.from_encodings = MBSTRG(http_input_list); info.num_from_encodings = MBSTRG(http_input_list_size); - info.from_language = MBSTRG(language); detected = _php_mb_encoding_handler_ex(&info, track_vars_array, encstr); @@ -2502,7 +2500,7 @@ static zend_string* mb_trim_string(zend_string *input, zend_string *marker, cons /* Trim the string to terminal width; optional, add a 'trim marker' if it was truncated */ PHP_FUNCTION(mb_strimwidth) { - zend_string *str, *trimmarker, *encoding = NULL; + zend_string *str, *trimmarker = zend_empty_string, *encoding = NULL; zend_long from, width; ZEND_PARSE_PARAMETERS_START(3, 5) diff --git a/ext/mbstring/mbstring.stub.php b/ext/mbstring/mbstring.stub.php index bfd7024320d5e..0d04e34bc7823 100644 --- a/ext/mbstring/mbstring.stub.php +++ b/ext/mbstring/mbstring.stub.php @@ -118,7 +118,6 @@ function mb_strcut(string $string, int $start, ?int $length = null, ?string $enc function mb_strwidth(string $string, ?string $encoding = null): int {} -/** @refcount 1 */ function mb_strimwidth(string $string, int $start, int $width, string $trim_marker = "", ?string $encoding = null): string {} /** diff --git a/ext/mbstring/mbstring_arginfo.h b/ext/mbstring/mbstring_arginfo.h index c86209a55099f..3bf10789e0d6c 100644 --- a/ext/mbstring/mbstring_arginfo.h +++ b/ext/mbstring/mbstring_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 48835e813592a48570d258a97dbf00f2e19d8b3a */ + * Stub hash: 0c9ac8888b8332557f7098cfb9d259757af8b3c6 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mb_language, 0, 0, MAY_BE_STRING|MAY_BE_BOOL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, language, IS_STRING, 1, "null") @@ -494,14 +494,14 @@ static const zend_function_entry ext_functions[] = { static void register_mbstring_symbols(int module_number) { #if defined(HAVE_MBREGEX) - REGISTER_STRING_CONSTANT("MB_ONIGURUMA_VERSION", php_mb_oniguruma_version, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("MB_ONIGURUMA_VERSION", php_mb_oniguruma_version, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("MB_CASE_UPPER", PHP_UNICODE_CASE_UPPER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MB_CASE_LOWER", PHP_UNICODE_CASE_LOWER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MB_CASE_TITLE", PHP_UNICODE_CASE_TITLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MB_CASE_FOLD", PHP_UNICODE_CASE_FOLD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MB_CASE_UPPER_SIMPLE", PHP_UNICODE_CASE_UPPER_SIMPLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MB_CASE_LOWER_SIMPLE", PHP_UNICODE_CASE_LOWER_SIMPLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MB_CASE_TITLE_SIMPLE", PHP_UNICODE_CASE_TITLE_SIMPLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MB_CASE_FOLD_SIMPLE", PHP_UNICODE_CASE_FOLD_SIMPLE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_UPPER", PHP_UNICODE_CASE_UPPER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_LOWER", PHP_UNICODE_CASE_LOWER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_TITLE", PHP_UNICODE_CASE_TITLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_FOLD", PHP_UNICODE_CASE_FOLD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_UPPER_SIMPLE", PHP_UNICODE_CASE_UPPER_SIMPLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_LOWER_SIMPLE", PHP_UNICODE_CASE_LOWER_SIMPLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_TITLE_SIMPLE", PHP_UNICODE_CASE_TITLE_SIMPLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MB_CASE_FOLD_SIMPLE", PHP_UNICODE_CASE_FOLD_SIMPLE, CONST_PERSISTENT); } diff --git a/ext/mbstring/tests/cp932_encoding.phpt b/ext/mbstring/tests/cp932_encoding.phpt index ff7bd9cfcdc28..df700f20286a5 100644 --- a/ext/mbstring/tests/cp932_encoding.phpt +++ b/ext/mbstring/tests/cp932_encoding.phpt @@ -1,5 +1,5 @@ --TEST-- -Exhaustive test of CP932 encoding verification and conversion +Exhaustive test of CP932 encoding verification and conversion (including 'SJIS-win' variant) --EXTENSIONS-- mbstring --SKIPIF-- @@ -34,8 +34,10 @@ for ($i = 0xF0; $i <= 0xF9; $i++) { $fromUnicode["\x00\xA2"] = "\x81\x91"; /* U+00A3 is POUND SIGN; convert to FULLWIDTH POUND SIGN */ $fromUnicode["\x00\xA3"] = "\x81\x92"; -/* U+00A5 is YEN SIGN; convert to FULLWIDTH YEN SIGN */ -$fromUnicode["\x00\xA5"] = "\x81\x8F"; +/* U+00A5 is YEN SIGN; convert to 0x5C, which has conflicting uses + * (either as backslash or as Yen sign) */ +$fromUnicode["\x00\xA5"] = "\x5C"; + /* We map the JIS X 0208 FULLWIDTH TILDE to U+FF5E (FULLWIDTH TILDE) * But when converting Unicode to CP932, we also accept U+301C (WAVE DASH) */ @@ -51,12 +53,13 @@ $fromUnicode["\x20\x16"] = "\x81\x61"; * but when converting Unicode to CP932, we also accept U+00AC (NOT SIGN) */ $fromUnicode["\x00\xAC"] = "\x81\xCA"; -/* U+203E is OVERLINE; convert to JIS X 0208 FULLWIDTH MACRON */ -$fromUnicode["\x20\x3E"] = "\x81\x50"; - -/* U+00AF is MACRON; it can also go to FULLWIDTH MACRON */ +/* U+00AF is MACRON; convert to FULLWIDTH MACRON */ $fromUnicode["\x00\xAF"] = "\x81\x50"; +/* U+203E is OVERLINE; convert to 0x7E, which has conflicting uses + * (either as tilde or as overline) */ +$fromUnicode["\x20\x3E"] = "\x7E"; + findInvalidChars($validChars, $invalidChars, $truncated, array_fill_keys(range(0x81, 0x9F), 2) + array_fill_keys(range(0xE0, 0xFC), 2)); findInvalidChars($fromUnicode, $invalidCodepoints, $unused, array_fill_keys(range(0, 0xFF), 2)); @@ -106,12 +109,38 @@ echo "CP932 verification and conversion works on all invalid characters\n"; convertAllInvalidChars($invalidCodepoints, $fromUnicode, 'UTF-16BE', 'CP932', '%'); echo "Unicode -> CP932 conversion works on all invalid codepoints\n"; +/* Now test 'SJIS-win' variant of CP932, which is really CP932 but with + * two different mappings + * Instead of mapping U+00A5 and U+203E to the single bytes 0x5C and 07E + * (which have conflicting uses), 'SJIS-win' maps them to appropriate + * JIS X 0208 characters */ + +/* U+00A5 is YEN SIGN; convert to FULLWIDTH YEN SIGN */ +$fromUnicode["\x00\xA5"] = "\x81\x8F"; +/* U+203E is OVERLINE; convert to JIS X 0208 FULLWIDTH MACRON */ +$fromUnicode["\x20\x3E"] = "\x81\x50"; + +testAllValidChars($validChars, 'SJIS-win', 'UTF-16BE'); +foreach ($nonInvertible as $cp932 => $unicode) + testValidString($cp932, $unicode, 'SJIS-win', 'UTF-16BE', false); +echo "SJIS-win verification and conversion works on all valid characters\n"; + +testAllInvalidChars($invalidChars, $validChars, 'SJIS-win', 'UTF-16BE', "\x00%"); +echo "SJIS-win verification and conversion works on all invalid characters\n"; + +convertAllInvalidChars($invalidCodepoints, $fromUnicode, 'UTF-16BE', 'SJIS-win', '%'); +echo "Unicode -> SJIS-win conversion works on all invalid codepoints\n"; + // Test "long" illegal character markers mb_substitute_character("long"); convertInvalidString("\x80", "%", "CP932", "UTF-8"); convertInvalidString("\xEA", "%", "CP932", "UTF-8"); convertInvalidString("\x81\x20", "%", "CP932", "UTF-8"); convertInvalidString("\xEA\xA9", "%", "CP932", "UTF-8"); +convertInvalidString("\x80", "%", "SJIS-win", "UTF-8"); +convertInvalidString("\xEA", "%", "SJIS-win", "UTF-8"); +convertInvalidString("\x81\x20", "%", "SJIS-win", "UTF-8"); +convertInvalidString("\xEA\xA9", "%", "SJIS-win", "UTF-8"); echo "Done!\n"; ?> @@ -119,4 +148,7 @@ echo "Done!\n"; CP932 verification and conversion works on all valid characters CP932 verification and conversion works on all invalid characters Unicode -> CP932 conversion works on all invalid codepoints +SJIS-win verification and conversion works on all valid characters +SJIS-win verification and conversion works on all invalid characters +Unicode -> SJIS-win conversion works on all invalid codepoints Done! diff --git a/ext/mbstring/tests/gh9248.phpt b/ext/mbstring/tests/gh9248.phpt new file mode 100644 index 0000000000000..8c513885fff94 --- /dev/null +++ b/ext/mbstring/tests/gh9248.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug GH-9248 (Segmentation fault in mb_strimwidth()) +--EXTENSIONS-- +mbstring +--FILE-- + +--EXPECT-- +string(8) "The quic" diff --git a/ext/mbstring/tests/iso2022jp_encoding.phpt b/ext/mbstring/tests/iso2022jp_encoding.phpt index 166470a44cf5a..f3a6e9e850b90 100644 --- a/ext/mbstring/tests/iso2022jp_encoding.phpt +++ b/ext/mbstring/tests/iso2022jp_encoding.phpt @@ -196,6 +196,13 @@ for ($i = 0; $i <= 0xFF; $i++) { identifyInvalidString("\x1B", 'JIS'); identifyInvalidString("\x1B", 'ISO-2022-JP'); +convertInvalidString("\x1B$", "%", "JIS", "UTF-8"); +convertInvalidString("\x1B$", "%", "ISO-2022-JP", "UTF-8"); +convertInvalidString("\x1B(", "%", "JIS", "UTF-8"); +convertInvalidString("\x1B(", "%", "ISO-2022-JP", "UTF-8"); +convertInvalidString("\x1B,", "%,", "JIS", "UTF-8"); +convertInvalidString("\x1B,", "%,", "ISO-2022-JP", "UTF-8"); + echo "All escape sequences work as expected\n"; foreach (['JIS', 'ISO-2022-JP'] as $encoding) { diff --git a/ext/mbstring/tests/iso2022kr_encoding.phpt b/ext/mbstring/tests/iso2022kr_encoding.phpt index 67adb103fce73..d9e6ff933cb0f 100644 --- a/ext/mbstring/tests/iso2022kr_encoding.phpt +++ b/ext/mbstring/tests/iso2022kr_encoding.phpt @@ -114,6 +114,9 @@ convertInvalidString("\xFF\x86", "\x1B\$)C%", "UTF-16BE", "ISO-2022-KR"); // character at the end of a string, although the string was already ending in ASCII mode convertValidString("\x68\x46\x00a", "\x1B\$)C\x0E\x68\x46\x0Fa", "UTF-16BE", "ISO-2022-KR", false); +// Regression test: Don't shift from KS X 1001 to ASCII mode on invalid escape sequence +convertInvalidString("\x0E\x1BX\x74\x30", "\x00%\x76\x20", "ISO-2022-KR", "UTF-16BE", false); + // Test "long" illegal character markers mb_substitute_character("long"); convertInvalidString("\x1B", "%", "ISO-2022-KR", "UTF-8"); diff --git a/ext/mbstring/tests/mb_internal_encoding_variation2.phpt b/ext/mbstring/tests/mb_internal_encoding_variation2.phpt index 842d8d519cf06..dab306b12a2b8 100644 --- a/ext/mbstring/tests/mb_internal_encoding_variation2.phpt +++ b/ext/mbstring/tests/mb_internal_encoding_variation2.phpt @@ -176,10 +176,10 @@ string(9) "eucJP-win" -- Iteration 20 -- string(9) "eucJP-win" bool(true) -string(5) "CP932" +string(8) "SJIS-win" -- Iteration 21 -- -string(5) "CP932" +string(8) "SJIS-win" bool(true) string(11) "ISO-2022-JP" diff --git a/ext/mbstring/tests/mb_parse_str_error.phpt b/ext/mbstring/tests/mb_parse_str_error.phpt new file mode 100644 index 0000000000000..43d8e626aafbc --- /dev/null +++ b/ext/mbstring/tests/mb_parse_str_error.phpt @@ -0,0 +1,30 @@ +--TEST-- +mb_parse_str() error handling +--EXTENSIONS-- +mbstring +--FILE-- + $value) { + echo bin2hex($key) . "=>" . bin2hex($value) . "\n"; + } +} + +?> +--EXPECT-- +Query: 808080 +3f3f3f=> +Query: ff3dff +3f=>3f diff --git a/ext/mbstring/tests/mb_parse_str_multi.phpt b/ext/mbstring/tests/mb_parse_str_multi.phpt new file mode 100644 index 0000000000000..e971627c6660c --- /dev/null +++ b/ext/mbstring/tests/mb_parse_str_multi.phpt @@ -0,0 +1,38 @@ +--TEST-- +mb_parse_str() with multiple candidate encodings +--EXTENSIONS-- +mbstring +--INI-- +mbstring.http_input=UTF-8,SJIS,EUC-JP +--FILE-- + $value) { + echo bin2hex($key) . "=>" . bin2hex($value) . "\n"; + } +} + +?> +--EXPECTF-- +Deprecated: PHP Startup: Use of mbstring.http_input is deprecated in %s on line %d +Query: e38386e382b9e383883d616263 +e38386e382b9e38388=>616263 +Query: 82a082a282a43d9356 +e38182e38184e38186=>e5a4a9 diff --git a/ext/mbstring/tests/other_encodings.phpt b/ext/mbstring/tests/other_encodings.phpt index 14b63fc809f88..4373e1aca4d69 100644 --- a/ext/mbstring/tests/other_encodings.phpt +++ b/ext/mbstring/tests/other_encodings.phpt @@ -15,6 +15,7 @@ var_dump(mb_convert_encoding("ABC", "7bit", "ASCII")); var_dump(mb_convert_encoding("\x80", "7bit", "ASCII")); var_dump(mb_convert_encoding("ABC", "8bit", "7bit")); var_dump(mb_check_encoding(chr(255), '7bit')); +var_dump(mb_convert_encoding("\xAC\xAC", '7bit', 'UHC')); echo "7bit done\n"; // "8bit" @@ -27,6 +28,7 @@ string(3) "ABC" string(1) "%" string(3) "ABC" bool(false) +string(1) "%" 7bit done string(1) "%" 8bit done diff --git a/ext/mbstring/tests/sjis_mobile_encodings.phpt b/ext/mbstring/tests/sjis_mobile_encodings.phpt index 08c2d1f996683..1d4d29e464e88 100644 --- a/ext/mbstring/tests/sjis_mobile_encodings.phpt +++ b/ext/mbstring/tests/sjis_mobile_encodings.phpt @@ -300,6 +300,15 @@ testSJISVariant($docomo, $nonInvertibleDocomo, 'SJIS-Mobile#DOCOMO'); testSJISVariant($kddi, $nonInvertible, 'SJIS-Mobile#KDDI'); testSJISVariant($softbank, $nonInvertibleSoftbank, 'SJIS-Mobile#SOFTBANK'); +// Special Softbank escape sequences can appear at end of string +convertValidString("\x1B\$O", "", "SJIS-Mobile#SOFTBANK", "UTF-8", false); +convertValidString("\x1B\$P", "", "SJIS-Mobile#SOFTBANK", "UTF-8", false); +convertValidString("\x1B\$Q", "", "SJIS-Mobile#SOFTBANK", "UTF-8", false); +// Try invalid escape sequence +convertInvalidString("\x1B\$X", "%", "SJIS-Mobile#SOFTBANK", "UTF-8", false); +// Try truncated escape sequence +convertInvalidString("\x1B\$", "%", "SJIS-Mobile#SOFTBANK", "UTF-8", false); + // Regression test for problem with not allocating enough space in output buffer // This occurred when the input string was shorter than the output convertValidString("\xA9\xA9\xA9\xA9", "\xF9\xD6\xF9\xD6\xF9\xD6\xF9\xD6", '8bit', 'SJIS-Mobile#DOCOMO'); diff --git a/ext/mbstring/tests/utf8_mobile_encodings.phpt b/ext/mbstring/tests/utf8_mobile_encodings.phpt index 21107ce5f0873..084a4224977a2 100644 --- a/ext/mbstring/tests/utf8_mobile_encodings.phpt +++ b/ext/mbstring/tests/utf8_mobile_encodings.phpt @@ -27,6 +27,14 @@ $badUTF8 = array( "\xDF" => "\x00\x00\x00%", // should have been 2-byte "\xEF\xBF" => "\x00\x00\x00%", // should have been 3-byte "\xF0\xBF\xBF" => "\x00\x00\x00%", // should have been 4-byte + "\xF1\x96" => "\x00\x00\x00%", + "\xF1\x96\x80" => "\x00\x00\x00%", + "\xF2\x94" => "\x00\x00\x00%", + "\xF2\x94\x80" => "\x00\x00\x00%", + "\xF3\x94" => "\x00\x00\x00%", + "\xF3\x94\x80" => "\x00\x00\x00%", + "\xE0\x9F" => "\x00\x00\x00%\x00\x00\x00%", + "\xED\xA6" => "\x00\x00\x00%\x00\x00\x00%", // Multi-byte characters which end too soon and go to ASCII "\xDFA" => "\x00\x00\x00%\x00\x00\x00A", diff --git a/ext/mbstring/tests/utf_encodings.phpt b/ext/mbstring/tests/utf_encodings.phpt index 37fd7f32426c0..da2b8d07c5aa7 100644 --- a/ext/mbstring/tests/utf_encodings.phpt +++ b/ext/mbstring/tests/utf_encodings.phpt @@ -774,6 +774,14 @@ $invalid = array( "\xDF" => "\x00\x00\x00%", // should have been 2-byte "\xEF\xBF" => "\x00\x00\x00%", // should have been 3-byte "\xF0\xBF\xBF" => "\x00\x00\x00%", // should have been 4-byte + "\xF1\x96" => "\x00\x00\x00%", + "\xF1\x96\x80" => "\x00\x00\x00%", + "\xF2\x94" => "\x00\x00\x00%", + "\xF2\x94\x80" => "\x00\x00\x00%", + "\xF3\x94" => "\x00\x00\x00%", + "\xF3\x94\x80" => "\x00\x00\x00%", + "\xE0\x9F" => "\x00\x00\x00%\x00\x00\x00%", + "\xED\xA6" => "\x00\x00\x00%\x00\x00\x00%", // Multi-byte characters which end too soon and go to ASCII "\xDFA" => "\x00\x00\x00%\x00\x00\x00A", diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 8d2d2b8847b0e..26d6a7401581c 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -430,7 +430,7 @@ static const MYSQLND_REVERSE_API mysqli_reverse_api = { PHP_INI_BEGIN() STD_PHP_INI_ENTRY_EX("mysqli.max_links", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_links, zend_mysqli_globals, mysqli_globals, display_link_numbers) STD_PHP_INI_ENTRY_EX("mysqli.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_persistent, zend_mysqli_globals, mysqli_globals, display_link_numbers) - STD_PHP_INI_BOOLEAN("mysqli.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateLong, allow_persistent, zend_mysqli_globals, mysqli_globals) + STD_PHP_INI_BOOLEAN("mysqli.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateBool, allow_persistent, zend_mysqli_globals, mysqli_globals) STD_PHP_INI_BOOLEAN("mysqli.rollback_on_cached_plink", "0",PHP_INI_SYSTEM, OnUpdateBool, rollback_on_cached_plink, zend_mysqli_globals, mysqli_globals) STD_PHP_INI_ENTRY("mysqli.default_host", NULL, PHP_INI_ALL, OnUpdateString, default_host, zend_mysqli_globals, mysqli_globals) STD_PHP_INI_ENTRY("mysqli.default_user", NULL, PHP_INI_ALL, OnUpdateString, default_user, zend_mysqli_globals, mysqli_globals) @@ -441,7 +441,7 @@ PHP_INI_BEGIN() #else STD_PHP_INI_ENTRY("mysqli.default_socket", NULL, PHP_INI_ALL, OnUpdateStringUnempty, default_socket, zend_mysqli_globals, mysqli_globals) #endif - STD_PHP_INI_BOOLEAN("mysqli.allow_local_infile", "0", PHP_INI_SYSTEM, OnUpdateLong, allow_local_infile, zend_mysqli_globals, mysqli_globals) + STD_PHP_INI_BOOLEAN("mysqli.allow_local_infile", "0", PHP_INI_SYSTEM, OnUpdateBool, allow_local_infile, zend_mysqli_globals, mysqli_globals) STD_PHP_INI_ENTRY("mysqli.local_infile_directory", NULL, PHP_INI_SYSTEM, OnUpdateString, local_infile_directory, zend_mysqli_globals, mysqli_globals) PHP_INI_END() /* }}} */ @@ -588,7 +588,7 @@ PHP_MINFO_FUNCTION(mysqli) char buf[32]; php_info_print_table_start(); - php_info_print_table_header(2, "MysqlI Support", "enabled"); + php_info_print_table_row(2, "MysqlI Support", "enabled"); php_info_print_table_row(2, "Client API library version", mysql_get_client_info()); snprintf(buf, sizeof(buf), ZEND_LONG_FMT, MyG(num_active_persistent)); php_info_print_table_row(2, "Active Persistent Links", buf); diff --git a/ext/mysqli/mysqli_arginfo.h b/ext/mysqli/mysqli_arginfo.h index 3efc9c6a19471..7252c8bee8d05 100644 --- a/ext/mysqli/mysqli_arginfo.h +++ b/ext/mysqli/mysqli_arginfo.h @@ -1045,134 +1045,134 @@ static const zend_function_entry class_mysqli_sql_exception_methods[] = { static void register_mysqli_symbols(int module_number) { - REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_GROUP", MYSQL_READ_DEFAULT_GROUP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOAD_DATA_LOCAL_DIR", MYSQL_OPT_LOAD_DATA_LOCAL_DIR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_READ_TIMEOUT", MYSQL_OPT_READ_TIMEOUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_CMD_BUFFER_SIZE", MYSQLND_OPT_NET_CMD_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_READ_BUFFER_SIZE", MYSQLND_OPT_NET_READ_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_FLOAT_NATIVE", MYSQLND_OPT_INT_AND_FLOAT_NATIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PUBLIC_KEY", MYSQL_SERVER_PUBLIC_KEY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL", CLIENT_SSL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_COMPRESS", CLIENT_COMPRESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_INTERACTIVE", CLIENT_INTERACTIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_NO_SCHEMA", CLIENT_NO_SCHEMA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_GROUP", MYSQL_READ_DEFAULT_GROUP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_READ_DEFAULT_FILE", MYSQL_READ_DEFAULT_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_CONNECT_TIMEOUT", MYSQL_OPT_CONNECT_TIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOCAL_INFILE", MYSQL_OPT_LOCAL_INFILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_LOAD_DATA_LOCAL_DIR", MYSQL_OPT_LOAD_DATA_LOCAL_DIR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_INIT_COMMAND", MYSQL_INIT_COMMAND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_READ_TIMEOUT", MYSQL_OPT_READ_TIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_CMD_BUFFER_SIZE", MYSQLND_OPT_NET_CMD_BUFFER_SIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_NET_READ_BUFFER_SIZE", MYSQLND_OPT_NET_READ_BUFFER_SIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_INT_AND_FLOAT_NATIVE", MYSQLND_OPT_INT_AND_FLOAT_NATIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PUBLIC_KEY", MYSQL_SERVER_PUBLIC_KEY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL", CLIENT_SSL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_COMPRESS", CLIENT_COMPRESS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_INTERACTIVE", CLIENT_INTERACTIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_IGNORE_SPACE", CLIENT_IGNORE_SPACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_NO_SCHEMA", CLIENT_NO_SCHEMA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_FOUND_ROWS", CLIENT_FOUND_ROWS, CONST_PERSISTENT); #if defined(CLIENT_SSL_VERIFY_SERVER_CERT) - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT", CLIENT_SSL_VERIFY_SERVER_CERT, CONST_PERSISTENT); #endif #if defined(CLIENT_SSL_VERIFY_SERVER_CERT) - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT", CLIENT_SSL_DONT_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT", CLIENT_SSL_DONT_VERIFY_SERVER_CERT, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS", MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT", MYSQLI_STORE_RESULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_USE_RESULT", MYSQLI_USE_RESULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ASYNC", MYSQLI_ASYNC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT_COPY_DATA", MYSQLI_STORE_RESULT_COPY_DATA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ASSOC", MYSQLI_ASSOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NUM", MYSQLI_NUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_BOTH", MYSQLI_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH", STMT_ATTR_UPDATE_MAX_LENGTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_CURSOR_TYPE", STMT_ATTR_CURSOR_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_NO_CURSOR", CURSOR_TYPE_NO_CURSOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_READ_ONLY", CURSOR_TYPE_READ_ONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_FOR_UPDATE", CURSOR_TYPE_FOR_UPDATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_SCROLLABLE", CURSOR_TYPE_SCROLLABLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_PREFETCH_ROWS", STMT_ATTR_PREFETCH_ROWS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NOT_NULL_FLAG", NOT_NULL_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_PRI_KEY_FLAG", PRI_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_UNIQUE_KEY_FLAG", UNIQUE_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_MULTIPLE_KEY_FLAG", MULTIPLE_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_BLOB_FLAG", BLOB_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_UNSIGNED_FLAG", UNSIGNED_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ZEROFILL_FLAG", ZEROFILL_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_AUTO_INCREMENT_FLAG", AUTO_INCREMENT_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TIMESTAMP_FLAG", TIMESTAMP_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SET_FLAG", SET_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NUM_FLAG", NUM_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_PART_KEY_FLAG", PART_KEY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_GROUP_FLAG", GROUP_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ENUM_FLAG", ENUM_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_BINARY_FLAG", BINARY_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NO_DEFAULT_VALUE_FLAG", NO_DEFAULT_VALUE_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_ON_UPDATE_NOW_FLAG", ON_UPDATE_NOW_FLAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DECIMAL", FIELD_TYPE_DECIMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY", FIELD_TYPE_TINY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SHORT", FIELD_TYPE_SHORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG", FIELD_TYPE_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_FLOAT", FIELD_TYPE_FLOAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DOUBLE", FIELD_TYPE_DOUBLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NULL", FIELD_TYPE_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIMESTAMP", FIELD_TYPE_TIMESTAMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONGLONG", FIELD_TYPE_LONGLONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INT24", FIELD_TYPE_INT24, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATE", FIELD_TYPE_DATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIME", FIELD_TYPE_TIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATETIME", FIELD_TYPE_DATETIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_YEAR", FIELD_TYPE_YEAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDATE", FIELD_TYPE_NEWDATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_ENUM", FIELD_TYPE_ENUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SET", FIELD_TYPE_SET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY_BLOB", FIELD_TYPE_TINY_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_MEDIUM_BLOB", FIELD_TYPE_MEDIUM_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG_BLOB", FIELD_TYPE_LONG_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BLOB", FIELD_TYPE_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_VAR_STRING", FIELD_TYPE_VAR_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_STRING", FIELD_TYPE_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_CHAR", FIELD_TYPE_CHAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INTERVAL", FIELD_TYPE_INTERVAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_GEOMETRY", FIELD_TYPE_GEOMETRY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS", CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_CAN_HANDLE_EXPIRED_PASSWORDS", MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT", MYSQLI_STORE_RESULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_USE_RESULT", MYSQLI_USE_RESULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ASYNC", MYSQLI_ASYNC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STORE_RESULT_COPY_DATA", MYSQLI_STORE_RESULT_COPY_DATA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ASSOC", MYSQLI_ASSOC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NUM", MYSQLI_NUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_BOTH", MYSQLI_BOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH", STMT_ATTR_UPDATE_MAX_LENGTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_CURSOR_TYPE", STMT_ATTR_CURSOR_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_NO_CURSOR", CURSOR_TYPE_NO_CURSOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_READ_ONLY", CURSOR_TYPE_READ_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_FOR_UPDATE", CURSOR_TYPE_FOR_UPDATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_CURSOR_TYPE_SCROLLABLE", CURSOR_TYPE_SCROLLABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_STMT_ATTR_PREFETCH_ROWS", STMT_ATTR_PREFETCH_ROWS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NOT_NULL_FLAG", NOT_NULL_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_PRI_KEY_FLAG", PRI_KEY_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_UNIQUE_KEY_FLAG", UNIQUE_KEY_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_MULTIPLE_KEY_FLAG", MULTIPLE_KEY_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_BLOB_FLAG", BLOB_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_UNSIGNED_FLAG", UNSIGNED_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ZEROFILL_FLAG", ZEROFILL_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_AUTO_INCREMENT_FLAG", AUTO_INCREMENT_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TIMESTAMP_FLAG", TIMESTAMP_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SET_FLAG", SET_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NUM_FLAG", NUM_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_PART_KEY_FLAG", PART_KEY_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_GROUP_FLAG", GROUP_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ENUM_FLAG", ENUM_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_BINARY_FLAG", BINARY_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NO_DEFAULT_VALUE_FLAG", NO_DEFAULT_VALUE_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_ON_UPDATE_NOW_FLAG", ON_UPDATE_NOW_FLAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DECIMAL", FIELD_TYPE_DECIMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY", FIELD_TYPE_TINY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SHORT", FIELD_TYPE_SHORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG", FIELD_TYPE_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_FLOAT", FIELD_TYPE_FLOAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DOUBLE", FIELD_TYPE_DOUBLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NULL", FIELD_TYPE_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIMESTAMP", FIELD_TYPE_TIMESTAMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONGLONG", FIELD_TYPE_LONGLONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INT24", FIELD_TYPE_INT24, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATE", FIELD_TYPE_DATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TIME", FIELD_TYPE_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_DATETIME", FIELD_TYPE_DATETIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_YEAR", FIELD_TYPE_YEAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDATE", FIELD_TYPE_NEWDATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_ENUM", FIELD_TYPE_ENUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_SET", FIELD_TYPE_SET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_TINY_BLOB", FIELD_TYPE_TINY_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_MEDIUM_BLOB", FIELD_TYPE_MEDIUM_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_LONG_BLOB", FIELD_TYPE_LONG_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BLOB", FIELD_TYPE_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_VAR_STRING", FIELD_TYPE_VAR_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_STRING", FIELD_TYPE_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_CHAR", FIELD_TYPE_CHAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_INTERVAL", FIELD_TYPE_INTERVAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_GEOMETRY", FIELD_TYPE_GEOMETRY, CONST_PERSISTENT); #if defined(FIELD_TYPE_JSON) - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_JSON", FIELD_TYPE_JSON, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_JSON", FIELD_TYPE_JSON, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDECIMAL", FIELD_TYPE_NEWDECIMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BIT", FIELD_TYPE_BIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_NAME", MYSQL_SET_CHARSET_NAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_DIR", MYSQL_SET_CHARSET_DIR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_NO_DATA", MYSQL_NO_DATA, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_NEWDECIMAL", FIELD_TYPE_NEWDECIMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TYPE_BIT", FIELD_TYPE_BIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_NAME", MYSQL_SET_CHARSET_NAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SET_CHARSET_DIR", MYSQL_SET_CHARSET_DIR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_NO_DATA", MYSQL_NO_DATA, CONST_PERSISTENT | CONST_DEPRECATED); #if defined(MYSQL_DATA_TRUNCATED) - REGISTER_LONG_CONSTANT("MYSQLI_DATA_TRUNCATED", MYSQL_DATA_TRUNCATED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_DATA_TRUNCATED", MYSQL_DATA_TRUNCATED, CONST_PERSISTENT | CONST_DEPRECATED); #endif - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_INDEX", MYSQLI_REPORT_INDEX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ERROR", MYSQLI_REPORT_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_STRICT", MYSQLI_REPORT_STRICT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", MYSQLI_REPORT_OFF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", MYSQLND_DBG_ENABLED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_INDEX", MYSQLI_REPORT_INDEX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ERROR", MYSQLI_REPORT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_STRICT", MYSQLI_REPORT_STRICT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_ALL", MYSQLI_REPORT_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REPORT_OFF", MYSQLI_REPORT_OFF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_DEBUG_TRACE_ENABLED", MYSQLND_DBG_ENABLED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_GOOD_INDEX_USED", SERVER_QUERY_NO_GOOD_INDEX_USED, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_NO_INDEX_USED", SERVER_QUERY_NO_INDEX_USED, CONST_PERSISTENT | CONST_DEPRECATED); #if defined(SERVER_QUERY_WAS_SLOW) - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_QUERY_WAS_SLOW", SERVER_QUERY_WAS_SLOW, CONST_PERSISTENT | CONST_DEPRECATED); #endif #if defined(SERVER_PS_OUT_PARAMS) - REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PS_OUT_PARAMS", SERVER_PS_OUT_PARAMS, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_SERVER_PS_OUT_PARAMS", SERVER_PS_OUT_PARAMS, CONST_PERSISTENT | CONST_DEPRECATED); #endif - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_GRANT", REFRESH_GRANT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_LOG", REFRESH_LOG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_TABLES", REFRESH_TABLES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_HOSTS", REFRESH_HOSTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_STATUS", REFRESH_STATUS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_THREADS", REFRESH_THREADS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_REPLICA", REFRESH_SLAVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_SLAVE", REFRESH_SLAVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_MASTER", REFRESH_MASTER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_GRANT", REFRESH_GRANT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_LOG", REFRESH_LOG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_TABLES", REFRESH_TABLES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_HOSTS", REFRESH_HOSTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_STATUS", REFRESH_STATUS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_THREADS", REFRESH_THREADS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_REPLICA", REFRESH_SLAVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_SLAVE", REFRESH_SLAVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_MASTER", REFRESH_MASTER, CONST_PERSISTENT); #if defined(REFRESH_BACKUP_LOG) - REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_BACKUP_LOG", REFRESH_BACKUP_LOG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_REFRESH_BACKUP_LOG", REFRESH_BACKUP_LOG, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT", TRANS_START_WITH_CONSISTENT_SNAPSHOT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_WRITE", TRANS_START_READ_WRITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_ONLY", TRANS_START_READ_ONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_CHAIN", TRANS_COR_AND_CHAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_NO_CHAIN", TRANS_COR_AND_NO_CHAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_CS | CONST_PERSISTENT); - REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", false, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT", TRANS_START_WITH_CONSISTENT_SNAPSHOT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_WRITE", TRANS_START_READ_WRITE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_START_READ_ONLY", TRANS_START_READ_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_CHAIN", TRANS_COR_AND_CHAIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_AND_NO_CHAIN", TRANS_COR_AND_NO_CHAIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_RELEASE", TRANS_COR_RELEASE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_TRANS_COR_NO_RELEASE", TRANS_COR_NO_RELEASE, CONST_PERSISTENT); + REGISTER_BOOL_CONSTANT("MYSQLI_IS_MARIADB", false, CONST_PERSISTENT | CONST_DEPRECATED); zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "mysqli_change_user", sizeof("mysqli_change_user") - 1), 2, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); diff --git a/ext/mysqli/php_mysqli_structs.h b/ext/mysqli/php_mysqli_structs.h index c57a26603c49c..7495cc8bda733 100644 --- a/ext/mysqli/php_mysqli_structs.h +++ b/ext/mysqli/php_mysqli_structs.h @@ -241,13 +241,13 @@ ZEND_BEGIN_MODULE_GLOBALS(mysqli) zend_long num_active_persistent; zend_long num_inactive_persistent; zend_long max_persistent; - zend_long allow_persistent; + bool allow_persistent; zend_ulong default_port; char *default_host; char *default_user; char *default_pw; char *default_socket; - zend_long allow_local_infile; + bool allow_local_infile; char *local_infile_directory; zend_long error_no; char *error_msg; diff --git a/ext/mysqlnd/php_mysqlnd.c b/ext/mysqlnd/php_mysqlnd.c index 368c253a64f9f..3520e2ee23bb7 100644 --- a/ext/mysqlnd/php_mysqlnd.c +++ b/ext/mysqlnd/php_mysqlnd.c @@ -79,7 +79,7 @@ PHP_MINFO_FUNCTION(mysqlnd) char buf[32]; php_info_print_table_start(); - php_info_print_table_header(2, "mysqlnd", "enabled"); + php_info_print_table_row(2, "mysqlnd", "enabled"); php_info_print_table_row(2, "Version", mysqlnd_get_client_info()); php_info_print_table_row(2, "Compression", #ifdef MYSQLND_COMPRESSION_ENABLED diff --git a/ext/oci8/oci8.c b/ext/oci8/oci8.c index 9b5a41832c6cc..98e1821568d7d 100644 --- a/ext/oci8/oci8.c +++ b/ext/oci8/oci8.c @@ -286,106 +286,6 @@ PHP_MINIT_FUNCTION(oci) oci_lob_class_entry_ptr = register_class_OCILob(); oci_coll_class_entry_ptr = register_class_OCICollection(); -/* thies@thieso.net 990203 i do not think that we will need all of them - just in here for completeness for now! */ - REGISTER_LONG_CONSTANT("OCI_DEFAULT",OCI_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_SYSOPER",OCI_SYSOPER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_SYSDBA",OCI_SYSDBA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_CRED_EXT",PHP_OCI_CRED_EXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_DESCRIBE_ONLY",OCI_DESCRIBE_ONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_COMMIT_ON_SUCCESS",OCI_COMMIT_ON_SUCCESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_NO_AUTO_COMMIT",OCI_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_EXACT_FETCH",OCI_EXACT_FETCH, CONST_CS | CONST_PERSISTENT); - -/* for $LOB->seek() */ - REGISTER_LONG_CONSTANT("OCI_SEEK_SET",PHP_OCI_SEEK_SET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_SEEK_CUR",PHP_OCI_SEEK_CUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_SEEK_END",PHP_OCI_SEEK_END, CONST_CS | CONST_PERSISTENT); - -/* for $LOB->flush() */ - REGISTER_LONG_CONSTANT("OCI_LOB_BUFFER_FREE",OCI_LOB_BUFFER_FREE, CONST_CS | CONST_PERSISTENT); - -/* for OCIBindByName (real "oci" names + short "php" names */ - REGISTER_LONG_CONSTANT("SQLT_BFILEE",SQLT_BFILEE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_CFILEE",SQLT_CFILEE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_CLOB",SQLT_CLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_BLOB",SQLT_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_RDD",SQLT_RDD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_INT",SQLT_INT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_NUM",SQLT_NUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_RSET",SQLT_RSET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_AFC",SQLT_AFC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_CHR",SQLT_CHR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_VCS",SQLT_VCS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_AVC",SQLT_AVC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_STR",SQLT_STR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_LVC",SQLT_LVC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_FLT",SQLT_FLT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_UIN",SQLT_UIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_LNG",SQLT_LNG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_LBI",SQLT_LBI, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_BIN",SQLT_BIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_ODT",SQLT_ODT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_BDOUBLE",SQLT_BDOUBLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_BFLOAT",SQLT_BFLOAT, CONST_CS | CONST_PERSISTENT); -#if OCI_MAJOR_VERSION >= 12 - REGISTER_LONG_CONSTANT("SQLT_BOL",SQLT_BOL, CONST_CS | CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("OCI_B_NTY",SQLT_NTY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLT_NTY",SQLT_NTY, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("OCI_SYSDATE","SYSDATE", CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("OCI_B_BFILE",SQLT_BFILEE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_CFILEE",SQLT_CFILEE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_CLOB",SQLT_CLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_BLOB",SQLT_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_ROWID",SQLT_RDD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_CURSOR",SQLT_RSET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_BIN",SQLT_BIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_INT",SQLT_INT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_B_NUM",SQLT_NUM, CONST_CS | CONST_PERSISTENT); -#if OCI_MAJOR_VERSION >= 12 - REGISTER_LONG_CONSTANT("OCI_B_BOL",SQLT_BOL, CONST_CS | CONST_PERSISTENT); -#endif - -/* for OCIFetchStatement */ - REGISTER_LONG_CONSTANT("OCI_FETCHSTATEMENT_BY_COLUMN", PHP_OCI_FETCHSTATEMENT_BY_COLUMN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FETCHSTATEMENT_BY_ROW", PHP_OCI_FETCHSTATEMENT_BY_ROW, CONST_CS | CONST_PERSISTENT); - -/* for OCIFetchInto & OCIResult */ - REGISTER_LONG_CONSTANT("OCI_ASSOC",PHP_OCI_ASSOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_NUM",PHP_OCI_NUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_BOTH",PHP_OCI_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_RETURN_NULLS",PHP_OCI_RETURN_NULLS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_RETURN_LOBS",PHP_OCI_RETURN_LOBS, CONST_CS | CONST_PERSISTENT); - -/* for OCINewDescriptor (real "oci" names + short "php" names */ - REGISTER_LONG_CONSTANT("OCI_DTYPE_FILE",OCI_DTYPE_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_DTYPE_LOB",OCI_DTYPE_LOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_DTYPE_ROWID",OCI_DTYPE_ROWID, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("OCI_D_FILE",OCI_DTYPE_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_D_LOB",OCI_DTYPE_LOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_D_ROWID",OCI_DTYPE_ROWID, CONST_CS | CONST_PERSISTENT); - -/* for OCIWriteTemporaryLob */ - REGISTER_LONG_CONSTANT("OCI_TEMP_CLOB",OCI_TEMP_CLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_TEMP_BLOB",OCI_TEMP_BLOB, CONST_CS | CONST_PERSISTENT); - -/* for Transparent Application Failover */ - REGISTER_LONG_CONSTANT("OCI_FO_END", OCI_FO_END, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FO_ABORT", OCI_FO_ABORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FO_REAUTH", OCI_FO_REAUTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FO_BEGIN", OCI_FO_BEGIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FO_ERROR", OCI_FO_ERROR, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("OCI_FO_NONE", OCI_FO_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FO_SESSION", OCI_FO_SESSION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FO_SELECT", OCI_FO_SELECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OCI_FO_TXNAL", OCI_FO_TXNAL, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("OCI_FO_RETRY", OCI_FO_RETRY, CONST_CS | CONST_PERSISTENT); - register_oci8_symbols(module_number); return SUCCESS; diff --git a/ext/oci8/oci8.stub.php b/ext/oci8/oci8.stub.php index adc7e9f9feb98..8fc39bd378d53 100644 --- a/ext/oci8/oci8.stub.php +++ b/ext/oci8/oci8.stub.php @@ -2,6 +2,403 @@ /** @generate-class-entries */ +/** + * @var int + * @cvalue OCI_DEFAULT + */ +const OCI_DEFAULT = UNKNOWN; +/** + * @var int + * @cvalue OCI_SYSOPER + */ +const OCI_SYSOPER = UNKNOWN; +/** + * @var int + * @cvalue OCI_SYSDBA + */ +const OCI_SYSDBA = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_CRED_EXT + */ +const OCI_CRED_EXT = UNKNOWN; +/** + * @var int + * @cvalue OCI_DESCRIBE_ONLY + */ +const OCI_DESCRIBE_ONLY = UNKNOWN; +/** + * @var int + * @cvalue OCI_COMMIT_ON_SUCCESS + */ +const OCI_COMMIT_ON_SUCCESS = UNKNOWN; +/** + * @var int + * @cvalue OCI_DEFAULT + */ +const OCI_NO_AUTO_COMMIT = UNKNOWN; +/** + * @var int + * @cvalue OCI_EXACT_FETCH + */ +const OCI_EXACT_FETCH = UNKNOWN; + +/* for $LOB->seek() */ + +/** + * @var int + * @cvalue PHP_OCI_SEEK_SET + */ +const OCI_SEEK_SET = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_SEEK_CUR + */ +const OCI_SEEK_CUR = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_SEEK_END + */ +const OCI_SEEK_END = UNKNOWN; + +/* for $LOB->flush() */ + +/** + * @var int + * @cvalue OCI_LOB_BUFFER_FREE + */ +const OCI_LOB_BUFFER_FREE = UNKNOWN; + +/* for OCIBindByName (real "oci" names + short "php" names */ + +/** + * @var int + * @cvalue SQLT_BFILEE + */ +const SQLT_BFILEE = UNKNOWN; +/** + * @var int + * @cvalue SQLT_CFILEE + */ +const SQLT_CFILEE = UNKNOWN; +/** + * @var int + * @cvalue SQLT_CLOB + */ +const SQLT_CLOB = UNKNOWN; +/** + * @var int + * @cvalue SQLT_BLOB + */ +const SQLT_BLOB = UNKNOWN; +/** + * @var int + * @cvalue SQLT_RDD + */ +const SQLT_RDD = UNKNOWN; +/** + * @var int + * @cvalue SQLT_INT + */ +const SQLT_INT = UNKNOWN; +/** + * @var int + * @cvalue SQLT_NUM + */ +const SQLT_NUM = UNKNOWN; +/** + * @var int + * @cvalue SQLT_RSET + */ +const SQLT_RSET = UNKNOWN; +/** + * @var int + * @cvalue SQLT_AFC + */ +const SQLT_AFC = UNKNOWN; +/** + * @var int + * @cvalue SQLT_CHR + */ +const SQLT_CHR = UNKNOWN; +/** + * @var int + * @cvalue SQLT_VCS + */ +const SQLT_VCS = UNKNOWN; +/** + * @var int + * @cvalue SQLT_AVC + */ +const SQLT_AVC = UNKNOWN; +/** + * @var int + * @cvalue SQLT_STR + */ +const SQLT_STR = UNKNOWN; +/** + * @var int + * @cvalue SQLT_LVC + */ +const SQLT_LVC = UNKNOWN; +/** + * @var int + * @cvalue SQLT_FLT + */ +const SQLT_FLT = UNKNOWN; +/** + * @var int + * @cvalue SQLT_UIN + */ +const SQLT_UIN = UNKNOWN; +/** + * @var int + * @cvalue SQLT_LNG + */ +const SQLT_LNG = UNKNOWN; +/** + * @var int + * @cvalue SQLT_LBI + */ +const SQLT_LBI = UNKNOWN; +/** + * @var int + * @cvalue SQLT_BIN + */ +const SQLT_BIN = UNKNOWN; +/** + * @var int + * @cvalue SQLT_ODT + */ +const SQLT_ODT = UNKNOWN; +/** + * @var int + * @cvalue SQLT_BDOUBLE + */ +const SQLT_BDOUBLE = UNKNOWN; +/** + * @var int + * @cvalue SQLT_BFLOAT + */ +const SQLT_BFLOAT = UNKNOWN; +#if OCI_MAJOR_VERSION >= 12 +/** + * @var int + * @cvalue SQLT_BOL + */ +const SQLT_BOL = UNKNOWN; +#endif + +/** + * @var int + * @cvalue SQLT_NTY + */ +const OCI_B_NTY = UNKNOWN; +/** + * @var int + * @cvalue SQLT_NTY + */ +const SQLT_NTY = UNKNOWN; + +/** @var string */ +const OCI_SYSDATE = "SYSDATE"; + +/** + * @var int + * @cvalue SQLT_BFILEE + */ +const OCI_B_BFILE = UNKNOWN; +/** + * @var int + * @cvalue SQLT_CFILEE + */ +const OCI_B_CFILEE = UNKNOWN; +/** + * @var int + * @cvalue SQLT_CLOB + */ +const OCI_B_CLOB = UNKNOWN; +/** + * @var int + * @cvalue SQLT_BLOB + */ +const OCI_B_BLOB = UNKNOWN; +/** + * @var int + * @cvalue SQLT_RDD + */ +const OCI_B_ROWID = UNKNOWN; +/** + * @var int + * @cvalue SQLT_RSET + */ +const OCI_B_CURSOR = UNKNOWN; +/** + * @var int + * @cvalue SQLT_BIN + */ +const OCI_B_BIN = UNKNOWN; +/** + * @var int + * @cvalue SQLT_INT + */ +const OCI_B_INT = UNKNOWN; +/** + * @var int + * @cvalue SQLT_NUM + */ +const OCI_B_NUM = UNKNOWN; +#if OCI_MAJOR_VERSION >= 12 +/** + * @var int + * @cvalue SQLT_BOL + */ +const OCI_B_BOL = UNKNOWN; +#endif + +/* for OCIFetchStatement */ + +/** + * @var int + * @cvalue PHP_OCI_FETCHSTATEMENT_BY_COLUMN + */ +const OCI_FETCHSTATEMENT_BY_COLUMN = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_FETCHSTATEMENT_BY_ROW + */ +const OCI_FETCHSTATEMENT_BY_ROW = UNKNOWN; + +/* for OCIFetchInto & OCIResult */ + +/** + * @var int + * @cvalue PHP_OCI_ASSOC + */ +const OCI_ASSOC = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_NUM + */ +const OCI_NUM = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_BOTH + */ +const OCI_BOTH = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_RETURN_NULLS + */ +const OCI_RETURN_NULLS = UNKNOWN; +/** + * @var int + * @cvalue PHP_OCI_RETURN_LOBS + */ +const OCI_RETURN_LOBS = UNKNOWN; + +/* for OCINewDescriptor (real "oci" names + short "php" names */ + +/** + * @var int + * @cvalue OCI_DTYPE_FILE + */ +const OCI_DTYPE_FILE = UNKNOWN; +/** + * @var int + * @cvalue OCI_DTYPE_LOB + */ +const OCI_DTYPE_LOB = UNKNOWN; +/** + * @var int + * @cvalue OCI_DTYPE_ROWID + */ +const OCI_DTYPE_ROWID = UNKNOWN; + +/** + * @var int + * @cvalue OCI_DTYPE_FILE + */ +const OCI_D_FILE = UNKNOWN; +/** + * @var int + * @cvalue OCI_DTYPE_LOB + */ +const OCI_D_LOB = UNKNOWN; +/** + * @var int + * @cvalue OCI_DTYPE_ROWID + */ +const OCI_D_ROWID = UNKNOWN; + +/* for OCIWriteTemporaryLob */ + +/** + * @var int + * @cvalue OCI_TEMP_CLOB + */ +const OCI_TEMP_CLOB = UNKNOWN; +/** + * @var int + * @cvalue OCI_TEMP_BLOB + */ +const OCI_TEMP_BLOB = UNKNOWN; + +/* for Transparent Application Failover */ + +/** + * @var int + * @cvalue OCI_FO_END + */ +const OCI_FO_END = UNKNOWN; +/** + * @var int + * @cvalue OCI_FO_ABORT + */ +const OCI_FO_ABORT = UNKNOWN; +/** + * @var int + * @cvalue OCI_FO_REAUTH + */ +const OCI_FO_REAUTH = UNKNOWN; +/** + * @var int + * @cvalue OCI_FO_BEGIN + */ +const OCI_FO_BEGIN = UNKNOWN; +/** + * @var int + * @cvalue OCI_FO_ERROR + */ +const OCI_FO_ERROR = UNKNOWN; + +/** + * @var int + * @cvalue OCI_FO_NONE + */ +const OCI_FO_NONE = UNKNOWN; +/** + * @var int + * @cvalue OCI_FO_SESSION + */ +const OCI_FO_SESSION = UNKNOWN; +/** + * @var int + * @cvalue OCI_FO_SELECT + */ +const OCI_FO_SELECT = UNKNOWN; +/** + * @var int + * @cvalue OCI_FO_TXNAL + */ +const OCI_FO_TXNAL = UNKNOWN; + +/** + * @var int + * @cvalue OCI_FO_RETRY + */ +const OCI_FO_RETRY = UNKNOWN; + /** @param resource $statement */ function oci_define_by_name($statement, string $column, mixed &$var, int $type = 0): bool {} diff --git a/ext/oci8/oci8_arginfo.h b/ext/oci8/oci8_arginfo.h index 1edc06351b3d2..a6869afd2e64b 100644 --- a/ext/oci8/oci8_arginfo.h +++ b/ext/oci8/oci8_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: e942a76bf66ad950c12f459b3f62bb6a0edf680c */ + * Stub hash: 850d4e63296c95a27cdfc1244d63b1ed496acd54 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_oci_define_by_name, 0, 3, _IS_BOOL, 0) ZEND_ARG_INFO(0, statement) @@ -801,6 +801,84 @@ static const zend_function_entry class_OCICollection_methods[] = { static void register_oci8_symbols(int module_number) { + REGISTER_LONG_CONSTANT("OCI_DEFAULT", OCI_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_SYSOPER", OCI_SYSOPER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_SYSDBA", OCI_SYSDBA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_CRED_EXT", PHP_OCI_CRED_EXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_DESCRIBE_ONLY", OCI_DESCRIBE_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_COMMIT_ON_SUCCESS", OCI_COMMIT_ON_SUCCESS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_NO_AUTO_COMMIT", OCI_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_EXACT_FETCH", OCI_EXACT_FETCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_SEEK_SET", PHP_OCI_SEEK_SET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_SEEK_CUR", PHP_OCI_SEEK_CUR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_SEEK_END", PHP_OCI_SEEK_END, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_LOB_BUFFER_FREE", OCI_LOB_BUFFER_FREE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_BFILEE", SQLT_BFILEE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_CFILEE", SQLT_CFILEE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_CLOB", SQLT_CLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_BLOB", SQLT_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_RDD", SQLT_RDD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_INT", SQLT_INT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_NUM", SQLT_NUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_RSET", SQLT_RSET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_AFC", SQLT_AFC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_CHR", SQLT_CHR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_VCS", SQLT_VCS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_AVC", SQLT_AVC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_STR", SQLT_STR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_LVC", SQLT_LVC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_FLT", SQLT_FLT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_UIN", SQLT_UIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_LNG", SQLT_LNG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_LBI", SQLT_LBI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_BIN", SQLT_BIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_ODT", SQLT_ODT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_BDOUBLE", SQLT_BDOUBLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_BFLOAT", SQLT_BFLOAT, CONST_PERSISTENT); +#if OCI_MAJOR_VERSION >= 12 + REGISTER_LONG_CONSTANT("SQLT_BOL", SQLT_BOL, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("OCI_B_NTY", SQLT_NTY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLT_NTY", SQLT_NTY, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("OCI_SYSDATE", "SYSDATE", CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_BFILE", SQLT_BFILEE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_CFILEE", SQLT_CFILEE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_CLOB", SQLT_CLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_BLOB", SQLT_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_ROWID", SQLT_RDD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_CURSOR", SQLT_RSET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_BIN", SQLT_BIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_INT", SQLT_INT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_B_NUM", SQLT_NUM, CONST_PERSISTENT); +#if OCI_MAJOR_VERSION >= 12 + REGISTER_LONG_CONSTANT("OCI_B_BOL", SQLT_BOL, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("OCI_FETCHSTATEMENT_BY_COLUMN", PHP_OCI_FETCHSTATEMENT_BY_COLUMN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FETCHSTATEMENT_BY_ROW", PHP_OCI_FETCHSTATEMENT_BY_ROW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_ASSOC", PHP_OCI_ASSOC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_NUM", PHP_OCI_NUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_BOTH", PHP_OCI_BOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_RETURN_NULLS", PHP_OCI_RETURN_NULLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_RETURN_LOBS", PHP_OCI_RETURN_LOBS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_DTYPE_FILE", OCI_DTYPE_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_DTYPE_LOB", OCI_DTYPE_LOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_DTYPE_ROWID", OCI_DTYPE_ROWID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_D_FILE", OCI_DTYPE_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_D_LOB", OCI_DTYPE_LOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_D_ROWID", OCI_DTYPE_ROWID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_TEMP_CLOB", OCI_TEMP_CLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_TEMP_BLOB", OCI_TEMP_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_END", OCI_FO_END, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_ABORT", OCI_FO_ABORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_REAUTH", OCI_FO_REAUTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_BEGIN", OCI_FO_BEGIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_ERROR", OCI_FO_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_NONE", OCI_FO_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_SESSION", OCI_FO_SESSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_SELECT", OCI_FO_SELECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_TXNAL", OCI_FO_TXNAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OCI_FO_RETRY", OCI_FO_RETRY, CONST_PERSISTENT); + zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "oci_new_connect", sizeof("oci_new_connect") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); diff --git a/ext/oci8/tests/CONFLICTS b/ext/oci8/tests/CONFLICTS new file mode 100644 index 0000000000000..176b41ab8bb6f --- /dev/null +++ b/ext/oci8/tests/CONFLICTS @@ -0,0 +1 @@ +oci8 diff --git a/ext/odbc/odbc.stub.php b/ext/odbc/odbc.stub.php index 20cfe6ceffde4..914a3aae283fd 100644 --- a/ext/odbc/odbc.stub.php +++ b/ext/odbc/odbc.stub.php @@ -215,7 +215,7 @@ */ const SQL_TIMESTAMP = UNKNOWN; -#if defined(ODBCVER) && (ODBCVER >= 0x0300) +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) /** * @var int * @cvalue SQL_TYPE_DATE diff --git a/ext/odbc/odbc_arginfo.h b/ext/odbc/odbc_arginfo.h index 843376ada6a80..8d00ed2125ea7 100644 --- a/ext/odbc/odbc_arginfo.h +++ b/ext/odbc/odbc_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 06660ff7830809c9c11efc8edac13ebbb102b33c */ + * Stub hash: 64fbf9feef2929640a5e8615df6a085c504b7914 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_odbc_close_all, 0, 0, IS_VOID, 0) ZEND_END_ARG_INFO() @@ -394,96 +394,96 @@ static const zend_function_entry ext_functions[] = { static void register_odbc_symbols(int module_number) { - REGISTER_STRING_CONSTANT("ODBC_TYPE", PHP_ODBC_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ODBC_BINMODE_PASSTHRU", PHP_ODBC_BINMODE_PASSTHRU, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ODBC_BINMODE_RETURN", PHP_ODBC_BINMODE_RETURN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ODBC_BINMODE_CONVERT", PHP_ODBC_BINMODE_CONVERT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_ODBC_CURSORS", SQL_ODBC_CURSORS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CUR_USE_DRIVER", SQL_CUR_USE_DRIVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CUR_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CUR_USE_ODBC", SQL_CUR_USE_ODBC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CONCURRENCY", SQL_CONCURRENCY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CONCUR_READ_ONLY", SQL_CONCUR_READ_ONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CONCUR_LOCK", SQL_CONCUR_LOCK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CONCUR_ROWVER", SQL_CONCUR_ROWVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CONCUR_VALUES", SQL_CONCUR_VALUES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CURSOR_TYPE", SQL_CURSOR_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CURSOR_FORWARD_ONLY", SQL_CURSOR_FORWARD_ONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CURSOR_KEYSET_DRIVEN", SQL_CURSOR_KEYSET_DRIVEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CURSOR_DYNAMIC", SQL_CURSOR_DYNAMIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CURSOR_STATIC", SQL_CURSOR_STATIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_KEYSET_SIZE", SQL_KEYSET_SIZE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_FETCH_FIRST", SQL_FETCH_FIRST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_FETCH_NEXT", SQL_FETCH_NEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_CHAR", SQL_CHAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_VARCHAR", SQL_VARCHAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_LONGVARCHAR", SQL_LONGVARCHAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_DECIMAL", SQL_DECIMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_NUMERIC", SQL_NUMERIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_BIT", SQL_BIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_TINYINT", SQL_TINYINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_SMALLINT", SQL_SMALLINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_INTEGER", SQL_INTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_BIGINT", SQL_BIGINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_REAL", SQL_REAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_FLOAT", SQL_FLOAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_DOUBLE", SQL_DOUBLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_BINARY", SQL_BINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_VARBINARY", SQL_VARBINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_LONGVARBINARY", SQL_LONGVARBINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_DATE", SQL_DATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_TIME", SQL_TIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQL_TIMESTAMP", SQL_TIMESTAMP, CONST_CS | CONST_PERSISTENT); -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_BEST_ROWID", SQL_BEST_ROWID, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_ROWVER", SQL_ROWVER, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_SCOPE_CURROW", SQL_SCOPE_CURROW, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_SCOPE_TRANSACTION", SQL_SCOPE_TRANSACTION, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_SCOPE_SESSION", SQL_SCOPE_SESSION, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_NO_NULLS", SQL_NO_NULLS, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_NULLABLE", SQL_NULLABLE, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_INDEX_UNIQUE", SQL_INDEX_UNIQUE, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_INDEX_ALL", SQL_INDEX_ALL, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_ENSURE", SQL_ENSURE, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(ODBCVER) && (ODBCVER >= 0x0300) - REGISTER_LONG_CONSTANT("SQL_QUICK", SQL_QUICK, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("ODBC_TYPE", PHP_ODBC_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_PASSTHRU", PHP_ODBC_BINMODE_PASSTHRU, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_RETURN", PHP_ODBC_BINMODE_RETURN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ODBC_BINMODE_CONVERT", PHP_ODBC_BINMODE_CONVERT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_ODBC_CURSORS", SQL_ODBC_CURSORS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CUR_USE_DRIVER", SQL_CUR_USE_DRIVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CUR_USE_IF_NEEDED", SQL_CUR_USE_IF_NEEDED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CUR_USE_ODBC", SQL_CUR_USE_ODBC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CONCURRENCY", SQL_CONCURRENCY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CONCUR_READ_ONLY", SQL_CONCUR_READ_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CONCUR_LOCK", SQL_CONCUR_LOCK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CONCUR_ROWVER", SQL_CONCUR_ROWVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CONCUR_VALUES", SQL_CONCUR_VALUES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CURSOR_TYPE", SQL_CURSOR_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CURSOR_FORWARD_ONLY", SQL_CURSOR_FORWARD_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CURSOR_KEYSET_DRIVEN", SQL_CURSOR_KEYSET_DRIVEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CURSOR_DYNAMIC", SQL_CURSOR_DYNAMIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CURSOR_STATIC", SQL_CURSOR_STATIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_KEYSET_SIZE", SQL_KEYSET_SIZE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_FETCH_FIRST", SQL_FETCH_FIRST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_FETCH_NEXT", SQL_FETCH_NEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_CHAR", SQL_CHAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_VARCHAR", SQL_VARCHAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_LONGVARCHAR", SQL_LONGVARCHAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_DECIMAL", SQL_DECIMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_NUMERIC", SQL_NUMERIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_BIT", SQL_BIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_TINYINT", SQL_TINYINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_SMALLINT", SQL_SMALLINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_INTEGER", SQL_INTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_BIGINT", SQL_BIGINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_REAL", SQL_REAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_FLOAT", SQL_FLOAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_DOUBLE", SQL_DOUBLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_BINARY", SQL_BINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_VARBINARY", SQL_VARBINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_LONGVARBINARY", SQL_LONGVARBINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_DATE", SQL_DATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_TIME", SQL_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQL_TIMESTAMP", SQL_TIMESTAMP, CONST_PERSISTENT); +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_TYPE_DATE", SQL_TYPE_DATE, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_TYPE_TIME", SQL_TYPE_TIME, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_TYPE_TIMESTAMP", SQL_TYPE_TIMESTAMP, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_WCHAR", SQL_WCHAR, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_WVARCHAR", SQL_WVARCHAR, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_WLONGVARCHAR", SQL_WLONGVARCHAR, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_BEST_ROWID", SQL_BEST_ROWID, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_ROWVER", SQL_ROWVER, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_SCOPE_CURROW", SQL_SCOPE_CURROW, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_SCOPE_TRANSACTION", SQL_SCOPE_TRANSACTION, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_SCOPE_SESSION", SQL_SCOPE_SESSION, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_NO_NULLS", SQL_NO_NULLS, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_NULLABLE", SQL_NULLABLE, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_INDEX_UNIQUE", SQL_INDEX_UNIQUE, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_INDEX_ALL", SQL_INDEX_ALL, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_ENSURE", SQL_ENSURE, CONST_PERSISTENT); +#endif +#if (defined(ODBCVER) && (ODBCVER >= 0x0300)) + REGISTER_LONG_CONSTANT("SQL_QUICK", SQL_QUICK, CONST_PERSISTENT); #endif diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c index 3a821a35ea38c..a26a1a43c692e 100644 --- a/ext/odbc/php_odbc.c +++ b/ext/odbc/php_odbc.c @@ -349,7 +349,7 @@ static PHP_INI_DISP(display_cursortype) /* {{{ PHP_INI_BEGIN */ PHP_INI_BEGIN() - STD_PHP_INI_BOOLEAN("odbc.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateLong, + STD_PHP_INI_BOOLEAN("odbc.allow_persistent", "1", PHP_INI_SYSTEM, OnUpdateBool, allow_persistent, zend_odbc_globals, odbc_globals) STD_PHP_INI_ENTRY_EX("odbc.max_persistent", "-1", PHP_INI_SYSTEM, OnUpdateLong, max_persistent, zend_odbc_globals, odbc_globals, display_link_nums) @@ -365,7 +365,7 @@ PHP_INI_BEGIN() defaultlrl, zend_odbc_globals, odbc_globals, display_lrl) STD_PHP_INI_ENTRY_EX("odbc.defaultbinmode", "1", PHP_INI_ALL, OnUpdateLong, defaultbinmode, zend_odbc_globals, odbc_globals, display_binmode) - STD_PHP_INI_BOOLEAN("odbc.check_persistent", "1", PHP_INI_SYSTEM, OnUpdateLong, + STD_PHP_INI_BOOLEAN("odbc.check_persistent", "1", PHP_INI_SYSTEM, OnUpdateBool, check_persistent, zend_odbc_globals, odbc_globals) STD_PHP_INI_ENTRY_EX("odbc.default_cursortype", "3", PHP_INI_ALL, OnUpdateLong, default_cursortype, zend_odbc_globals, odbc_globals, display_cursortype) @@ -438,7 +438,7 @@ PHP_MINFO_FUNCTION(odbc) char buf[32]; php_info_print_table_start(); - php_info_print_table_header(2, "ODBC Support", "enabled"); + php_info_print_table_row(2, "ODBC Support", "enabled"); snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ODBCG(num_persistent)); php_info_print_table_row(2, "Active Persistent Links", buf); snprintf(buf, sizeof(buf), ZEND_LONG_FMT, ODBCG(num_links)); @@ -2246,7 +2246,20 @@ void odbc_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) RETCODE ret; UCHAR d_name[32]; SQLSMALLINT len; + SQLUINTEGER dead = SQL_CD_FALSE; + ret = SQLGetConnectAttr(db_conn->hdbc, + SQL_ATTR_CONNECTION_DEAD, + &dead, 0, NULL); + if (ret == SQL_SUCCESS && dead == SQL_CD_TRUE) { + /* Bail early here, since we know it's gone */ + zend_hash_str_del(&EG(persistent_list), hashed_details, hashed_len); + goto try_and_get_another_connection; + } + /* If the driver doesn't support it, or returns + * false (could be a false positive), fall back + * to the old heuristic. + */ ret = SQLGetInfo(db_conn->hdbc, SQL_DATA_SOURCE_READ_ONLY, d_name, sizeof(d_name), &len); diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h index 78dffeda438d7..21c74d317c68c 100644 --- a/ext/odbc/php_odbc_includes.h +++ b/ext/odbc/php_odbc_includes.h @@ -228,8 +228,8 @@ ZEND_BEGIN_MODULE_GLOBALS(odbc) char *defDB; char *defUser; char *defPW; - zend_long allow_persistent; - zend_long check_persistent; + bool allow_persistent; + bool check_persistent; zend_long max_persistent; zend_long max_links; zend_long num_persistent; diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 0478e8067e314..a74ad34ab8ea1 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -1806,6 +1806,7 @@ static zend_persistent_script *opcache_compile_file(zend_file_handle *file_handl 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; if (ZCG(accel_directives).file_cache) { CG(compiler_options) |= ZEND_COMPILE_WITH_FILE_CACHE; } @@ -2190,12 +2191,13 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type) ZCSG(hits)++; /* TBFixed: may lose one hit */ persistent_script->dynamic_members.hits++; /* see above */ #else -#ifdef _M_X64 +#if ZEND_ENABLE_ZVAL_LONG64 InterlockedIncrement64(&ZCSG(hits)); + InterlockedIncrement64(&persistent_script->dynamic_members.hits); #else InterlockedIncrement(&ZCSG(hits)); + InterlockedIncrement(&persistent_script->dynamic_members.hits); #endif - InterlockedIncrement64(&persistent_script->dynamic_members.hits); #endif /* see bug #15471 (old BTS) */ @@ -2838,18 +2840,23 @@ static inline int accel_find_sapi(void) static int zend_accel_init_shm(void) { int i; + size_t accel_shared_globals_size; zend_shared_alloc_lock(); if (ZCG(accel_directives).interned_strings_buffer) { - accel_shared_globals = zend_shared_alloc((ZCG(accel_directives).interned_strings_buffer * 1024 * 1024)); + accel_shared_globals_size = ZCG(accel_directives).interned_strings_buffer * 1024 * 1024; } else { /* Make sure there is always at least one interned string hash slot, * so the table can be queried unconditionally. */ - accel_shared_globals = zend_shared_alloc(sizeof(zend_accel_shared_globals) + sizeof(uint32_t)); + accel_shared_globals_size = sizeof(zend_accel_shared_globals) + sizeof(uint32_t); } + + accel_shared_globals = zend_shared_alloc(accel_shared_globals_size); if (!accel_shared_globals) { - zend_accel_error_noreturn(ACCEL_LOG_FATAL, "Insufficient shared memory!"); + zend_accel_error_noreturn(ACCEL_LOG_FATAL, + "Insufficient shared memory for interned strings buffer! (tried to allocate %zu bytes)", + accel_shared_globals_size); zend_shared_alloc_unlock(); return FAILURE; } @@ -3931,12 +3938,7 @@ static void preload_link(void) /* Inheritance successful, print out any warnings. */ zend_error_cb = orig_error_cb; - EG(record_errors) = false; - for (uint32_t i = 0; i < EG(num_errors); i++) { - zend_error_info *error = EG(errors)[i]; - zend_error_zstr_at( - error->type, error->filename, error->lineno, error->message); - } + zend_emit_recorded_errors(); } zend_catch { /* Clear variance obligations that were left behind on bailout. */ if (CG(delayed_variance_obligations)) { diff --git a/ext/opcache/ZendAccelerator.h b/ext/opcache/ZendAccelerator.h index bc7236fbdb3fa..bc92854c35576 100644 --- a/ext/opcache/ZendAccelerator.h +++ b/ext/opcache/ZendAccelerator.h @@ -137,11 +137,7 @@ typedef struct _zend_persistent_script { */ struct zend_persistent_script_dynamic_members { time_t last_used; -#ifdef ZEND_WIN32 - LONGLONG hits; -#else - zend_ulong hits; -#endif + zend_ulong hits; unsigned int memory_consumption; unsigned int checksum; time_t revalidate; diff --git a/ext/opcache/jit/libudis86/udint.h b/ext/opcache/jit/libudis86/udint.h index 734f0eaa82db1..0bf493c182bb6 100644 --- a/ext/opcache/jit/libudis86/udint.h +++ b/ext/opcache/jit/libudis86/udint.h @@ -79,7 +79,7 @@ #if defined(_MSC_VER) || defined(__BORLANDC__) # define FMT64 "I64" #else -# if defined(__APPLE__) +# if defined(__APPLE__) || defined(__OpenBSD__) # define FMT64 "ll" # elif defined(__amd64__) || defined(__x86_64__) # define FMT64 "l" diff --git a/ext/opcache/jit/zend_jit.c b/ext/opcache/jit/zend_jit.c index ac4fba9877a8d..8bf7c69377788 100644 --- a/ext/opcache/jit/zend_jit.c +++ b/ext/opcache/jit/zend_jit.c @@ -4611,7 +4611,6 @@ ZEND_EXT_API void zend_jit_unprotect(void) #ifdef HAVE_PTHREAD_JIT_WRITE_PROTECT_NP if (zend_write_protect) { pthread_jit_write_protect_np(0); - return; } #endif opts |= PROT_EXEC; @@ -4645,7 +4644,6 @@ ZEND_EXT_API void zend_jit_protect(void) #ifdef HAVE_PTHREAD_JIT_WRITE_PROTECT_NP if (zend_write_protect) { pthread_jit_write_protect_np(1); - return; } #endif if (mprotect(dasm_buf, dasm_size, PROT_READ | PROT_EXEC) != 0) { diff --git a/ext/opcache/jit/zend_jit_arm64.dasc b/ext/opcache/jit/zend_jit_arm64.dasc index cd8f3ab1238e9..af66291f9f0c5 100644 --- a/ext/opcache/jit/zend_jit_arm64.dasc +++ b/ext/opcache/jit/zend_jit_arm64.dasc @@ -8131,7 +8131,10 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ } } - if ((op1_info & MAY_BE_ANY) == MAY_BE_DOUBLE) { + if ((op1_info & (MAY_BE_ANY-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) == MAY_BE_DOUBLE) { + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + |.cold_code + } |2: | fmov FPR0, xzr // TODO: "movi d0, #0" is not recognized by DynASM/arm64 | DOUBLE_CMP ZREG_FPR0, op1_addr, ZREG_TMP1, ZREG_FPTMP @@ -8176,6 +8179,10 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ |1: | SET_ZVAL_TYPE_INFO_FROM_REG res_addr, REG0w, TMP1 } + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | b >9 + |.code + } } else { if (exit_addr) { if (branch_opcode == ZEND_JMPNZ || branch_opcode == ZEND_JMPNZ_EX) { @@ -8187,6 +8194,9 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ | beq &exit_addr |1: } + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | b >9 + } } else { ZEND_ASSERT(true_label != (uint32_t)-1 || false_label != (uint32_t)-1); if (false_label != (uint32_t)-1 ) { @@ -8195,12 +8205,20 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ |1: if (true_label != (uint32_t)-1) { | b =>true_label + } else if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | b >9 } } else { | bvs => true_label | bne => true_label + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | b >9 + } } } + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + |.code + } } } else if (op1_info & (MAY_BE_ANY - (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) { if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { @@ -8407,7 +8425,7 @@ static int zend_jit_push_call_frame(dasm_State **Dst, const zend_op *opline, con stack_check = 0; } } else { - used_stack = (ZEND_CALL_FRAME_SLOT + opline->extended_value) * sizeof(zval); + used_stack = (ZEND_CALL_FRAME_SLOT + opline->extended_value + ZEND_OBSERVER_ENABLED) * sizeof(zval); | // if (EXPECTED(ZEND_USER_CODE(func->type))) { if (!is_closure) { diff --git a/ext/opcache/jit/zend_jit_trace.c b/ext/opcache/jit/zend_jit_trace.c index 47667cb224906..075acf5e6f862 100644 --- a/ext/opcache/jit/zend_jit_trace.c +++ b/ext/opcache/jit/zend_jit_trace.c @@ -1082,6 +1082,9 @@ static int is_checked_guard(const zend_ssa *tssa, const zend_op **ssa_opcodes, u && (tssa->var_info[tssa->ops[idx].op1_use].type & MAY_BE_STRING)) { return 0; } + if (!(tssa->var_info[tssa->ops[idx].op1_use].type & (MAY_BE_LONG|MAY_BE_DOUBLE))) { + return 0; + } return 1; } else if (opline->opcode == ZEND_ASSIGN_OP && (opline->extended_value == ZEND_ADD @@ -1110,11 +1113,7 @@ static int is_checked_guard(const zend_ssa *tssa, const zend_op **ssa_opcodes, u const zend_op *opline = ssa_opcodes[idx]; if (opline->opcode == ZEND_ADD || opline->opcode == ZEND_SUB - || opline->opcode == ZEND_MUL - || opline->opcode == ZEND_PRE_DEC - || opline->opcode == ZEND_PRE_INC - || opline->opcode == ZEND_POST_DEC - || opline->opcode == ZEND_POST_INC) { + || opline->opcode == ZEND_MUL) { if ((opline->op1_type & (IS_VAR|IS_CV)) && tssa->ops[idx].op1_use >= 0 && (tssa->var_info[tssa->ops[idx].op1_use].type & MAY_BE_REF)) { @@ -1125,6 +1124,34 @@ static int is_checked_guard(const zend_ssa *tssa, const zend_op **ssa_opcodes, u && (tssa->var_info[tssa->ops[idx].op2_use].type & MAY_BE_REF)) { return 0; } + if (opline->op1_type == IS_CONST) { + zval *zv = RT_CONSTANT(opline, opline->op1); + if (Z_TYPE_P(zv) != IS_LONG && Z_TYPE_P(zv) != IS_DOUBLE) { + return 0; + } + } else if (!(tssa->var_info[tssa->ops[idx].op1_use].type & (MAY_BE_LONG|MAY_BE_DOUBLE))) { + return 0; + } + if (opline->op2_type == IS_CONST) { + zval *zv = RT_CONSTANT(opline, opline->op2); + if (Z_TYPE_P(zv) != IS_LONG && Z_TYPE_P(zv) != IS_DOUBLE) { + return 0; + } + } else if (!(tssa->var_info[tssa->ops[idx].op2_use].type & (MAY_BE_LONG|MAY_BE_DOUBLE))) { + return 0; + } + } else if (opline->opcode == ZEND_PRE_DEC + || opline->opcode == ZEND_PRE_INC + || opline->opcode == ZEND_POST_DEC + || opline->opcode == ZEND_POST_INC) { + if ((opline->op1_type & (IS_VAR|IS_CV)) + && tssa->ops[idx].op1_use >= 0 + && (tssa->var_info[tssa->ops[idx].op1_use].type & MAY_BE_REF)) { + return 0; + } + if (!(tssa->var_info[tssa->ops[idx].op1_use].type & (MAY_BE_LONG|MAY_BE_DOUBLE))) { + return 0; + } return 1; } } @@ -6350,7 +6377,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par } SET_STACK_TYPE(stack, EX_VAR_TO_NUM(opline->op2.var), type, (gen_handler || type == IS_UNKNOWN || !ra || - (!ra[ssa_op->op2_def] && !ssa->vars[ssa_op->op2_def].no_val))); + (!ra[ssa_op->op2_def] /*&& !ssa->vars[ssa_op->op2_def].no_val*/))); if (type != IS_UNKNOWN) { ssa->var_info[ssa_op->op2_def].type &= ~MAY_BE_GUARD; if (ra && ra[ssa_op->op2_def]) { @@ -7125,6 +7152,77 @@ static zend_jit_trace_stop zend_jit_compile_root_trace(zend_jit_trace_rec *trace return ret; } +/* Set counting handler back to original VM handler. */ +static void zend_jit_stop_hot_trace_counters(zend_op_array *op_array) +{ + zend_jit_op_array_trace_extension *jit_extension; + uint32_t i; + + jit_extension = (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); + zend_shared_alloc_lock(); + SHM_UNPROTECT(); + for (i = 0; i < op_array->last; i++) { + /* Opline with Jit-ed code handler is skipped. */ + if (jit_extension->trace_info[i].trace_flags & + (ZEND_JIT_TRACE_JITED|ZEND_JIT_TRACE_BLACKLISTED)) { + continue; + } + if (jit_extension->trace_info[i].trace_flags & + (ZEND_JIT_TRACE_START_LOOP | ZEND_JIT_TRACE_START_ENTER | ZEND_JIT_TRACE_START_RETURN)) { + op_array->opcodes[i].handler = jit_extension->trace_info[i].orig_handler; + } + } + SHM_PROTECT(); + zend_shared_alloc_unlock(); +} + +/* Get the tracing op_array. */ +static void zend_jit_stop_persistent_op_array(zend_op_array *op_array) +{ + zend_func_info *func_info = ZEND_FUNC_INFO(op_array); + if (!func_info) { + return; + } + if (func_info->flags & ZEND_FUNC_JIT_ON_HOT_TRACE) { + zend_jit_stop_hot_trace_counters(op_array); + } +} + +/* Get all op_arrays with counter handler. */ +static void zend_jit_stop_persistent_script(zend_persistent_script *script) +{ + zend_class_entry *ce; + zend_op_array *op_array; + + zend_jit_stop_persistent_op_array(&script->script.main_op_array); + + ZEND_HASH_FOREACH_PTR(&script->script.function_table, op_array) { + zend_jit_stop_persistent_op_array(op_array); + } ZEND_HASH_FOREACH_END(); + + ZEND_HASH_FOREACH_PTR(&script->script.class_table, ce) { + ZEND_HASH_FOREACH_PTR(&ce->function_table, op_array) { + if (op_array->type == ZEND_USER_FUNCTION) { + zend_jit_stop_persistent_op_array(op_array); + } + } ZEND_HASH_FOREACH_END(); + } ZEND_HASH_FOREACH_END(); +} + +/* Get all scripts which are accelerated by JIT */ +static void zend_jit_stop_counter_handlers(void) +{ + for (uint32_t i = 0; i < ZCSG(hash).max_num_entries; i++) { + zend_accel_hash_entry *cache_entry; + for (cache_entry = ZCSG(hash).hash_table[i]; cache_entry; cache_entry = cache_entry->next) { + zend_persistent_script *script; + if (cache_entry->indirect) continue; + script = (zend_persistent_script *)cache_entry->data; + zend_jit_stop_persistent_script(script); + } + } +} + static void zend_jit_blacklist_root_trace(const zend_op *opline, size_t offset) { zend_shared_alloc_lock(); @@ -7505,6 +7603,7 @@ int ZEND_FASTCALL zend_jit_trace_hot_root(zend_execute_data *execute_data, const if (ZEND_JIT_TRACE_NUM >= JIT_G(max_root_traces)) { stop = ZEND_JIT_TRACE_STOP_TOO_MANY_TRACES; + zend_jit_stop_counter_handlers(); goto abort; } diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index f5688e8854612..33a38f40c6f75 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -8736,7 +8736,10 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ } } - if ((op1_info & MAY_BE_ANY) == MAY_BE_DOUBLE) { + if ((op1_info & (MAY_BE_ANY-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) == MAY_BE_DOUBLE) { + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + |.cold_code + } |2: if (CAN_USE_AVX()) { | vxorps xmm0, xmm0, xmm0 @@ -8785,6 +8788,10 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ |1: | SET_ZVAL_TYPE_INFO res_addr, eax } + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | jmp >9 + |.code + } } else { if (exit_addr) { if (branch_opcode == ZEND_JMPNZ || branch_opcode == ZEND_JMPNZ_EX) { @@ -8796,6 +8803,9 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ | je &exit_addr |1: } + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | jmp >9 + } } else { ZEND_ASSERT(true_label != (uint32_t)-1 || false_label != (uint32_t)-1); if (false_label != (uint32_t)-1 ) { @@ -8804,12 +8814,20 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ |1: if (true_label != (uint32_t)-1) { | jmp =>true_label + } else if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | jmp >9 } } else { | jp => true_label | jne => true_label + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + | jmp >9 + } } } + if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { + |.code + } } } else if (op1_info & (MAY_BE_ANY - (MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG))) { if (op1_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG)) { @@ -9010,7 +9028,7 @@ static int zend_jit_push_call_frame(dasm_State **Dst, const zend_op *opline, con stack_check = 0; } } else { - used_stack = (ZEND_CALL_FRAME_SLOT + opline->extended_value) * sizeof(zval); + used_stack = (ZEND_CALL_FRAME_SLOT + opline->extended_value + ZEND_OBSERVER_ENABLED) * sizeof(zval); | // if (EXPECTED(ZEND_USER_CODE(func->type))) { if (!is_closure) { diff --git a/ext/opcache/shared_alloc_mmap.c b/ext/opcache/shared_alloc_mmap.c index add07cd1694b0..8a9921532d32e 100644 --- a/ext/opcache/shared_alloc_mmap.c +++ b/ext/opcache/shared_alloc_mmap.c @@ -166,6 +166,9 @@ static int create_segments(size_t requested_size, zend_shared_segment ***shared_ #ifdef PROT_MAX flags |= PROT_MAX(PROT_READ | PROT_WRITE | PROT_EXEC); #endif +#ifdef MAP_JIT + flags |= MAP_JIT; +#endif #if (defined(__linux__) || defined(__FreeBSD__)) && (defined(__x86_64__) || defined (__aarch64__)) void *hint = find_prefered_mmap_base(requested_size); if (hint != MAP_FAILED) { diff --git a/ext/opcache/tests/file_cache_error.phpt b/ext/opcache/tests/file_cache_error.phpt new file mode 100644 index 0000000000000..75b63cd21cce0 --- /dev/null +++ b/ext/opcache/tests/file_cache_error.phpt @@ -0,0 +1,42 @@ +--TEST-- +File cache error 001 +--EXTENSIONS-- +opcache +posix +pcntl +--INI-- +opcache.enable_cli=1 +opcache.file_cache={TMP} +opcache.log_verbosity_level=2 +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) +%sWarning opcache cannot write to file %s: %s + +OK diff --git a/ext/opcache/tests/gh9259_001.phpt b/ext/opcache/tests/gh9259_001.phpt new file mode 100644 index 0000000000000..bcc0f113c57f6 --- /dev/null +++ b/ext/opcache/tests/gh9259_001.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug GH-9259 001 (Setting opcache.interned_strings_buffer to a very high value leads to corruption of shm) +--EXTENSIONS-- +opcache +--INI-- +opcache.interned_strings_buffer=131072 +opcache.log_verbosity_level=2 +opcache.enable_cli=1 +--FILE-- + +--EXPECTF-- +%sWarning opcache.interned_strings_buffer must be less than or equal to 4095, 131072 given%s + +OK diff --git a/ext/opcache/tests/gh9259_002.phpt b/ext/opcache/tests/gh9259_002.phpt new file mode 100644 index 0000000000000..8b74949b49469 --- /dev/null +++ b/ext/opcache/tests/gh9259_002.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug GH-9259 002 (Setting opcache.interned_strings_buffer to a very high value leads to corruption of shm) +--EXTENSIONS-- +opcache +--INI-- +opcache.interned_strings_buffer=-1 +opcache.log_verbosity_level=2 +opcache.enable_cli=1 +--FILE-- + +--EXPECTF-- +%sWarning opcache.interned_strings_buffer must be greater than or equal to 0, -1 given%s + +OK diff --git a/ext/opcache/tests/gh9259_003.phpt b/ext/opcache/tests/gh9259_003.phpt new file mode 100644 index 0000000000000..91bfcad917b36 --- /dev/null +++ b/ext/opcache/tests/gh9259_003.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug GH-9259 003 (Setting opcache.interned_strings_buffer to a very high value leads to corruption of shm) +--EXTENSIONS-- +opcache +--INI-- +opcache.interned_strings_buffer=500 +opcache.enable_cli=1 +--FILE-- + +--EXPECTF-- +%sFatal Error Insufficient shared memory for interned strings buffer! (tried to allocate %d bytes) diff --git a/ext/opcache/tests/jit/add_014.phpt b/ext/opcache/tests/jit/add_014.phpt new file mode 100644 index 0000000000000..b7691c770334c --- /dev/null +++ b/ext/opcache/tests/jit/add_014.phpt @@ -0,0 +1,25 @@ +--TEST-- +JIT ADD: 014 incorrect guard elimination +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +--FILE-- +> 4 - $j++; + if ($j > 14) break; + } +} +try { + @test(); +} catch (Throwable $e) { + echo $e->getMessage() . "\n"; +} +?> +--EXPECT-- +Bit shift by negative number diff --git a/ext/opcache/tests/jit/assign_054.phpt b/ext/opcache/tests/jit/assign_054.phpt new file mode 100644 index 0000000000000..a4c4706b7cefd --- /dev/null +++ b/ext/opcache/tests/jit/assign_054.phpt @@ -0,0 +1,24 @@ +--TEST-- +JIT ASSIGN: missing type store +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +opcache.protect_memory=1 +--FILE-- + +DONE +--EXPECT-- +DONE diff --git a/ext/opcache/tests/jit/fetch_dim_func_arg_002.phpt b/ext/opcache/tests/jit/fetch_dim_func_arg_002.phpt new file mode 100644 index 0000000000000..3699eba2045f0 --- /dev/null +++ b/ext/opcache/tests/jit/fetch_dim_func_arg_002.phpt @@ -0,0 +1,18 @@ +--TEST-- +JIT FETCH_DIM_FUNC_ARG: 002 +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +--EXTENSIONS-- +opcache +--FILE-- + +DONE +--EXPECTF-- +Warning: Trying to access array offset on value of type bool in %sfetch_dim_func_arg_002.php on line 2 +DONE diff --git a/ext/opcache/tests/opt/assign_obj_001.phpt b/ext/opcache/tests/opt/assign_obj_001.phpt new file mode 100644 index 0000000000000..205f111233e86 --- /dev/null +++ b/ext/opcache/tests/opt/assign_obj_001.phpt @@ -0,0 +1,24 @@ +--TEST-- +ASSIGN_OP 001: Incorrect optimization of ASSIGN_OBJ may lead to memory leak +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- +y = ''; +} +test(); +?> +--EXPECTF-- +Warning: Undefined variable $y in %sassign_obj_001.php on line 3 + +Warning: Undefined variable $a in %sassign_obj_001.php on line 3 + +Fatal error: Uncaught Error: Attempt to assign property "y" on string in %sassign_obj_001.php:4 +Stack trace: +#0 %sassign_obj_001.php(6): test() +#1 {main} + thrown in %sassign_obj_001.php on line 4 diff --git a/ext/opcache/tests/opt/assign_op_001.phpt b/ext/opcache/tests/opt/assign_op_001.phpt index b9db4202b46c0..7ac23d71c0d17 100644 --- a/ext/opcache/tests/opt/assign_op_001.phpt +++ b/ext/opcache/tests/opt/assign_op_001.phpt @@ -1,5 +1,5 @@ --TEST-- -ASSIGN_OP 001: Incrrect optimization of ASSIGN_OP may lead to memory leak +ASSIGN_OP 001: Incorrect optimization of ASSIGN_OP may lead to memory leak --INI-- opcache.enable=1 opcache.enable_cli=1 diff --git a/ext/opcache/tests/opt/inference_015.phpt b/ext/opcache/tests/opt/inference_015.phpt new file mode 100644 index 0000000000000..e64c02225b32f --- /dev/null +++ b/ext/opcache/tests/opt/inference_015.phpt @@ -0,0 +1,19 @@ +--TEST-- +Type inference 015: ASSIGN_DIM_OP +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- + +DONE +--EXPECT-- +DONE diff --git a/ext/opcache/tests/opt/inference_016.phpt b/ext/opcache/tests/opt/inference_016.phpt new file mode 100644 index 0000000000000..6ce2488bcd395 --- /dev/null +++ b/ext/opcache/tests/opt/inference_016.phpt @@ -0,0 +1,23 @@ +--TEST-- +Range inference 016: +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECT-- +NULL +Modulo by zero diff --git a/ext/opcache/tests/opt/inference_017.phpt b/ext/opcache/tests/opt/inference_017.phpt new file mode 100644 index 0000000000000..2c9255e3b2b4f --- /dev/null +++ b/ext/opcache/tests/opt/inference_017.phpt @@ -0,0 +1,21 @@ +--TEST-- +Range inference 017: +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECT-- +Division by zero diff --git a/ext/opcache/tests/opt/inference_018.phpt b/ext/opcache/tests/opt/inference_018.phpt new file mode 100644 index 0000000000000..123cb3b9eb62a --- /dev/null +++ b/ext/opcache/tests/opt/inference_018.phpt @@ -0,0 +1,23 @@ +--TEST-- +Range inference 018: +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- +getMessage(), "\n"; +} +?> +--EXPECT-- +Division by zero diff --git a/ext/opcache/tests/opt/inference_019.phpt b/ext/opcache/tests/opt/inference_019.phpt new file mode 100644 index 0000000000000..f7b951a38f814 --- /dev/null +++ b/ext/opcache/tests/opt/inference_019.phpt @@ -0,0 +1,22 @@ +--TEST-- +Range inference 019: +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.optimization_level=-1 +--FILE-- + +DONE +--EXPECT-- +DONE diff --git a/ext/opcache/zend_accelerator_module.c b/ext/opcache/zend_accelerator_module.c index 2271920b302c7..2eb0b38a7a38b 100644 --- a/ext/opcache/zend_accelerator_module.c +++ b/ext/opcache/zend_accelerator_module.c @@ -31,6 +31,7 @@ #include "zend_virtual_cwd.h" #include "ext/standard/info.h" #include "ext/standard/php_filestat.h" +#include "ext/date/php_date.h" #include "opcache_arginfo.h" #if HAVE_JIT @@ -40,6 +41,7 @@ #define STRING_NOT_NULL(s) (NULL == (s)?"":s) #define MIN_ACCEL_FILES 200 #define MAX_ACCEL_FILES 1000000 +#define MAX_INTERNED_STRINGS_BUFFER_SIZE ((zend_long)((UINT32_MAX-PLATFORM_ALIGNMENT)/(1024*1024))) #define TOKENTOSTR(X) #X static zif_handler orig_file_exists = NULL; @@ -78,6 +80,25 @@ static ZEND_INI_MH(OnUpdateMemoryConsumption) return SUCCESS; } +static ZEND_INI_MH(OnUpdateInternedStringsBuffer) +{ + zend_long *p = (zend_long *) ZEND_INI_GET_ADDR(); + zend_long size = zend_ini_parse_quantity_warn(new_value, entry->name); + + if (size < 0) { + zend_accel_error(ACCEL_LOG_WARNING, "opcache.interned_strings_buffer must be greater than or equal to 0, " ZEND_LONG_FMT " given.\n", size); + return FAILURE; + } + if (size > MAX_INTERNED_STRINGS_BUFFER_SIZE) { + zend_accel_error(ACCEL_LOG_WARNING, "opcache.interned_strings_buffer must be less than or equal to " ZEND_LONG_FMT ", " ZEND_LONG_FMT " given.\n", MAX_INTERNED_STRINGS_BUFFER_SIZE, size); + return FAILURE; + } + + *p = size; + + return SUCCESS; +} + static ZEND_INI_MH(OnUpdateMaxAcceleratedFiles) { zend_long *p = (zend_long *) ZEND_INI_GET_ADDR(); @@ -239,7 +260,7 @@ ZEND_INI_BEGIN() STD_PHP_INI_ENTRY("opcache.log_verbosity_level" , "1" , PHP_INI_SYSTEM, OnUpdateLong, accel_directives.log_verbosity_level, zend_accel_globals, accel_globals) STD_PHP_INI_ENTRY("opcache.memory_consumption" , "128" , PHP_INI_SYSTEM, OnUpdateMemoryConsumption, accel_directives.memory_consumption, zend_accel_globals, accel_globals) - STD_PHP_INI_ENTRY("opcache.interned_strings_buffer", "8" , PHP_INI_SYSTEM, OnUpdateLong, accel_directives.interned_strings_buffer, zend_accel_globals, accel_globals) + STD_PHP_INI_ENTRY("opcache.interned_strings_buffer", "8" , PHP_INI_SYSTEM, OnUpdateInternedStringsBuffer, accel_directives.interned_strings_buffer, zend_accel_globals, accel_globals) STD_PHP_INI_ENTRY("opcache.max_accelerated_files" , "10000", PHP_INI_SYSTEM, OnUpdateMaxAcceleratedFiles, accel_directives.max_accelerated_files, zend_accel_globals, accel_globals) STD_PHP_INI_ENTRY("opcache.max_wasted_percentage" , "5" , PHP_INI_SYSTEM, OnUpdateMaxWastedPercentage, accel_directives.max_wasted_percentage, zend_accel_globals, accel_globals) STD_PHP_INI_ENTRY("opcache.consistency_checks" , "0" , PHP_INI_ALL , OnUpdateLong, accel_directives.consistency_checks, zend_accel_globals, accel_globals) @@ -461,6 +482,9 @@ void zend_accel_info(ZEND_MODULE_INFO_FUNC_ARGS) php_info_print_table_row(2, "Startup Failed", zps_api_failure_reason); } else { char buf[32]; + zend_string *start_time, *restart_time, *force_restart_time; + zval *date_ISO8601 = zend_get_constant_str("DATE_ISO8601", sizeof("DATE_ISO8601")-1); + php_info_print_table_row(2, "Startup", "OK"); php_info_print_table_row(2, "Shared memory model", zend_accel_get_shared_model()); snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(hits)); @@ -491,6 +515,26 @@ void zend_accel_info(ZEND_MODULE_INFO_FUNC_ARGS) php_info_print_table_row(2, "Hash keys restarts", buf); snprintf(buf, sizeof(buf), ZEND_ULONG_FMT, ZCSG(manual_restarts)); php_info_print_table_row(2, "Manual restarts", buf); + + start_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(start_time), 1); + php_info_print_table_row(2, "Start time", ZSTR_VAL(start_time)); + zend_string_release(start_time); + + if (ZCSG(last_restart_time)) { + restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(last_restart_time), 1); + php_info_print_table_row(2, "Last restart time", ZSTR_VAL(restart_time)); + zend_string_release(restart_time); + } else { + php_info_print_table_row(2, "Last restart time", "none"); + } + + if (ZCSG(force_restart_time)) { + force_restart_time = php_format_date(Z_STRVAL_P(date_ISO8601), Z_STRLEN_P(date_ISO8601), ZCSG(force_restart_time), 1); + php_info_print_table_row(2, "Last force restart time", ZSTR_VAL(force_restart_time)); + zend_string_release(force_restart_time); + } else { + php_info_print_table_row(2, "Last force restart time", "none"); + } } } @@ -545,7 +589,7 @@ static int accelerator_get_scripts(zval *return_value) array_init(&persistent_script_report); add_assoc_str(&persistent_script_report, "full_path", zend_string_dup(script->script.filename, 0)); - add_assoc_long(&persistent_script_report, "hits", (zend_long)script->dynamic_members.hits); + add_assoc_long(&persistent_script_report, "hits", script->dynamic_members.hits); add_assoc_long(&persistent_script_report, "memory_consumption", script->dynamic_members.memory_consumption); ta = localtime(&script->dynamic_members.last_used); str = asctime(ta); diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c index 6a454a0a9e447..aab83bce4ecfc 100644 --- a/ext/opcache/zend_accelerator_util_funcs.c +++ b/ext/opcache/zend_accelerator_util_funcs.c @@ -25,6 +25,7 @@ #include "zend_accelerator_util_funcs.h" #include "zend_persist.h" #include "zend_shared_alloc.h" +#include "zend_observer.h" typedef int (*id_function_t)(void *, void *); typedef void (*unique_copy_ctor_func_t)(void *pElement); @@ -139,7 +140,7 @@ void zend_accel_move_user_classes(HashTable *src, uint32_t count, zend_script *s src->pDestructor = orig_dtor; } -static void zend_accel_function_hash_copy(HashTable *target, HashTable *source) +static zend_always_inline void _zend_accel_function_hash_copy(HashTable *target, HashTable *source, bool call_observers) { zend_function *function1, *function2; Bucket *p, *end; @@ -156,8 +157,12 @@ static void zend_accel_function_hash_copy(HashTable *target, HashTable *source) goto failure; } _zend_hash_append_ptr_ex(target, p->key, Z_PTR(p->val), 1); + if (UNEXPECTED(call_observers) && *ZSTR_VAL(p->key)) { // if not rtd key + _zend_observer_function_declared_notify(Z_PTR(p->val), p->key); + } } target->nInternalPointer = 0; + return; failure: @@ -177,7 +182,17 @@ static void zend_accel_function_hash_copy(HashTable *target, HashTable *source) } } -static void zend_accel_class_hash_copy(HashTable *target, HashTable *source) +static zend_always_inline void zend_accel_function_hash_copy(HashTable *target, HashTable *source) +{ + _zend_accel_function_hash_copy(target, source, 0); +} + +static zend_never_inline void zend_accel_function_hash_copy_notify(HashTable *target, HashTable *source) +{ + _zend_accel_function_hash_copy(target, source, 1); +} + +static zend_always_inline void _zend_accel_class_hash_copy(HashTable *target, HashTable *source, bool call_observers) { Bucket *p, *end; zval *t; @@ -216,16 +231,28 @@ static void zend_accel_class_hash_copy(HashTable *target, HashTable *source) } } else { zend_class_entry *ce = Z_PTR(p->val); - t = _zend_hash_append_ptr_ex(target, p->key, Z_PTR(p->val), 1); + _zend_hash_append_ptr_ex(target, p->key, Z_PTR(p->val), 1); if ((ce->ce_flags & ZEND_ACC_LINKED) && ZSTR_HAS_CE_CACHE(ce->name) && ZSTR_VAL(p->key)[0]) { ZSTR_SET_CE_CACHE_EX(ce->name, ce, 0); + if (UNEXPECTED(call_observers)) { + _zend_observer_class_linked_notify(ce, p->key); + } } } } target->nInternalPointer = 0; - return; +} + +static zend_always_inline void zend_accel_class_hash_copy(HashTable *target, HashTable *source) +{ + _zend_accel_class_hash_copy(target, source, 0); +} + +static zend_never_inline void zend_accel_class_hash_copy_notify(HashTable *target, HashTable *source) +{ + _zend_accel_class_hash_copy(target, source, 1); } void zend_accel_build_delayed_early_binding_list(zend_persistent_script *persistent_script) @@ -367,11 +394,19 @@ zend_op_array* zend_accel_load_script(zend_persistent_script *persistent_script, } if (zend_hash_num_elements(&persistent_script->script.function_table) > 0) { - zend_accel_function_hash_copy(CG(function_table), &persistent_script->script.function_table); + if (EXPECTED(!zend_observer_function_declared_observed)) { + zend_accel_function_hash_copy(CG(function_table), &persistent_script->script.function_table); + } else { + zend_accel_function_hash_copy_notify(CG(function_table), &persistent_script->script.function_table); + } } if (zend_hash_num_elements(&persistent_script->script.class_table) > 0) { - zend_accel_class_hash_copy(CG(class_table), &persistent_script->script.class_table); + if (EXPECTED(!zend_observer_class_linked_observed)) { + zend_accel_class_hash_copy(CG(class_table), &persistent_script->script.class_table); + } else { + zend_accel_class_hash_copy_notify(CG(class_table), &persistent_script->script.class_table); + } } if (persistent_script->num_early_bindings) { diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index badbac2185535..a15736b72e5fe 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -1004,10 +1004,13 @@ static char *zend_file_cache_get_bin_file_path(zend_string *script_path) /** * Helper function for zend_file_cache_script_store(). * - * @return true on success, false on error + * @return true on success, false on error and errno is set to indicate the cause of the error */ static bool zend_file_cache_script_write(int fd, const zend_persistent_script *script, const zend_file_cache_metainfo *info, const void *buf, const zend_string *s) { + ssize_t written; + const ssize_t total_size = (ssize_t)(sizeof(*info) + script->size + info->str_size); + #ifdef HAVE_SYS_UIO_H const struct iovec vec[] = { { .iov_base = (void *)info, .iov_len = sizeof(*info) }, @@ -1015,12 +1018,42 @@ static bool zend_file_cache_script_write(int fd, const zend_persistent_script *s { .iov_base = (void *)ZSTR_VAL(s), .iov_len = info->str_size }, }; - return writev(fd, vec, sizeof(vec) / sizeof(vec[0])) == (ssize_t)(sizeof(*info) + script->size + info->str_size); + written = writev(fd, vec, sizeof(vec) / sizeof(vec[0])); + if (EXPECTED(written == total_size)) { + return true; + } + + errno = written == -1 ? errno : EAGAIN; + return false; #else - return ZEND_LONG_MAX >= (zend_long)(sizeof(*info) + script->size + info->str_size) && - write(fd, info, sizeof(*info)) == sizeof(*info) && - write(fd, buf, script->size) == script->size && - write(fd, ZSTR_VAL(s), info->str_size) == info->str_size; + if (UNEXPECTED(ZEND_LONG_MAX < (zend_long)total_size)) { +# ifdef EFBIG + errno = EFBIG; +# else + errno = ERANGE; +# endif + return false; + } + + written = write(fd, info, sizeof(*info)); + if (UNEXPECTED(written != sizeof(*info))) { + errno = written == -1 ? errno : EAGAIN; + return false; + } + + written = write(fd, buf, script->size); + if (UNEXPECTED(written != script->size)) { + errno = written == -1 ? errno : EAGAIN; + return false; + } + + written = write(fd, ZSTR_VAL(s), info->str_size); + if (UNEXPECTED(written != info->str_size)) { + errno = written == -1 ? errno : EAGAIN; + return false; + } + + return true; #endif } @@ -1095,7 +1128,7 @@ int zend_file_cache_script_store(zend_persistent_script *script, bool in_shm) #endif if (!zend_file_cache_script_write(fd, script, &info, buf, s)) { - zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot write to file '%s'\n", filename); + zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot write to file '%s': %s\n", filename, strerror(errno)); zend_string_release_ex(s, 0); close(fd); efree(mem); @@ -1107,7 +1140,7 @@ int zend_file_cache_script_store(zend_persistent_script *script, bool in_shm) zend_string_release_ex(s, 0); efree(mem); if (zend_file_cache_flock(fd, LOCK_UN) != 0) { - zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot unlock file '%s'\n", filename); + zend_accel_error(ACCEL_LOG_WARNING, "opcache cannot unlock file '%s': %s\n", filename, strerror(errno)); } close(fd); efree(filename); diff --git a/ext/opcache/zend_shared_alloc.c b/ext/opcache/zend_shared_alloc.c index 7f820fcdc27b0..3f18a4db6040e 100644 --- a/ext/opcache/zend_shared_alloc.c +++ b/ext/opcache/zend_shared_alloc.c @@ -328,7 +328,7 @@ static size_t zend_shared_alloc_get_largest_free_block(void) #define MIN_FREE_MEMORY 64*1024 #define SHARED_ALLOC_FAILED() do { \ - zend_accel_error(ACCEL_LOG_WARNING, "Not enough free shared space to allocate "ZEND_LONG_FMT" bytes ("ZEND_LONG_FMT" bytes free)", (zend_long)size, (zend_long)ZSMMG(shared_free)); \ + zend_accel_error(ACCEL_LOG_WARNING, "Not enough free shared space to allocate %zu bytes (%zu bytes free)", size, ZSMMG(shared_free)); \ if (zend_shared_alloc_get_largest_free_block() < MIN_FREE_MEMORY) { \ ZSMMG(memory_exhausted) = 1; \ } \ @@ -339,6 +339,10 @@ void *zend_shared_alloc(size_t size) int i; unsigned int block_size = ZEND_ALIGNED_SIZE(size); + if (UNEXPECTED(block_size < size)) { + zend_accel_error_noreturn(ACCEL_LOG_ERROR, "Possible integer overflow in shared memory allocation (%zu + %zu)", size, PLATFORM_ALIGNMENT); + } + #if 1 if (!ZCG(locked)) { zend_accel_error_noreturn(ACCEL_LOG_ERROR, "Shared memory lock not obtained"); diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 7fa6664e183ce..6d10fef971988 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -144,7 +144,6 @@ static zend_object *php_openssl_certificate_create_object(zend_class_entry *clas zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &php_openssl_certificate_object_handlers; return &intern->std; } @@ -184,7 +183,6 @@ static zend_object *php_openssl_request_create_object(zend_class_entry *class_ty zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &php_openssl_request_object_handlers; return &intern->std; } @@ -225,7 +223,6 @@ static zend_object *php_openssl_pkey_create_object(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &php_openssl_pkey_object_handlers; return &intern->std; } @@ -489,7 +486,7 @@ static void php_openssl_check_path_error(uint32_t arg_num, int type, const char } /* openssl file path check extended */ -static bool php_openssl_check_path_ex( +bool php_openssl_check_path_ex( const char *file_path, size_t file_path_len, char *real_path, uint32_t arg_num, bool contains_file_protocol, bool is_from_array, const char *option_name) { @@ -519,15 +516,15 @@ static bool php_openssl_check_path_ex( error_msg = "must not contain any null bytes"; error_type = E_ERROR; } else if (expand_filepath(fs_file_path, real_path) == NULL) { - error_msg = "The argument must be a valid file path"; + error_msg = "must be a valid file path"; } if (error_msg != NULL) { if (arg_num == 0) { const char *option_title = option_name ? option_name : "unknown"; const char *option_label = is_from_array ? "array item" : "option"; - php_error_docref(NULL, E_WARNING, "Path '%s' for %s %s %s", - real_path, option_title, option_label, error_msg); + php_error_docref(NULL, E_WARNING, "Path for %s %s %s", + option_title, option_label, error_msg); } else if (is_from_array && option_name != NULL) { php_openssl_check_path_error( arg_num, error_type, "option %s array item %s", option_name, error_msg); @@ -546,31 +543,6 @@ static bool php_openssl_check_path_ex( return false; } -/* openssl file path check */ -static inline bool php_openssl_check_path( - const char *file_path, size_t file_path_len, char *real_path, uint32_t arg_num) -{ - return php_openssl_check_path_ex( - file_path, file_path_len, real_path, arg_num, false, false, NULL); -} - -/* openssl file path extra check with zend string */ -static inline bool php_openssl_check_path_str_ex( - zend_string *file_path, char *real_path, uint32_t arg_num, - bool contains_file_protocol, bool is_from_array, const char *option_name) -{ - return php_openssl_check_path_ex( - ZSTR_VAL(file_path), ZSTR_LEN(file_path), real_path, arg_num, contains_file_protocol, - is_from_array, option_name); -} - -/* openssl file path check with zend string */ -static inline bool php_openssl_check_path_str( - zend_string *file_path, char *real_path, uint32_t arg_num) -{ - return php_openssl_check_path_str_ex(file_path, real_path, arg_num, true, false, NULL); -} - static int ssl_stream_data_index; php_stream* php_openssl_get_stream_from_ssl_handle(const SSL *ssl) @@ -1215,6 +1187,7 @@ PHP_MINIT_FUNCTION(openssl) php_openssl_certificate_ce = register_class_OpenSSLCertificate(); php_openssl_certificate_ce->create_object = php_openssl_certificate_create_object; + php_openssl_certificate_ce->default_object_handlers = &php_openssl_certificate_object_handlers; memcpy(&php_openssl_certificate_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); php_openssl_certificate_object_handlers.offset = XtOffsetOf(php_openssl_certificate_object, std); @@ -1225,6 +1198,7 @@ PHP_MINIT_FUNCTION(openssl) php_openssl_request_ce = register_class_OpenSSLCertificateSigningRequest(); php_openssl_request_ce->create_object = php_openssl_request_create_object; + php_openssl_request_ce->default_object_handlers = &php_openssl_request_object_handlers; memcpy(&php_openssl_request_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); php_openssl_request_object_handlers.offset = XtOffsetOf(php_openssl_request_object, std); @@ -1235,6 +1209,7 @@ PHP_MINIT_FUNCTION(openssl) php_openssl_pkey_ce = register_class_OpenSSLAsymmetricKey(); php_openssl_pkey_ce->create_object = php_openssl_pkey_create_object; + php_openssl_pkey_ce->default_object_handlers = &php_openssl_pkey_object_handlers; memcpy(&php_openssl_pkey_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); php_openssl_pkey_object_handlers.offset = XtOffsetOf(php_openssl_pkey_object, std); @@ -7170,27 +7145,43 @@ struct php_openssl_cipher_mode { int aead_ivlen_flag; }; -static void php_openssl_load_cipher_mode(struct php_openssl_cipher_mode *mode, const EVP_CIPHER *cipher_type) /* {{{ */ +#if PHP_OPENSSL_API_VERSION >= 0x10100 +static inline void php_openssl_set_aead_flags(struct php_openssl_cipher_mode *mode) { + mode->is_aead = true; + mode->aead_get_tag_flag = EVP_CTRL_AEAD_GET_TAG; + mode->aead_set_tag_flag = EVP_CTRL_AEAD_SET_TAG; + mode->aead_ivlen_flag = EVP_CTRL_AEAD_SET_IVLEN; +} +#endif + +static void php_openssl_load_cipher_mode(struct php_openssl_cipher_mode *mode, const EVP_CIPHER *cipher_type) { int cipher_mode = EVP_CIPHER_mode(cipher_type); memset(mode, 0, sizeof(struct php_openssl_cipher_mode)); switch (cipher_mode) { -#ifdef EVP_CIPH_OCB_MODE +#if PHP_OPENSSL_API_VERSION >= 0x10100 /* Since OpenSSL 1.1, all AEAD ciphers use a common framework. We check for * EVP_CIPH_OCB_MODE, because LibreSSL does not support it. */ case EVP_CIPH_GCM_MODE: +# ifdef EVP_CIPH_OCB_MODE case EVP_CIPH_OCB_MODE: +# endif case EVP_CIPH_CCM_MODE: - mode->is_aead = 1; + php_openssl_set_aead_flags(mode); /* For OCB mode, explicitly set the tag length even when decrypting, * see https://github.com/openssl/openssl/issues/8331. */ mode->set_tag_length_always = cipher_mode == EVP_CIPH_OCB_MODE; mode->set_tag_length_when_encrypting = cipher_mode == EVP_CIPH_CCM_MODE; mode->is_single_run_aead = cipher_mode == EVP_CIPH_CCM_MODE; - mode->aead_get_tag_flag = EVP_CTRL_AEAD_GET_TAG; - mode->aead_set_tag_flag = EVP_CTRL_AEAD_SET_TAG; - mode->aead_ivlen_flag = EVP_CTRL_AEAD_SET_IVLEN; break; +# ifdef NID_chacha20_poly1305 + default: + if (EVP_CIPHER_nid(cipher_type) == NID_chacha20_poly1305) { + php_openssl_set_aead_flags(mode); + } + break; + +# endif #else # ifdef EVP_CIPH_GCM_MODE case EVP_CIPH_GCM_MODE: @@ -7213,7 +7204,6 @@ static void php_openssl_load_cipher_mode(struct php_openssl_cipher_mode *mode, c #endif } } -/* }}} */ static int php_openssl_validate_iv(const char **piv, size_t *piv_len, size_t iv_required_len, bool *free_iv, EVP_CIPHER_CTX *cipher_ctx, struct php_openssl_cipher_mode *mode) /* {{{ */ @@ -7600,44 +7590,76 @@ PHP_FUNCTION(openssl_decrypt) } /* }}} */ -PHP_OPENSSL_API zend_long php_openssl_cipher_iv_length(const char *method) +static inline const EVP_CIPHER *php_openssl_get_evp_cipher_by_name(const char *method) { const EVP_CIPHER *cipher_type; cipher_type = EVP_get_cipherbyname(method); if (!cipher_type) { php_error_docref(NULL, E_WARNING, "Unknown cipher algorithm"); - return -1; + return NULL; } - return EVP_CIPHER_iv_length(cipher_type); + return cipher_type; +} + +PHP_OPENSSL_API zend_long php_openssl_cipher_iv_length(const char *method) +{ + const EVP_CIPHER *cipher_type = php_openssl_get_evp_cipher_by_name(method); + + return cipher_type == NULL ? -1 : EVP_CIPHER_iv_length(cipher_type); } -/* {{{ */ PHP_FUNCTION(openssl_cipher_iv_length) { - char *method; - size_t method_len; + zend_string *method; zend_long ret; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &method, &method_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &method) == FAILURE) { RETURN_THROWS(); } - if (!method_len) { + if (ZSTR_LEN(method) == 0) { zend_argument_value_error(1, "cannot be empty"); RETURN_THROWS(); } /* Warning is emitted in php_openssl_cipher_iv_length */ - if ((ret = php_openssl_cipher_iv_length(method)) == -1) { + if ((ret = php_openssl_cipher_iv_length(ZSTR_VAL(method))) == -1) { RETURN_FALSE; } RETURN_LONG(ret); } -/* }}} */ +PHP_OPENSSL_API zend_long php_openssl_cipher_key_length(const char *method) +{ + const EVP_CIPHER *cipher_type = php_openssl_get_evp_cipher_by_name(method); + + return cipher_type == NULL ? -1 : EVP_CIPHER_key_length(cipher_type); +} + +PHP_FUNCTION(openssl_cipher_key_length) +{ + zend_string *method; + zend_long ret; + + if (zend_parse_parameters(ZEND_NUM_ARGS(), "S", &method) == FAILURE) { + RETURN_THROWS(); + } + + if (ZSTR_LEN(method) == 0) { + zend_argument_value_error(1, "cannot be empty"); + RETURN_THROWS(); + } + + /* Warning is emitted in php_openssl_cipher_key_length */ + if ((ret = php_openssl_cipher_key_length(ZSTR_VAL(method))) == -1) { + RETURN_FALSE; + } + + RETURN_LONG(ret); +} PHP_OPENSSL_API zend_string* php_openssl_random_pseudo_bytes(zend_long buffer_length) { diff --git a/ext/openssl/openssl.stub.php b/ext/openssl/openssl.stub.php index ccefc2da14d96..8a0f678f3d968 100644 --- a/ext/openssl/openssl.stub.php +++ b/ext/openssl/openssl.stub.php @@ -610,6 +610,8 @@ function openssl_decrypt(string $data, string $cipher_algo, #[\SensitiveParamete function openssl_cipher_iv_length(string $cipher_algo): int|false {} +function openssl_cipher_key_length(string $cipher_algo): int|false {} + function openssl_dh_compute_key(string $public_key, #[\SensitiveParameter] OpenSSLAsymmetricKey $private_key): string|false {} /** diff --git a/ext/openssl/openssl_arginfo.h b/ext/openssl/openssl_arginfo.h index 21e39515ccc79..2159267bbcc56 100644 --- a/ext/openssl/openssl_arginfo.h +++ b/ext/openssl/openssl_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 4ceb7805924cd343a223d60383892c49c90a104d */ + * Stub hash: 02ee3cc08e7bda875321cb63e879deed48d7a389 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_x509_export_to_file, 0, 2, _IS_BOOL, 0) ZEND_ARG_OBJ_TYPE_MASK(0, certificate, OpenSSLCertificate, MAY_BE_STRING, NULL) @@ -350,6 +350,8 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_openssl_cipher_iv_length, 0, 1, ZEND_ARG_TYPE_INFO(0, cipher_algo, IS_STRING, 0) ZEND_END_ARG_INFO() +#define arginfo_openssl_cipher_key_length arginfo_openssl_cipher_iv_length + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_openssl_dh_compute_key, 0, 2, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, public_key, IS_STRING, 0) ZEND_ARG_OBJ_INFO(0, private_key, OpenSSLAsymmetricKey, 0) @@ -440,6 +442,7 @@ ZEND_FUNCTION(openssl_digest); ZEND_FUNCTION(openssl_encrypt); ZEND_FUNCTION(openssl_decrypt); ZEND_FUNCTION(openssl_cipher_iv_length); +ZEND_FUNCTION(openssl_cipher_key_length); ZEND_FUNCTION(openssl_dh_compute_key); ZEND_FUNCTION(openssl_pkey_derive); ZEND_FUNCTION(openssl_random_pseudo_bytes); @@ -508,6 +511,7 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(openssl_encrypt, arginfo_openssl_encrypt) ZEND_FE(openssl_decrypt, arginfo_openssl_decrypt) ZEND_FE(openssl_cipher_iv_length, arginfo_openssl_cipher_iv_length) + ZEND_FE(openssl_cipher_key_length, arginfo_openssl_cipher_key_length) ZEND_FE(openssl_dh_compute_key, arginfo_openssl_dh_compute_key) ZEND_FE(openssl_pkey_derive, arginfo_openssl_pkey_derive) ZEND_FE(openssl_random_pseudo_bytes, arginfo_openssl_random_pseudo_bytes) @@ -536,96 +540,96 @@ static const zend_function_entry class_OpenSSLAsymmetricKey_methods[] = { static void register_openssl_symbols(int module_number) { - REGISTER_STRING_CONSTANT("OPENSSL_VERSION_TEXT", OPENSSL_VERSION_TEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_VERSION_NUMBER", OPENSSL_VERSION_NUMBER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("X509_PURPOSE_SSL_CLIENT", X509_PURPOSE_SSL_CLIENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("X509_PURPOSE_SSL_SERVER", X509_PURPOSE_SSL_SERVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("X509_PURPOSE_NS_SSL_SERVER", X509_PURPOSE_NS_SSL_SERVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("X509_PURPOSE_SMIME_SIGN", X509_PURPOSE_SMIME_SIGN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("X509_PURPOSE_SMIME_ENCRYPT", X509_PURPOSE_SMIME_ENCRYPT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("X509_PURPOSE_CRL_SIGN", X509_PURPOSE_CRL_SIGN, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("OPENSSL_VERSION_TEXT", OPENSSL_VERSION_TEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_VERSION_NUMBER", OPENSSL_VERSION_NUMBER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("X509_PURPOSE_SSL_CLIENT", X509_PURPOSE_SSL_CLIENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("X509_PURPOSE_SSL_SERVER", X509_PURPOSE_SSL_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("X509_PURPOSE_NS_SSL_SERVER", X509_PURPOSE_NS_SSL_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("X509_PURPOSE_SMIME_SIGN", X509_PURPOSE_SMIME_SIGN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("X509_PURPOSE_SMIME_ENCRYPT", X509_PURPOSE_SMIME_ENCRYPT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("X509_PURPOSE_CRL_SIGN", X509_PURPOSE_CRL_SIGN, CONST_PERSISTENT); #if defined(X509_PURPOSE_ANY) - REGISTER_LONG_CONSTANT("X509_PURPOSE_ANY", X509_PURPOSE_ANY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("X509_PURPOSE_ANY", X509_PURPOSE_ANY, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA1", OPENSSL_ALGO_SHA1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD5", OPENSSL_ALGO_MD5, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD4", OPENSSL_ALGO_MD4, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA1", OPENSSL_ALGO_SHA1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD5", OPENSSL_ALGO_MD5, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD4", OPENSSL_ALGO_MD4, CONST_PERSISTENT); #if defined(HAVE_OPENSSL_MD2_H) - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD2", OPENSSL_ALGO_MD2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_MD2", OPENSSL_ALGO_MD2, CONST_PERSISTENT); #endif #if PHP_OPENSSL_API_VERSION < 0x10100 - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_DSS1", OPENSSL_ALGO_DSS1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_DSS1", OPENSSL_ALGO_DSS1, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA224", OPENSSL_ALGO_SHA224, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA256", OPENSSL_ALGO_SHA256, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA384", OPENSSL_ALGO_SHA384, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA512", OPENSSL_ALGO_SHA512, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ALGO_RMD160", OPENSSL_ALGO_RMD160, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_DETACHED", PKCS7_DETACHED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_TEXT", PKCS7_TEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_NOINTERN", PKCS7_NOINTERN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_NOVERIFY", PKCS7_NOVERIFY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_NOCHAIN", PKCS7_NOCHAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_NOCERTS", PKCS7_NOCERTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_NOATTR", PKCS7_NOATTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_BINARY", PKCS7_BINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PKCS7_NOSIGS", PKCS7_NOSIGS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_DETACHED", CMS_DETACHED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_TEXT", CMS_TEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOINTERN", CMS_NOINTERN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOVERIFY", CMS_NOVERIFY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOCERTS", CMS_NOCERTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOATTR", CMS_NOATTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_BINARY", CMS_BINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOSIGS", CMS_NOSIGS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_PADDING", RSA_PKCS1_PADDING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA224", OPENSSL_ALGO_SHA224, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA256", OPENSSL_ALGO_SHA256, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA384", OPENSSL_ALGO_SHA384, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_SHA512", OPENSSL_ALGO_SHA512, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ALGO_RMD160", OPENSSL_ALGO_RMD160, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_DETACHED", PKCS7_DETACHED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_TEXT", PKCS7_TEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_NOINTERN", PKCS7_NOINTERN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_NOVERIFY", PKCS7_NOVERIFY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_NOCHAIN", PKCS7_NOCHAIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_NOCERTS", PKCS7_NOCERTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_NOATTR", PKCS7_NOATTR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_BINARY", PKCS7_BINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PKCS7_NOSIGS", PKCS7_NOSIGS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_DETACHED", CMS_DETACHED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_TEXT", CMS_TEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOINTERN", CMS_NOINTERN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOVERIFY", CMS_NOVERIFY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOCERTS", CMS_NOCERTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOATTR", CMS_NOATTR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_BINARY", CMS_BINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOSIGS", CMS_NOSIGS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_PADDING", RSA_PKCS1_PADDING, CONST_PERSISTENT); #if defined(RSA_SSLV23_PADDING) - REGISTER_LONG_CONSTANT("OPENSSL_SSLV23_PADDING", RSA_SSLV23_PADDING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_SSLV23_PADDING", RSA_SSLV23_PADDING, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("OPENSSL_NO_PADDING", RSA_NO_PADDING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_OAEP_PADDING", RSA_PKCS1_OAEP_PADDING, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("OPENSSL_DEFAULT_STREAM_CIPHERS", OPENSSL_DEFAULT_STREAM_CIPHERS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_NO_PADDING", RSA_NO_PADDING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_OAEP_PADDING", RSA_PKCS1_OAEP_PADDING, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("OPENSSL_DEFAULT_STREAM_CIPHERS", OPENSSL_DEFAULT_STREAM_CIPHERS, CONST_PERSISTENT); #if !defined(OPENSSL_NO_RC2) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_RC2_40", PHP_OPENSSL_CIPHER_RC2_40, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_RC2_40", PHP_OPENSSL_CIPHER_RC2_40, CONST_PERSISTENT); #endif #if !defined(OPENSSL_NO_RC2) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_RC2_128", PHP_OPENSSL_CIPHER_RC2_128, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_RC2_128", PHP_OPENSSL_CIPHER_RC2_128, CONST_PERSISTENT); #endif #if !defined(OPENSSL_NO_RC2) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_RC2_64", PHP_OPENSSL_CIPHER_RC2_64, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_RC2_64", PHP_OPENSSL_CIPHER_RC2_64, CONST_PERSISTENT); #endif #if !defined(OPENSSL_NO_DES) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_DES", PHP_OPENSSL_CIPHER_DES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_DES", PHP_OPENSSL_CIPHER_DES, CONST_PERSISTENT); #endif #if !defined(OPENSSL_NO_DES) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_3DES", PHP_OPENSSL_CIPHER_3DES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_3DES", PHP_OPENSSL_CIPHER_3DES, CONST_PERSISTENT); #endif #if !defined(OPENSSL_NO_AES) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_AES_128_CBC", PHP_OPENSSL_CIPHER_AES_128_CBC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_AES_128_CBC", PHP_OPENSSL_CIPHER_AES_128_CBC, CONST_PERSISTENT); #endif #if !defined(OPENSSL_NO_AES) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_AES_192_CBC", PHP_OPENSSL_CIPHER_AES_192_CBC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_AES_192_CBC", PHP_OPENSSL_CIPHER_AES_192_CBC, CONST_PERSISTENT); #endif #if !defined(OPENSSL_NO_AES) - REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_AES_256_CBC", PHP_OPENSSL_CIPHER_AES_256_CBC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_CIPHER_AES_256_CBC", PHP_OPENSSL_CIPHER_AES_256_CBC, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_RSA", OPENSSL_KEYTYPE_RSA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_RSA", OPENSSL_KEYTYPE_RSA, CONST_PERSISTENT); #if !defined(NO_DSA) - REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_DSA", OPENSSL_KEYTYPE_DSA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_DSA", OPENSSL_KEYTYPE_DSA, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_DH", OPENSSL_KEYTYPE_DH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_DH", OPENSSL_KEYTYPE_DH, CONST_PERSISTENT); #if defined(HAVE_EVP_PKEY_EC) - REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_EC", OPENSSL_KEYTYPE_EC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_KEYTYPE_EC", OPENSSL_KEYTYPE_EC, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("OPENSSL_RAW_DATA", OPENSSL_RAW_DATA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ZERO_PADDING", OPENSSL_ZERO_PADDING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_DONT_ZERO_PAD_KEY", OPENSSL_DONT_ZERO_PAD_KEY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_RAW_DATA", OPENSSL_RAW_DATA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ZERO_PADDING", OPENSSL_ZERO_PADDING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_DONT_ZERO_PAD_KEY", OPENSSL_DONT_ZERO_PAD_KEY, CONST_PERSISTENT); #if !defined(OPENSSL_NO_TLSEXT) - REGISTER_LONG_CONSTANT("OPENSSL_TLSEXT_SERVER_NAME", 1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_TLSEXT_SERVER_NAME", 1, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("OPENSSL_ENCODING_DER", ENCODING_DER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ENCODING_SMIME", ENCODING_SMIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("OPENSSL_ENCODING_PEM", ENCODING_PEM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ENCODING_DER", ENCODING_DER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ENCODING_SMIME", ENCODING_SMIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("OPENSSL_ENCODING_PEM", ENCODING_PEM, CONST_PERSISTENT); zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "openssl_x509_check_private_key", sizeof("openssl_x509_check_private_key") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); diff --git a/ext/openssl/php_openssl.h b/ext/openssl/php_openssl.h index 3f0c436190fa3..5cfadbedc9829 100644 --- a/ext/openssl/php_openssl.h +++ b/ext/openssl/php_openssl.h @@ -92,7 +92,38 @@ php_stream_transport_factory_func php_openssl_ssl_socket_factory; void php_openssl_store_errors(void); +/* openssl file path extra */ +bool php_openssl_check_path_ex( + const char *file_path, size_t file_path_len, char *real_path, uint32_t arg_num, + bool contains_file_protocol, bool is_from_array, const char *option_name); + +/* openssl file path check */ +static inline bool php_openssl_check_path( + const char *file_path, size_t file_path_len, char *real_path, uint32_t arg_num) +{ + return php_openssl_check_path_ex( + file_path, file_path_len, real_path, arg_num, false, false, NULL); +} + +/* openssl file path extra check with zend string */ +static inline bool php_openssl_check_path_str_ex( + zend_string *file_path, char *real_path, uint32_t arg_num, + bool contains_file_protocol, bool is_from_array, const char *option_name) +{ + return php_openssl_check_path_ex( + ZSTR_VAL(file_path), ZSTR_LEN(file_path), real_path, arg_num, contains_file_protocol, + is_from_array, option_name); +} + +/* openssl file path check with zend string */ +static inline bool php_openssl_check_path_str( + zend_string *file_path, char *real_path, uint32_t arg_num) +{ + return php_openssl_check_path_str_ex(file_path, real_path, arg_num, true, false, NULL); +} + PHP_OPENSSL_API zend_long php_openssl_cipher_iv_length(const char *method); +PHP_OPENSSL_API zend_long php_openssl_cipher_key_length(const char *method); PHP_OPENSSL_API zend_string* php_openssl_random_pseudo_bytes(zend_long length); PHP_OPENSSL_API zend_string* php_openssl_encrypt( const char *data, size_t data_len, diff --git a/ext/openssl/tests/CertificateGenerator.inc b/ext/openssl/tests/CertificateGenerator.inc index 4783353a4709c..c36718cd54844 100644 --- a/ext/openssl/tests/CertificateGenerator.inc +++ b/ext/openssl/tests/CertificateGenerator.inc @@ -85,8 +85,8 @@ class CertificateGenerator openssl_x509_export_to_file($this->ca, $file); } - public function saveNewCertAsFileWithKey( - $commonNameForCert, $file, $keyLength = null, $subjectAltName = null + public function saveNewCertAndKey( + $commonNameForCert, $certFile, $keyFile, $keyLength = null, $subjectAltName = null ) { $dn = [ 'countryName' => 'BY', @@ -117,7 +117,7 @@ $subjectAltNameConfig basicConstraints = CA:FALSE $subjectAltNameConfig CONFIG; - $configFile = $file . '.cnf'; + $configFile = $certFile . '.cnf'; file_put_contents($configFile, $configCode); try { @@ -146,12 +146,24 @@ CONFIG; $keyText = ''; openssl_pkey_export($this->lastKey, $keyText, null, $config); - file_put_contents($file, $certText . PHP_EOL . $keyText); + if ($certFile === $keyFile) { + file_put_contents($certFile, $certText . PHP_EOL . $keyText); + } else { + file_put_contents($certFile, $certText); + file_put_contents($keyFile, $keyText); + } } finally { unlink($configFile); } } + + public function saveNewCertAsFileWithKey( + $commonNameForCert, $file, $keyLength = null, $subjectAltName = null + ) { + $this->saveNewCertAndKey($commonNameForCert, $file, $file, $keyLength, $subjectAltName); + } + public function getCertDigest($algo) { return openssl_x509_fingerprint($this->lastCert, $algo); diff --git a/ext/openssl/tests/cipher_tests.inc b/ext/openssl/tests/cipher_tests.inc index 1d4988c5a8c3f..f543a42c9f45a 100644 --- a/ext/openssl/tests/cipher_tests.inc +++ b/ext/openssl/tests/cipher_tests.inc @@ -160,6 +160,72 @@ $php_openssl_cipher_tests = array( 'ct' => '1792A4E31E0755FB03E31B22116E6C2DDF9EFD6E33D536F1A0124B0A55BAE884ED93481529C76B6A', ), ), + 'chacha20-poly1305' => array( + array( + 'key' => '808182838485868788898a8b8c8d8e8f' . + '909192939495969798999a9b9c9d9e9f', + 'iv' => '070000004041424344454647', + 'aad' => '50515253c0c1c2c3c4c5c6c7', + 'tag' => '1ae10b594f09e26a7e902ecbd0600691', + 'pt' => '4c616469657320616e642047656e746c' . + '656d656e206f662074686520636c6173' . + '73206f66202739393a20496620492063' . + '6f756c64206f6666657220796f75206f' . + '6e6c79206f6e652074697020666f7220' . + '746865206675747572652c2073756e73' . + '637265656e20776f756c642062652069' . + '742e', + 'ct' => 'd31a8d34648e60db7b86afbc53ef7ec2' . + 'a4aded51296e08fea9e2b5a736ee62d6' . + '3dbea45e8ca9671282fafb69da92728b' . + '1a71de0a9e060b2905d6a5b67ecd3b36' . + '92ddbd7f2d778b8c9803aee328091b58' . + 'fab324e4fad675945585808b4831d7bc' . + '3ff4def08e4b7a9de576d26586cec64b' . + '6116', + ), + array( + 'key' => '1c9240a5eb55d38af333888604f6b5f0' . + '473917c1402b80099dca5cbc207075c0', + 'iv' => '000000000102030405060708', + 'aad' => 'f33388860000000000004e91', + 'tag' => 'eead9d67890cbb22392336fea1851f38', + 'pt' => '496e7465726e65742d44726166747320' . + '61726520647261667420646f63756d65' . + '6e74732076616c696420666f72206120' . + '6d6178696d756d206f6620736978206d' . + '6f6e74687320616e64206d6179206265' . + '20757064617465642c207265706c6163' . + '65642c206f72206f62736f6c65746564' . + '206279206f7468657220646f63756d65' . + '6e747320617420616e792074696d652e' . + '20497420697320696e617070726f7072' . + '6961746520746f2075736520496e7465' . + '726e65742d4472616674732061732072' . + '65666572656e6365206d617465726961' . + '6c206f7220746f206369746520746865' . + '6d206f74686572207468616e20617320' . + '2fe2809c776f726b20696e2070726f67' . + '726573732e2fe2809d', + 'ct' => '64a0861575861af460f062c79be643bd' . + '5e805cfd345cf389f108670ac76c8cb2' . + '4c6cfc18755d43eea09ee94e382d26b0' . + 'bdb7b73c321b0100d4f03b7f355894cf' . + '332f830e710b97ce98c8a84abd0b9481' . + '14ad176e008d33bd60f982b1ff37c855' . + '9797a06ef4f0ef61c186324e2b350638' . + '3606907b6a7c02b0f9f6157b53c867e4' . + 'b9166c767b804d46a59b5216cde7a4e9' . + '9040c5a40433225ee282a1b0a06c523e' . + 'af4534d7f83fa1155b0047718cbc546a' . + '0d072b04b3564eea1b422273f548271a' . + '0bb2316053fa76991955ebd63159434e' . + 'cebb4e466dae5a1073a6727627097a10' . + '49e617d91d361094fa68f0ff77987130' . + '305beaba2eda04df997b714d6c6f2c29' . + 'a6ad5cb4022b02709b', + ), + ), ); function openssl_get_cipher_tests($method) diff --git a/ext/openssl/tests/gh9310.phpt b/ext/openssl/tests/gh9310.phpt new file mode 100644 index 0000000000000..9ad4831215da6 --- /dev/null +++ b/ext/openssl/tests/gh9310.phpt @@ -0,0 +1,186 @@ +--TEST-- +GH-9310: local_cert and local_pk do not respect open_basedir restriction +--EXTENSIONS-- +openssl +--SKIPIF-- + +--FILE-- +saveNewCertAndKey('gh9310', $certFile, $pkFile); + +copy($certFile, $baseDirCertFile); +copy($pkFile, $baseDirPkFile); +copy(__DIR__ . '/sni_server_uk_cert.pem', $baseDir . '/sni_server_uk_cert.pem'); + + +$serverCodeTemplate = <<<'CODE' + ini_set('log_errors', 'On'); + ini_set('open_basedir', __DIR__ . '/gh9310'); + $serverUri = "ssl://127.0.0.1:64321"; + $serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN; + $serverCtx = stream_context_create(['ssl' => [ + 'local_cert' => '%s', + 'local_pk' => '%s', + ]]); + + $sock = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx); + phpt_notify(); + + $link = stream_socket_accept($sock); +CODE; + +$clientCode = <<<'CODE' + $serverUri = "ssl://127.0.0.1:64321"; + $clientFlags = STREAM_CLIENT_CONNECT; + + $clientCtx = stream_context_create(['ssl' => [ + 'verify_peer' => false, + 'verify_peer_name' => false + ]]); + + phpt_wait(); + @stream_socket_client($serverUri, $errno, $errstr, 2, $clientFlags, $clientCtx); +CODE; + +$sniServerCodeV1 = <<<'CODE' + ini_set('log_errors', 'On'); + ini_set('open_basedir', __DIR__ . '/gh9310'); + $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; + $ctx = stream_context_create(['ssl' => [ + 'SNI_server_certs' => [ + "cs.php.net" => __DIR__ . "/sni_server_cs.pem", + ] + ]]); + + $server = stream_socket_server('tls://127.0.0.1:64321', $errno, $errstr, $flags, $ctx); + phpt_notify(); + + stream_socket_accept($server); +CODE; + +$sniServerCodeV2 = <<<'CODE' + ini_set('log_errors', 'On'); + ini_set('open_basedir', __DIR__ . '/gh9310'); + $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; + $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', + ] + ] + ]]); + + $server = stream_socket_server('tls://127.0.0.1:64321', $errno, $errstr, $flags, $ctx); + phpt_notify(); + + stream_socket_accept($server); +CODE; + +$sniServerCodeV3 = <<<'CODE' + ini_set('log_errors', 'On'); + ini_set('open_basedir', __DIR__ . '/gh9310'); + $flags = STREAM_SERVER_BIND|STREAM_SERVER_LISTEN; + $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', + ] + ] + ]]); + + $server = stream_socket_server('tls://127.0.0.1:64321', $errno, $errstr, $flags, $ctx); + phpt_notify(); + + stream_socket_accept($server); +CODE; + +$sniClientCodeTemplate = <<<'CODE' + $flags = STREAM_CLIENT_CONNECT; + $ctxArr = [ + 'cafile' => __DIR__ . '/sni_server_ca.pem', + ]; + + phpt_wait(); + + $ctxArr['peer_name'] = '%s'; + $ctx = stream_context_create(['ssl' => $ctxArr]); + @stream_socket_client("tls://127.0.0.1:64321", $errno, $errstr, 1, $flags, $ctx); +CODE; + +$serverCode = sprintf($serverCodeTemplate, $baseDirCertFile . "\0test", $baseDirPkFile); +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); + +$serverCode = sprintf($serverCodeTemplate, $baseDirCertFile, $baseDirPkFile . "\0test"); +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); + +$serverCode = sprintf($serverCodeTemplate, $certFile, $pkFile); +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); + +$serverCode = sprintf($serverCodeTemplate, $baseDirCertFile, $pkFile); +ServerClientTestCase::getInstance()->run($clientCode, $serverCode); + +$sniClientCode = sprintf($sniClientCodeTemplate, 'cs.php.net'); +ServerClientTestCase::getInstance()->run($sniClientCode, $sniServerCodeV1); + +$sniClientCode = sprintf($sniClientCodeTemplate, 'uk.php.net'); +ServerClientTestCase::getInstance()->run($sniClientCode, $sniServerCodeV2); + +$sniClientCode = sprintf($sniClientCodeTemplate, 'us.php.net'); +ServerClientTestCase::getInstance()->run($sniClientCode, $sniServerCodeV3); + +?> +--CLEAN-- + +--EXPECTF-- +PHP Warning: stream_socket_accept(): Path for local_cert in ssl stream context option must not contain any null bytes in %s +PHP Warning: stream_socket_accept(): Unable to get real path of certificate file `%scert.crt' 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(): Path for local_pk in ssl stream context option must not contain any null bytes in %s +PHP Warning: stream_socket_accept(): Unable to get real path of private key file `%sprivate.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(%sgh9310.crt) is not within the allowed path(s): (%sgh9310) in %s +PHP Warning: stream_socket_accept(): Unable to get real path of certificate file `%sgh9310.crt' 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(%sgh9310.key) is not within the allowed path(s): (%sgh9310) in %s +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(): 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(): 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(): Failed to enable crypto in %s +PHP Warning: stream_socket_accept(): Accept failed: %s diff --git a/ext/openssl/tests/gh9339.phpt b/ext/openssl/tests/gh9339.phpt new file mode 100644 index 0000000000000..9e4adbccce7f6 --- /dev/null +++ b/ext/openssl/tests/gh9339.phpt @@ -0,0 +1,25 @@ +--TEST-- +GH-9339: oid_file path check warning contains uninitialized path +--SKIPIF-- + +--FILE-- + $configFile ]); +?> +--CLEAN-- + +--EXPECTF-- + +Warning: openssl_pkey_new(): Path for oid_file option must be a valid file path in %s on line %d diff --git a/ext/openssl/tests/openssl_cipher_iv_length_basic.phpt b/ext/openssl/tests/openssl_cipher_iv_length_basic.phpt new file mode 100644 index 0000000000000..82110ab83d317 --- /dev/null +++ b/ext/openssl/tests/openssl_cipher_iv_length_basic.phpt @@ -0,0 +1,12 @@ +--TEST-- +openssl_cipher_iv_length() basic test +--EXTENSIONS-- +openssl +--FILE-- + +--EXPECT-- +int(16) diff --git a/ext/openssl/tests/openssl_cipher_iv_length_error.phpt b/ext/openssl/tests/openssl_cipher_iv_length_error.phpt new file mode 100644 index 0000000000000..8fca1fdd71e66 --- /dev/null +++ b/ext/openssl/tests/openssl_cipher_iv_length_error.phpt @@ -0,0 +1,21 @@ +--TEST-- +openssl_cipher_iv_length() error test +--EXTENSIONS-- +openssl +--FILE-- +getMessage() . "\n"; +} + +?> +--EXPECTF-- + +Warning: openssl_cipher_iv_length(): Unknown cipher algorithm in %s on line %d +bool(false) +openssl_cipher_iv_length(): Argument #1 ($cipher_algo) cannot be empty diff --git a/ext/openssl/tests/openssl_cipher_key_length_basic.phpt b/ext/openssl/tests/openssl_cipher_key_length_basic.phpt new file mode 100644 index 0000000000000..a72cdda526975 --- /dev/null +++ b/ext/openssl/tests/openssl_cipher_key_length_basic.phpt @@ -0,0 +1,14 @@ +--TEST-- +openssl_cipher_key_length() basic test +--EXTENSIONS-- +openssl +--FILE-- + +--EXPECT-- +int(16) +int(32) diff --git a/ext/openssl/tests/openssl_cipher_key_length_error.phpt b/ext/openssl/tests/openssl_cipher_key_length_error.phpt new file mode 100644 index 0000000000000..08c08d382eb0c --- /dev/null +++ b/ext/openssl/tests/openssl_cipher_key_length_error.phpt @@ -0,0 +1,21 @@ +--TEST-- +openssl_cipher_key_length() error test +--EXTENSIONS-- +openssl +--FILE-- +getMessage() . "\n"; +} + +?> +--EXPECTF-- + +Warning: openssl_cipher_key_length(): Unknown cipher algorithm in %s on line %d +bool(false) +openssl_cipher_key_length(): Argument #1 ($cipher_algo) cannot be empty diff --git a/ext/openssl/tests/openssl_encrypt_chacha20_poly1305.phpt b/ext/openssl/tests/openssl_encrypt_chacha20_poly1305.phpt new file mode 100644 index 0000000000000..d850f81f930d9 --- /dev/null +++ b/ext/openssl/tests/openssl_encrypt_chacha20_poly1305.phpt @@ -0,0 +1,48 @@ +--TEST-- +openssl_encrypt() with ChaCha20 and Poly1305 cipher algorithm tests +--EXTENSIONS-- +openssl +--SKIPIF-- + +--FILE-- + $test) { + echo "TEST $idx\n"; + $ct = openssl_encrypt($test['pt'], $method, $test['key'], OPENSSL_RAW_DATA, + $test['iv'], $tag, $test['aad'], strlen($test['tag'])); + var_dump($test['ct'] === $ct); + var_dump($test['tag'] === $tag); +} + +// Empty IV error +var_dump(openssl_encrypt('data', $method, 'password', 0, '', $tag, '')); + +// Failing to retrieve tag (max is 16 bytes) +var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 12), $tag, '', 20)); + +// Failing when no tag supplied +var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 12))); +?> +--EXPECTF-- +TEST 0 +bool(true) +bool(true) +TEST 1 +bool(true) +bool(true) + +Warning: openssl_encrypt(): Setting of IV length for AEAD mode failed in %s on line %d +bool(false) + +Warning: openssl_encrypt(): Retrieving verification tag failed in %s on line %d +bool(false) + +Warning: openssl_encrypt(): A tag should be provided when using AEAD mode in %s on line %d +bool(false) diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c index 6eaa079731508..048076808925d 100644 --- a/ext/openssl/xp_ssl.c +++ b/ext/openssl/xp_ssl.c @@ -101,14 +101,25 @@ #endif /* Simplify ssl context option retrieval */ -#define GET_VER_OPT(name) \ - (PHP_STREAM_CONTEXT(stream) && (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", name)) != NULL) -#define GET_VER_OPT_STRING(name, str) \ - if (GET_VER_OPT(name)) { \ - if (try_convert_to_string(val)) str = Z_STRVAL_P(val); \ - } -#define GET_VER_OPT_LONG(name, num) \ - if (GET_VER_OPT(name)) { num = zval_get_long(val); } +#define GET_VER_OPT(_name) \ + (PHP_STREAM_CONTEXT(stream) && (val = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "ssl", _name)) != NULL) +#define GET_VER_OPT_STRING(_name, _str) \ + do { \ + if (GET_VER_OPT(_name)) { \ + if (try_convert_to_string(val)) _str = Z_STRVAL_P(val); \ + } \ + } while (0) +#define GET_VER_OPT_STRINGL(_name, _str, _len) \ + do { \ + if (GET_VER_OPT(_name)) { \ + if (try_convert_to_string(val)) { \ + _str = Z_STRVAL_P(val); \ + _len = Z_STRLEN_P(val); \ + } \ + } \ + } while (0) +#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) \ @@ -893,14 +904,18 @@ static int php_openssl_set_local_cert(SSL_CTX *ctx, php_stream *stream) /* {{{ * { zval *val = NULL; char *certfile = NULL; + size_t certfile_len; - GET_VER_OPT_STRING("local_cert", certfile); + GET_VER_OPT_STRINGL("local_cert", certfile, certfile_len); if (certfile) { char resolved_path_buff[MAXPATHLEN]; const char *private_key = NULL; + size_t private_key_len; - if (!VCWD_REALPATH(certfile, resolved_path_buff)) { + if (!php_openssl_check_path_ex( + certfile, certfile_len, resolved_path_buff, 0, false, false, + "local_cert in ssl stream context")) { php_error_docref(NULL, E_WARNING, "Unable to get real path of certificate file `%s'", certfile); return FAILURE; } @@ -913,8 +928,10 @@ static int php_openssl_set_local_cert(SSL_CTX *ctx, php_stream *stream) /* {{{ * return FAILURE; } - GET_VER_OPT_STRING("local_pk", private_key); - if (private_key && !VCWD_REALPATH(private_key, resolved_path_buff)) { + GET_VER_OPT_STRINGL("local_pk", private_key, private_key_len); + if (private_key && !php_openssl_check_path_ex( + private_key, private_key_len, resolved_path_buff, 0, false, false, + "local_pk in ssl stream context")) { php_error_docref(NULL, E_WARNING, "Unable to get real path of private key file `%s'", private_key); return FAILURE; } @@ -1447,9 +1464,11 @@ static int php_openssl_enable_server_sni(php_stream *stream, php_openssl_netstre if (UNEXPECTED(!local_cert_str)) { return FAILURE; } - if (!VCWD_REALPATH(ZSTR_VAL(local_cert_str), resolved_cert_path_buff)) { + if (!php_openssl_check_path_str_ex( + local_cert_str, resolved_cert_path_buff, 0, false, false, + "SNI_server_certs local_cert in ssl stream context")) { php_error_docref(NULL, E_WARNING, - "Failed setting local cert chain file `%s'; file not found", + "Failed setting local cert chain file `%s'; could not open file", ZSTR_VAL(local_cert_str) ); zend_string_release(local_cert_str); @@ -1469,9 +1488,11 @@ static int php_openssl_enable_server_sni(php_stream *stream, php_openssl_netstre if (UNEXPECTED(!local_pk_str)) { return FAILURE; } - if (!VCWD_REALPATH(ZSTR_VAL(local_pk_str), resolved_pk_path_buff)) { + if (!php_openssl_check_path_str_ex( + local_pk_str, resolved_pk_path_buff, 0, false, false, + "SNI_server_certs local_pk in ssl stream context")) { php_error_docref(NULL, E_WARNING, - "Failed setting local private key file `%s'; file not found", + "Failed setting local private key file `%s'; could not open file", ZSTR_VAL(local_pk_str) ); zend_string_release(local_pk_str); @@ -1481,7 +1502,9 @@ static int php_openssl_enable_server_sni(php_stream *stream, php_openssl_netstre ctx = php_openssl_create_sni_server_ctx(resolved_cert_path_buff, resolved_pk_path_buff); - } else if (VCWD_REALPATH(Z_STRVAL_P(current), resolved_path_buff)) { + } else if (php_openssl_check_path_str_ex( + Z_STR_P(current), resolved_path_buff, 0, false, false, + "SNI_server_certs in ssl stream context")) { ctx = php_openssl_create_sni_server_ctx(resolved_path_buff, resolved_path_buff); } else { php_error_docref(NULL, E_WARNING, @@ -2285,6 +2308,10 @@ static inline int php_openssl_tcp_sockop_accept(php_stream *stream, php_openssl_ memcpy(clisockdata, sock, sizeof(clisockdata->s)); clisockdata->s.socket = clisock; +#ifdef __linux__ + /* O_NONBLOCK is not inherited on Linux */ + clisockdata->s.is_blocked = 1; +#endif xparam->outputs.client = php_stream_alloc_rel(stream->ops, clisockdata, NULL, "r+"); if (xparam->outputs.client) { diff --git a/ext/pcntl/pcntl.c b/ext/pcntl/pcntl.c index 6a455dbdb3a9b..e35de72d3af06 100644 --- a/ext/pcntl/pcntl.c +++ b/ext/pcntl/pcntl.c @@ -160,7 +160,7 @@ PHP_RSHUTDOWN_FUNCTION(pcntl) PHP_MINFO_FUNCTION(pcntl) { php_info_print_table_start(); - php_info_print_table_header(2, "pcntl support", "enabled"); + php_info_print_table_row(2, "pcntl support", "enabled"); php_info_print_table_end(); } diff --git a/ext/pcntl/pcntl_arginfo.h b/ext/pcntl/pcntl_arginfo.h index 7a4988b24ec2c..e29098f2fa689 100644 --- a/ext/pcntl/pcntl_arginfo.h +++ b/ext/pcntl/pcntl_arginfo.h @@ -231,350 +231,350 @@ static const zend_function_entry ext_functions[] = { static void register_pcntl_symbols(int module_number) { #if defined(WNOHANG) - REGISTER_LONG_CONSTANT("WNOHANG", LONG_CONST(WNOHANG), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("WNOHANG", LONG_CONST(WNOHANG), CONST_PERSISTENT); #endif #if defined(WUNTRACED) - REGISTER_LONG_CONSTANT("WUNTRACED", LONG_CONST(WUNTRACED), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("WUNTRACED", LONG_CONST(WUNTRACED), CONST_PERSISTENT); #endif #if defined(HAVE_WCONTINUED) - REGISTER_LONG_CONSTANT("WCONTINUED", LONG_CONST(WCONTINUED), CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SIG_IGN", LONG_CONST(SIG_IGN), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIG_DFL", LONG_CONST(SIG_DFL), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIG_ERR", LONG_CONST(SIG_ERR), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGHUP", LONG_CONST(SIGHUP), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGINT", LONG_CONST(SIGINT), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGQUIT", LONG_CONST(SIGQUIT), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGILL", LONG_CONST(SIGILL), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGTRAP", LONG_CONST(SIGTRAP), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGABRT", LONG_CONST(SIGABRT), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("WCONTINUED", LONG_CONST(WCONTINUED), CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SIG_IGN", LONG_CONST(SIG_IGN), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIG_DFL", LONG_CONST(SIG_DFL), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIG_ERR", LONG_CONST(SIG_ERR), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGHUP", LONG_CONST(SIGHUP), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGINT", LONG_CONST(SIGINT), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGQUIT", LONG_CONST(SIGQUIT), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGILL", LONG_CONST(SIGILL), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGTRAP", LONG_CONST(SIGTRAP), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGABRT", LONG_CONST(SIGABRT), CONST_PERSISTENT); #if defined(SIGIOT) - REGISTER_LONG_CONSTANT("SIGIOT", LONG_CONST(SIGIOT), CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SIGBUS", LONG_CONST(SIGBUS), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGFPE", LONG_CONST(SIGFPE), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGKILL", LONG_CONST(SIGKILL), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGUSR1", LONG_CONST(SIGUSR1), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGSEGV", LONG_CONST(SIGSEGV), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGUSR2", LONG_CONST(SIGUSR2), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGPIPE", LONG_CONST(SIGPIPE), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGALRM", LONG_CONST(SIGALRM), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGTERM", LONG_CONST(SIGTERM), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGIOT", LONG_CONST(SIGIOT), CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SIGBUS", LONG_CONST(SIGBUS), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGFPE", LONG_CONST(SIGFPE), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGKILL", LONG_CONST(SIGKILL), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGUSR1", LONG_CONST(SIGUSR1), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGSEGV", LONG_CONST(SIGSEGV), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGUSR2", LONG_CONST(SIGUSR2), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGPIPE", LONG_CONST(SIGPIPE), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGALRM", LONG_CONST(SIGALRM), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGTERM", LONG_CONST(SIGTERM), CONST_PERSISTENT); #if defined(SIGSTKFLT) - REGISTER_LONG_CONSTANT("SIGSTKFLT", LONG_CONST(SIGSTKFLT), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGSTKFLT", LONG_CONST(SIGSTKFLT), CONST_PERSISTENT); #endif #if defined(SIGCLD) - REGISTER_LONG_CONSTANT("SIGCLD", LONG_CONST(SIGCLD), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGCLD", LONG_CONST(SIGCLD), CONST_PERSISTENT); #endif #if defined(SIGCHLD) - REGISTER_LONG_CONSTANT("SIGCHLD", LONG_CONST(SIGCHLD), CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SIGCONT", LONG_CONST(SIGCONT), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGSTOP", LONG_CONST(SIGSTOP), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGTSTP", LONG_CONST(SIGTSTP), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGTTIN", LONG_CONST(SIGTTIN), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGTTOU", LONG_CONST(SIGTTOU), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGURG", LONG_CONST(SIGURG), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGXCPU", LONG_CONST(SIGXCPU), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGXFSZ", LONG_CONST(SIGXFSZ), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGVTALRM", LONG_CONST(SIGVTALRM), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGPROF", LONG_CONST(SIGPROF), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SIGWINCH", LONG_CONST(SIGWINCH), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGCHLD", LONG_CONST(SIGCHLD), CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SIGCONT", LONG_CONST(SIGCONT), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGSTOP", LONG_CONST(SIGSTOP), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGTSTP", LONG_CONST(SIGTSTP), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGTTIN", LONG_CONST(SIGTTIN), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGTTOU", LONG_CONST(SIGTTOU), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGURG", LONG_CONST(SIGURG), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGXCPU", LONG_CONST(SIGXCPU), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGXFSZ", LONG_CONST(SIGXFSZ), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGVTALRM", LONG_CONST(SIGVTALRM), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGPROF", LONG_CONST(SIGPROF), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGWINCH", LONG_CONST(SIGWINCH), CONST_PERSISTENT); #if defined(SIGPOLL) - REGISTER_LONG_CONSTANT("SIGPOLL", LONG_CONST(SIGPOLL), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGPOLL", LONG_CONST(SIGPOLL), CONST_PERSISTENT); #endif #if defined(SIGIO) - REGISTER_LONG_CONSTANT("SIGIO", LONG_CONST(SIGIO), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGIO", LONG_CONST(SIGIO), CONST_PERSISTENT); #endif #if defined(SIGPWR) - REGISTER_LONG_CONSTANT("SIGPWR", LONG_CONST(SIGPWR), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGPWR", LONG_CONST(SIGPWR), CONST_PERSISTENT); #endif #if defined(SIGSYS) - REGISTER_LONG_CONSTANT("SIGSYS", LONG_CONST(SIGSYS), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGSYS", LONG_CONST(SIGSYS), CONST_PERSISTENT); #endif #if defined(SIGSYS) - REGISTER_LONG_CONSTANT("SIGBABY", LONG_CONST(SIGSYS), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGBABY", LONG_CONST(SIGSYS), CONST_PERSISTENT); #endif #if defined(SIGRTMIN) - REGISTER_LONG_CONSTANT("SIGRTMIN", LONG_CONST(SIGRTMIN), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGRTMIN", LONG_CONST(SIGRTMIN), CONST_PERSISTENT); #endif #if defined(SIGRTMAX) - REGISTER_LONG_CONSTANT("SIGRTMAX", LONG_CONST(SIGRTMAX), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIGRTMAX", LONG_CONST(SIGRTMAX), CONST_PERSISTENT); #endif #if (defined(HAVE_GETPRIORITY) || defined(HAVE_SETPRIORITY)) - REGISTER_LONG_CONSTANT("PRIO_PGRP", PRIO_PGRP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PRIO_PGRP", PRIO_PGRP, CONST_PERSISTENT); #endif #if (defined(HAVE_GETPRIORITY) || defined(HAVE_SETPRIORITY)) - REGISTER_LONG_CONSTANT("PRIO_USER", PRIO_USER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PRIO_USER", PRIO_USER, CONST_PERSISTENT); #endif #if (defined(HAVE_GETPRIORITY) || defined(HAVE_SETPRIORITY)) - REGISTER_LONG_CONSTANT("PRIO_PROCESS", PRIO_PROCESS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PRIO_PROCESS", PRIO_PROCESS, CONST_PERSISTENT); #endif #if (defined(HAVE_GETPRIORITY) || defined(HAVE_SETPRIORITY)) && defined(PRIO_DARWIN_BG) - REGISTER_LONG_CONSTANT("PRIO_DARWIN_BG", PRIO_DARWIN_BG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PRIO_DARWIN_BG", PRIO_DARWIN_BG, CONST_PERSISTENT); #endif #if (defined(HAVE_GETPRIORITY) || defined(HAVE_SETPRIORITY)) && defined(PRIO_DARWIN_BG) - REGISTER_LONG_CONSTANT("PRIO_DARWIN_THREAD", PRIO_DARWIN_THREAD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PRIO_DARWIN_THREAD", PRIO_DARWIN_THREAD, CONST_PERSISTENT); #endif #if defined(HAVE_SIGPROCMASK) - REGISTER_LONG_CONSTANT("SIG_BLOCK", SIG_BLOCK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIG_BLOCK", SIG_BLOCK, CONST_PERSISTENT); #endif #if defined(HAVE_SIGPROCMASK) - REGISTER_LONG_CONSTANT("SIG_UNBLOCK", SIG_UNBLOCK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIG_UNBLOCK", SIG_UNBLOCK, CONST_PERSISTENT); #endif #if defined(HAVE_SIGPROCMASK) - REGISTER_LONG_CONSTANT("SIG_SETMASK", SIG_SETMASK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SIG_SETMASK", SIG_SETMASK, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) - REGISTER_LONG_CONSTANT("SI_USER", SI_USER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_USER", SI_USER, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(SI_NOINFO) - REGISTER_LONG_CONSTANT("SI_NOINFO", SI_NOINFO, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_NOINFO", SI_NOINFO, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(SI_KERNEL) - REGISTER_LONG_CONSTANT("SI_KERNEL", SI_KERNEL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_KERNEL", SI_KERNEL, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) - REGISTER_LONG_CONSTANT("SI_QUEUE", SI_QUEUE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_QUEUE", SI_QUEUE, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) - REGISTER_LONG_CONSTANT("SI_TIMER", SI_TIMER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_TIMER", SI_TIMER, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) - REGISTER_LONG_CONSTANT("SI_MESGQ", SI_MESGQ, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_MESGQ", SI_MESGQ, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) - REGISTER_LONG_CONSTANT("SI_ASYNCIO", SI_ASYNCIO, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_ASYNCIO", SI_ASYNCIO, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(SI_SIGIO) - REGISTER_LONG_CONSTANT("SI_SIGIO", SI_SIGIO, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_SIGIO", SI_SIGIO, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(SI_TKILL) - REGISTER_LONG_CONSTANT("SI_TKILL", SI_TKILL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SI_TKILL", SI_TKILL, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(CLD_EXITED) - REGISTER_LONG_CONSTANT("CLD_EXITED", CLD_EXITED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLD_EXITED", CLD_EXITED, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(CLD_KILLED) - REGISTER_LONG_CONSTANT("CLD_KILLED", CLD_KILLED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLD_KILLED", CLD_KILLED, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(CLD_DUMPED) - REGISTER_LONG_CONSTANT("CLD_DUMPED", CLD_DUMPED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLD_DUMPED", CLD_DUMPED, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(CLD_TRAPPED) - REGISTER_LONG_CONSTANT("CLD_TRAPPED", CLD_TRAPPED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLD_TRAPPED", CLD_TRAPPED, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(CLD_STOPPED) - REGISTER_LONG_CONSTANT("CLD_STOPPED", CLD_STOPPED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLD_STOPPED", CLD_STOPPED, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(CLD_CONTINUED) - REGISTER_LONG_CONSTANT("CLD_CONTINUED", CLD_CONTINUED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLD_CONTINUED", CLD_CONTINUED, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(TRAP_BRKPT) - REGISTER_LONG_CONSTANT("TRAP_BRKPT", TRAP_BRKPT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TRAP_BRKPT", TRAP_BRKPT, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(TRAP_TRACE) - REGISTER_LONG_CONSTANT("TRAP_TRACE", TRAP_TRACE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TRAP_TRACE", TRAP_TRACE, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(POLL_IN) - REGISTER_LONG_CONSTANT("POLL_IN", POLL_IN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POLL_IN", POLL_IN, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(POLL_OUT) - REGISTER_LONG_CONSTANT("POLL_OUT", POLL_OUT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POLL_OUT", POLL_OUT, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(POLL_MSG) - REGISTER_LONG_CONSTANT("POLL_MSG", POLL_MSG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POLL_MSG", POLL_MSG, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(POLL_ERR) - REGISTER_LONG_CONSTANT("POLL_ERR", POLL_ERR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POLL_ERR", POLL_ERR, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(POLL_PRI) - REGISTER_LONG_CONSTANT("POLL_PRI", POLL_PRI, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POLL_PRI", POLL_PRI, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(POLL_HUP) - REGISTER_LONG_CONSTANT("POLL_HUP", POLL_HUP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POLL_HUP", POLL_HUP, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_ILLOPC) - REGISTER_LONG_CONSTANT("ILL_ILLOPC", ILL_ILLOPC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_ILLOPC", ILL_ILLOPC, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_ILLOPN) - REGISTER_LONG_CONSTANT("ILL_ILLOPN", ILL_ILLOPN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_ILLOPN", ILL_ILLOPN, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_ILLADR) - REGISTER_LONG_CONSTANT("ILL_ILLADR", ILL_ILLADR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_ILLADR", ILL_ILLADR, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_ILLTRP) - REGISTER_LONG_CONSTANT("ILL_ILLTRP", ILL_ILLTRP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_ILLTRP", ILL_ILLTRP, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_PRVOPC) - REGISTER_LONG_CONSTANT("ILL_PRVOPC", ILL_PRVOPC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_PRVOPC", ILL_PRVOPC, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_PRVREG) - REGISTER_LONG_CONSTANT("ILL_PRVREG", ILL_PRVREG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_PRVREG", ILL_PRVREG, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_COPROC) - REGISTER_LONG_CONSTANT("ILL_COPROC", ILL_COPROC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_COPROC", ILL_COPROC, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(ILL_BADSTK) - REGISTER_LONG_CONSTANT("ILL_BADSTK", ILL_BADSTK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ILL_BADSTK", ILL_BADSTK, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_INTDIV) - REGISTER_LONG_CONSTANT("FPE_INTDIV", FPE_INTDIV, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_INTDIV", FPE_INTDIV, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_INTOVF) - REGISTER_LONG_CONSTANT("FPE_INTOVF", FPE_INTOVF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_INTOVF", FPE_INTOVF, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_FLTDIV) - REGISTER_LONG_CONSTANT("FPE_FLTDIV", FPE_FLTDIV, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_FLTDIV", FPE_FLTDIV, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_FLTOVF) - REGISTER_LONG_CONSTANT("FPE_FLTOVF", FPE_FLTOVF, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_FLTOVF", FPE_FLTOVF, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_FLTUND) - REGISTER_LONG_CONSTANT("FPE_FLTUND", FPE_FLTUND, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_FLTUND", FPE_FLTUND, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_FLTRES) - REGISTER_LONG_CONSTANT("FPE_FLTRES", FPE_FLTRES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_FLTRES", FPE_FLTRES, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_FLTINV) - REGISTER_LONG_CONSTANT("FPE_FLTINV", FPE_FLTINV, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_FLTINV", FPE_FLTINV, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(FPE_FLTSUB) - REGISTER_LONG_CONSTANT("FPE_FLTSUB", FPE_FLTSUB, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FPE_FLTSUB", FPE_FLTSUB, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(SEGV_MAPERR) - REGISTER_LONG_CONSTANT("SEGV_MAPERR", SEGV_MAPERR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SEGV_MAPERR", SEGV_MAPERR, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(SEGV_ACCERR) - REGISTER_LONG_CONSTANT("SEGV_ACCERR", SEGV_ACCERR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SEGV_ACCERR", SEGV_ACCERR, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(BUS_ADRALN) - REGISTER_LONG_CONSTANT("BUS_ADRALN", BUS_ADRALN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("BUS_ADRALN", BUS_ADRALN, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(BUS_ADRERR) - REGISTER_LONG_CONSTANT("BUS_ADRERR", BUS_ADRERR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("BUS_ADRERR", BUS_ADRERR, CONST_PERSISTENT); #endif #if (defined(HAVE_SIGWAITINFO) && defined(HAVE_SIGTIMEDWAIT)) && defined(BUS_OBJERR) - REGISTER_LONG_CONSTANT("BUS_OBJERR", BUS_OBJERR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("BUS_OBJERR", BUS_OBJERR, CONST_PERSISTENT); #endif #if defined(HAVE_UNSHARE) - REGISTER_LONG_CONSTANT("CLONE_NEWNS", CLONE_NEWNS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLONE_NEWNS", CLONE_NEWNS, CONST_PERSISTENT); #endif #if defined(HAVE_UNSHARE) && defined(CLONE_NEWIPC) - REGISTER_LONG_CONSTANT("CLONE_NEWIPC", CLONE_NEWIPC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLONE_NEWIPC", CLONE_NEWIPC, CONST_PERSISTENT); #endif #if defined(HAVE_UNSHARE) && defined(CLONE_NEWUTS) - REGISTER_LONG_CONSTANT("CLONE_NEWUTS", CLONE_NEWUTS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLONE_NEWUTS", CLONE_NEWUTS, CONST_PERSISTENT); #endif #if defined(HAVE_UNSHARE) && defined(CLONE_NEWNET) - REGISTER_LONG_CONSTANT("CLONE_NEWNET", CLONE_NEWNET, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLONE_NEWNET", CLONE_NEWNET, CONST_PERSISTENT); #endif #if defined(HAVE_UNSHARE) && defined(CLONE_NEWPID) - REGISTER_LONG_CONSTANT("CLONE_NEWPID", CLONE_NEWPID, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLONE_NEWPID", CLONE_NEWPID, CONST_PERSISTENT); #endif #if defined(HAVE_UNSHARE) && defined(CLONE_NEWUSER) - REGISTER_LONG_CONSTANT("CLONE_NEWUSER", CLONE_NEWUSER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLONE_NEWUSER", CLONE_NEWUSER, CONST_PERSISTENT); #endif #if defined(HAVE_UNSHARE) && defined(CLONE_NEWCGROUP) - REGISTER_LONG_CONSTANT("CLONE_NEWCGROUP", CLONE_NEWCGROUP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CLONE_NEWCGROUP", CLONE_NEWCGROUP, CONST_PERSISTENT); #endif #if defined(HAVE_RFORK) && defined(RFPROC) - REGISTER_LONG_CONSTANT("RFPROC", RFPROC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("RFPROC", RFPROC, CONST_PERSISTENT); #endif #if defined(HAVE_RFORK) && defined(RFNOWAIT) - REGISTER_LONG_CONSTANT("RFNOWAIT", RFNOWAIT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("RFNOWAIT", RFNOWAIT, CONST_PERSISTENT); #endif #if defined(HAVE_RFORK) && defined(RFCFDG) - REGISTER_LONG_CONSTANT("RFCFDG", RFCFDG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("RFCFDG", RFCFDG, CONST_PERSISTENT); #endif #if defined(HAVE_RFORK) && defined(RFFDG) - REGISTER_LONG_CONSTANT("RFFDG", RFFDG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("RFFDG", RFFDG, CONST_PERSISTENT); #endif #if defined(HAVE_RFORK) && defined(RFLINUXTHPN) - REGISTER_LONG_CONSTANT("RFLINUXTHPN", RFLINUXTHPN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("RFLINUXTHPN", RFLINUXTHPN, CONST_PERSISTENT); #endif #if defined(HAVE_RFORK) && defined(RFTSIGZMB) - REGISTER_LONG_CONSTANT("RFTSIGZMB", RFTSIGZMB, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("RFTSIGZMB", RFTSIGZMB, CONST_PERSISTENT); #endif #if defined(HAVE_RFORK) && defined(RFTHREAD) - REGISTER_LONG_CONSTANT("RFTHREAD", RFTHREAD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("RFTHREAD", RFTHREAD, CONST_PERSISTENT); #endif #if defined(HAVE_FORKX) - REGISTER_LONG_CONSTANT("FORK_NOSIGCHLD", FORK_NOSIGCHLD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FORK_NOSIGCHLD", FORK_NOSIGCHLD, CONST_PERSISTENT); #endif #if defined(HAVE_FORKX) - REGISTER_LONG_CONSTANT("FORK_WAITPID", FORK_WAITPID, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FORK_WAITPID", FORK_WAITPID, CONST_PERSISTENT); #endif #if defined(EINTR) - REGISTER_LONG_CONSTANT("PCNTL_EINTR", EINTR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EINTR", EINTR, CONST_PERSISTENT); #endif #if defined(ECHILD) - REGISTER_LONG_CONSTANT("PCNTL_ECHILD", ECHILD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ECHILD", ECHILD, CONST_PERSISTENT); #endif #if defined(EINVAL) - REGISTER_LONG_CONSTANT("PCNTL_EINVAL", EINVAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EINVAL", EINVAL, CONST_PERSISTENT); #endif #if defined(EAGAIN) - REGISTER_LONG_CONSTANT("PCNTL_EAGAIN", EAGAIN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EAGAIN", EAGAIN, CONST_PERSISTENT); #endif #if defined(ESRCH) - REGISTER_LONG_CONSTANT("PCNTL_ESRCH", ESRCH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ESRCH", ESRCH, CONST_PERSISTENT); #endif #if defined(EACCES) - REGISTER_LONG_CONSTANT("PCNTL_EACCES", EACCES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EACCES", EACCES, CONST_PERSISTENT); #endif #if defined(EPERM) - REGISTER_LONG_CONSTANT("PCNTL_EPERM", EPERM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EPERM", EPERM, CONST_PERSISTENT); #endif #if defined(ENOMEM) - REGISTER_LONG_CONSTANT("PCNTL_ENOMEM", ENOMEM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ENOMEM", ENOMEM, CONST_PERSISTENT); #endif #if defined(E2BIG) - REGISTER_LONG_CONSTANT("PCNTL_E2BIG", E2BIG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_E2BIG", E2BIG, CONST_PERSISTENT); #endif #if defined(EFAULT) - REGISTER_LONG_CONSTANT("PCNTL_EFAULT", EFAULT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EFAULT", EFAULT, CONST_PERSISTENT); #endif #if defined(EIO) - REGISTER_LONG_CONSTANT("PCNTL_EIO", EIO, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EIO", EIO, CONST_PERSISTENT); #endif #if defined(EISDIR) - REGISTER_LONG_CONSTANT("PCNTL_EISDIR", EISDIR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EISDIR", EISDIR, CONST_PERSISTENT); #endif #if defined(ELIBBAD) - REGISTER_LONG_CONSTANT("PCNTL_ELIBBAD", ELIBBAD, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ELIBBAD", ELIBBAD, CONST_PERSISTENT); #endif #if defined(ELOOP) - REGISTER_LONG_CONSTANT("PCNTL_ELOOP", ELOOP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ELOOP", ELOOP, CONST_PERSISTENT); #endif #if defined(EMFILE) - REGISTER_LONG_CONSTANT("PCNTL_EMFILE", EMFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EMFILE", EMFILE, CONST_PERSISTENT); #endif #if defined(ENAMETOOLONG) - REGISTER_LONG_CONSTANT("PCNTL_ENAMETOOLONG", ENAMETOOLONG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ENAMETOOLONG", ENAMETOOLONG, CONST_PERSISTENT); #endif #if defined(ENFILE) - REGISTER_LONG_CONSTANT("PCNTL_ENFILE", ENFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ENFILE", ENFILE, CONST_PERSISTENT); #endif #if defined(ENOENT) - REGISTER_LONG_CONSTANT("PCNTL_ENOENT", ENOENT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ENOENT", ENOENT, CONST_PERSISTENT); #endif #if defined(ENOEXEC) - REGISTER_LONG_CONSTANT("PCNTL_ENOEXEC", ENOEXEC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ENOEXEC", ENOEXEC, CONST_PERSISTENT); #endif #if defined(ENOTDIR) - REGISTER_LONG_CONSTANT("PCNTL_ENOTDIR", ENOTDIR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ENOTDIR", ENOTDIR, CONST_PERSISTENT); #endif #if defined(ETXTBSY) - REGISTER_LONG_CONSTANT("PCNTL_ETXTBSY", ETXTBSY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ETXTBSY", ETXTBSY, CONST_PERSISTENT); #endif #if defined(ENOSPC) - REGISTER_LONG_CONSTANT("PCNTL_ENOSPC", ENOSPC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ENOSPC", ENOSPC, CONST_PERSISTENT); #endif #if defined(EUSERS) - REGISTER_LONG_CONSTANT("PCNTL_EUSERS", EUSERS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_EUSERS", EUSERS, CONST_PERSISTENT); #endif #if defined(ECAPMODE) - REGISTER_LONG_CONSTANT("PCNTL_ECAPMODE", ECAPMODE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCNTL_ECAPMODE", ECAPMODE, CONST_PERSISTENT); #endif } diff --git a/ext/pcntl/tests/pcntl_getpriority_error.phpt b/ext/pcntl/tests/pcntl_getpriority_error.phpt index 19936f0b59da8..2fa88a76842d0 100644 --- a/ext/pcntl/tests/pcntl_getpriority_error.phpt +++ b/ext/pcntl/tests/pcntl_getpriority_error.phpt @@ -2,9 +2,12 @@ pcntl_getpriority() - Wrong mode passed and also for non existing process id provided --EXTENSIONS-- pcntl +posix --SKIPIF-- diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index f1d821e050692..f4fd60e96ebef 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -369,7 +369,7 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("pcre.backtrack_limit", "1000000", PHP_INI_ALL, OnUpdateBacktrackLimit, backtrack_limit, zend_pcre_globals, pcre_globals) STD_PHP_INI_ENTRY("pcre.recursion_limit", "100000", PHP_INI_ALL, OnUpdateRecursionLimit, recursion_limit, zend_pcre_globals, pcre_globals) #ifdef HAVE_PCRE_JIT_SUPPORT - STD_PHP_INI_ENTRY("pcre.jit", "1", PHP_INI_ALL, OnUpdateJit, jit, zend_pcre_globals, pcre_globals) + STD_PHP_INI_BOOLEAN("pcre.jit", "1", PHP_INI_ALL, OnUpdateJit, jit, zend_pcre_globals, pcre_globals) #endif PHP_INI_END() diff --git a/ext/pcre/php_pcre_arginfo.h b/ext/pcre/php_pcre_arginfo.h index cba3bed340de0..a4132e28e598c 100644 --- a/ext/pcre/php_pcre_arginfo.h +++ b/ext/pcre/php_pcre_arginfo.h @@ -93,23 +93,23 @@ static const zend_function_entry ext_functions[] = { static void register_php_pcre_symbols(int module_number) { - REGISTER_LONG_CONSTANT("PREG_PATTERN_ORDER", PREG_PATTERN_ORDER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_SET_ORDER", PREG_SET_ORDER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_OFFSET_CAPTURE", PREG_OFFSET_CAPTURE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_UNMATCHED_AS_NULL", PREG_UNMATCHED_AS_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_SPLIT_NO_EMPTY", PREG_SPLIT_NO_EMPTY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_SPLIT_DELIM_CAPTURE", PREG_SPLIT_DELIM_CAPTURE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_SPLIT_OFFSET_CAPTURE", PREG_SPLIT_OFFSET_CAPTURE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_GREP_INVERT", PREG_GREP_INVERT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_NO_ERROR", PHP_PCRE_NO_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_INTERNAL_ERROR", PHP_PCRE_INTERNAL_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_BACKTRACK_LIMIT_ERROR", PHP_PCRE_BACKTRACK_LIMIT_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_RECURSION_LIMIT_ERROR", PHP_PCRE_RECURSION_LIMIT_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_ERROR", PHP_PCRE_BAD_UTF8_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_OFFSET_ERROR", PHP_PCRE_BAD_UTF8_OFFSET_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PREG_JIT_STACKLIMIT_ERROR", PHP_PCRE_JIT_STACKLIMIT_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("PCRE_VERSION", php_pcre_version, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PCRE_VERSION_MAJOR", PCRE2_MAJOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PCRE_VERSION_MINOR", PCRE2_MINOR, CONST_CS | CONST_PERSISTENT); - REGISTER_BOOL_CONSTANT("PCRE_JIT_SUPPORT", PHP_PCRE_JIT_SUPPORT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_PATTERN_ORDER", PREG_PATTERN_ORDER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_SET_ORDER", PREG_SET_ORDER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_OFFSET_CAPTURE", PREG_OFFSET_CAPTURE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_UNMATCHED_AS_NULL", PREG_UNMATCHED_AS_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_SPLIT_NO_EMPTY", PREG_SPLIT_NO_EMPTY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_SPLIT_DELIM_CAPTURE", PREG_SPLIT_DELIM_CAPTURE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_SPLIT_OFFSET_CAPTURE", PREG_SPLIT_OFFSET_CAPTURE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_GREP_INVERT", PREG_GREP_INVERT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_NO_ERROR", PHP_PCRE_NO_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_INTERNAL_ERROR", PHP_PCRE_INTERNAL_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_BACKTRACK_LIMIT_ERROR", PHP_PCRE_BACKTRACK_LIMIT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_RECURSION_LIMIT_ERROR", PHP_PCRE_RECURSION_LIMIT_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_ERROR", PHP_PCRE_BAD_UTF8_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_OFFSET_ERROR", PHP_PCRE_BAD_UTF8_OFFSET_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PREG_JIT_STACKLIMIT_ERROR", PHP_PCRE_JIT_STACKLIMIT_ERROR, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("PCRE_VERSION", php_pcre_version, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCRE_VERSION_MAJOR", PCRE2_MAJOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PCRE_VERSION_MINOR", PCRE2_MINOR, CONST_PERSISTENT); + REGISTER_BOOL_CONSTANT("PCRE_JIT_SUPPORT", PHP_PCRE_JIT_SUPPORT, CONST_PERSISTENT); } diff --git a/ext/pdo/pdo.c b/ext/pdo/pdo.c index e8738db9f85ad..918036f54af8d 100644 --- a/ext/pdo/pdo.c +++ b/ext/pdo/pdo.c @@ -275,7 +275,7 @@ PHP_MINFO_FUNCTION(pdo) pdo_driver_t *pdriver; php_info_print_table_start(); - php_info_print_table_header(2, "PDO support", "enabled"); + php_info_print_table_row(2, "PDO support", "enabled"); ZEND_HASH_MAP_FOREACH_PTR(&pdo_driver_hash, pdriver) { spprintf(&drivers, 0, "%s, %s", ldrivers, pdriver->driver_name); diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index 260b40daf717d..1f291def5b835 100644 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -33,6 +33,7 @@ #include "zend_object_handlers.h" #include "zend_hash.h" #include "pdo_dbh_arginfo.h" +#include "zend_observer.h" static bool pdo_dbh_attribute_set(pdo_dbh_t *dbh, zend_long attr, zval *value); @@ -1246,6 +1247,7 @@ bool pdo_hash_methods(pdo_dbh_object_t *dbh_obj, int kind) func.scope = dbh_obj->std.ce; func.prototype = NULL; ZEND_MAP_PTR(func.run_time_cache) = NULL; + func.T = ZEND_OBSERVER_ENABLED; if (funcs->flags) { func.fn_flags = funcs->flags | ZEND_ACC_NEVER_CACHE; } else { @@ -1331,6 +1333,7 @@ void pdo_dbh_init(int module_number) { pdo_dbh_ce = register_class_PDO(); pdo_dbh_ce->create_object = pdo_dbh_new; + pdo_dbh_ce->default_object_handlers = &pdo_dbh_object_handlers; memcpy(&pdo_dbh_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); pdo_dbh_object_handlers.offset = XtOffsetOf(pdo_dbh_object_t, std); @@ -1417,8 +1420,6 @@ zend_object *pdo_dbh_new(zend_class_entry *ce) dbh->inner = ecalloc(1, sizeof(pdo_dbh_t)); dbh->inner->def_stmt_ce = pdo_dbstmt_ce; - dbh->std.handlers = &pdo_dbh_object_handlers; - return &dbh->std; } diff --git a/ext/pdo/pdo_stmt.c b/ext/pdo/pdo_stmt.c index 453933607f38e..65f0900075af0 100644 --- a/ext/pdo/pdo_stmt.c +++ b/ext/pdo/pdo_stmt.c @@ -218,7 +218,6 @@ static void get_lazy_object(pdo_stmt_t *stmt, zval *return_value) /* {{{ */ row->stmt = stmt; zend_object_std_init(&row->std, pdo_row_ce); ZVAL_OBJ(&stmt->lazy_object_ref, &row->std); - row->std.handlers = &pdo_row_object_handlers; GC_ADDREF(&stmt->std); GC_DELREF(&row->std); } @@ -2137,8 +2136,6 @@ zend_object *pdo_dbstmt_new(zend_class_entry *ce) zend_object_std_init(&stmt->std, ce); object_properties_init(&stmt->std, ce); - stmt->std.handlers = &pdo_dbstmt_object_handlers; - return &stmt->std; } /* }}} */ @@ -2464,7 +2461,6 @@ zend_object *pdo_row_new(zend_class_entry *ce) { pdo_row_t *row = ecalloc(1, sizeof(pdo_row_t)); zend_object_std_init(&row->std, ce); - row->std.handlers = &pdo_row_object_handlers; return &row->std; } @@ -2474,6 +2470,7 @@ void pdo_stmt_init(void) pdo_dbstmt_ce = register_class_PDOStatement(zend_ce_aggregate); pdo_dbstmt_ce->get_iterator = pdo_stmt_iter_get; pdo_dbstmt_ce->create_object = pdo_dbstmt_new; + pdo_dbstmt_ce->default_object_handlers = &pdo_dbstmt_object_handlers; memcpy(&pdo_dbstmt_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); pdo_dbstmt_object_handlers.offset = XtOffsetOf(pdo_stmt_t, std); @@ -2486,6 +2483,7 @@ void pdo_stmt_init(void) pdo_row_ce = register_class_PDORow(); pdo_row_ce->create_object = pdo_row_new; + pdo_row_ce->default_object_handlers = &pdo_row_object_handlers; memcpy(&pdo_row_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); pdo_row_object_handlers.free_obj = pdo_row_free_storage; diff --git a/ext/pdo/tests/bug_73234.phpt b/ext/pdo/tests/bug_73234.phpt index 8f7c28df5578f..5f8f620cad80a 100644 --- a/ext/pdo/tests/bug_73234.phpt +++ b/ext/pdo/tests/bug_73234.phpt @@ -9,6 +9,11 @@ if (false == $dir) die('skip no driver'); if (str_starts_with(getenv('PDOTEST_DSN'), "firebird")) die('xfail firebird driver does not behave as expected'); require_once $dir . 'pdo_test.inc'; PDOTest::skip(); + +$db = PDOTest::factory(); +if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') { + die("xfail PDO::PARAM_NULL is not honored by OCI driver, related with bug #81586"); +} ?> --FILE-- getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') { + die("xfail OCI driver errorInfo is inconsistent with other PDO drivers"); +} ?> --FILE-- errorCode()); +$query = 'SELECT 1'; +if ($conn->getAttribute(PDO::ATTR_DRIVER_NAME) === 'oci') { + $query .= ' FROM DUAL'; +} var_dump($conn->errorCode()); -$stmt = $conn->prepare($query); var_dump($conn->errorCode()); +$stmt = $conn->prepare($query); +var_dump($conn->errorCode()); var_dump($stmt->errorCode()); + $stmt->execute(); var_dump($stmt->errorCode()); +var_dump($stmt->errorCode()); ?> --EXPECT-- NULL string(5) "00000" +string(5) "00000" +string(5) "00000" NULL string(5) "00000" +string(5) "00000" diff --git a/ext/pdo_dblib/pdo_dblib.c b/ext/pdo_dblib/pdo_dblib.c index e0f204cb39be9..3230f9151bf4d 100644 --- a/ext/pdo_dblib/pdo_dblib.c +++ b/ext/pdo_dblib/pdo_dblib.c @@ -223,7 +223,7 @@ PHP_MSHUTDOWN_FUNCTION(pdo_dblib) PHP_MINFO_FUNCTION(pdo_dblib) { php_info_print_table_start(); - php_info_print_table_header(2, "PDO Driver for " + php_info_print_table_row(2, "PDO Driver for " #ifdef PDO_DBLIB_IS_MSSQL "MSSQL" #elif defined(PHP_WIN32) diff --git a/ext/pdo_dblib/tests/CONFLICTS b/ext/pdo_dblib/tests/CONFLICTS new file mode 100644 index 0000000000000..7980e46ba3fa6 --- /dev/null +++ b/ext/pdo_dblib/tests/CONFLICTS @@ -0,0 +1 @@ +pdo_dblib diff --git a/ext/pdo_firebird/pdo_firebird.c b/ext/pdo_firebird/pdo_firebird.c index 9b8ca1394bee1..efbebccb0e127 100644 --- a/ext/pdo_firebird/pdo_firebird.c +++ b/ext/pdo_firebird/pdo_firebird.c @@ -85,7 +85,7 @@ PHP_MINFO_FUNCTION(pdo_firebird) /* {{{ */ isc_get_client_version(version); php_info_print_table_start(); - php_info_print_table_header(2, "PDO Driver for Firebird", "enabled"); + php_info_print_table_row(2, "PDO Driver for Firebird", "enabled"); php_info_print_table_row(2, "Client Library Version", version); php_info_print_table_end(); } diff --git a/ext/pdo_mysql/pdo_mysql.c b/ext/pdo_mysql/pdo_mysql.c index 2d94b71fef782..7aa39ca35a6bd 100644 --- a/ext/pdo_mysql/pdo_mysql.c +++ b/ext/pdo_mysql/pdo_mysql.c @@ -153,7 +153,7 @@ static PHP_MINFO_FUNCTION(pdo_mysql) { php_info_print_table_start(); - php_info_print_table_header(2, "PDO Driver for MySQL", "enabled"); + php_info_print_table_row(2, "PDO Driver for MySQL", "enabled"); php_info_print_table_row(2, "Client API version", mysql_get_client_info()); php_info_print_table_end(); diff --git a/ext/pdo_oci/pdo_oci.c b/ext/pdo_oci/pdo_oci.c index 125f4ce5704bb..deb73e05f296c 100644 --- a/ext/pdo_oci/pdo_oci.c +++ b/ext/pdo_oci/pdo_oci.c @@ -147,7 +147,7 @@ PHP_MSHUTDOWN_FUNCTION(pdo_oci) PHP_MINFO_FUNCTION(pdo_oci) { php_info_print_table_start(); - php_info_print_table_header(2, "PDO Driver for OCI 8 and later", "enabled"); + php_info_print_table_row(2, "PDO Driver for OCI 8 and later", "enabled"); php_info_print_table_end(); } /* }}} */ diff --git a/ext/pdo_oci/tests/CONFLICTS b/ext/pdo_oci/tests/CONFLICTS new file mode 100644 index 0000000000000..176b41ab8bb6f --- /dev/null +++ b/ext/pdo_oci/tests/CONFLICTS @@ -0,0 +1 @@ +oci8 diff --git a/ext/pdo_oci/tests/pdo_oci_quote1.phpt b/ext/pdo_oci/tests/pdo_oci_quote1.phpt index 024625a181fc4..ea2a5468dbd5b 100644 --- a/ext/pdo_oci/tests/pdo_oci_quote1.phpt +++ b/ext/pdo_oci/tests/pdo_oci_quote1.phpt @@ -21,7 +21,7 @@ $stmt = $db->prepare('select * from poq_tab'); // The intent is that the fetched data be identical to the unquoted string. // Remember!: use bind variables instead of PDO->quote() -$a = array(null, "", "a", "ab", "abc", "ab'cd", "a\b\n", "'", "''", "a'", "'z", "a''b", '"'); +$a = array("", "a", "ab", "abc", "ab'cd", "a\b\n", "'", "''", "a'", "'z", "a''b", '"'); foreach ($a as $u) { $q = $db->quote($u); echo "Unquoted : "; @@ -42,15 +42,6 @@ echo "Done\n"; ?> --EXPECT-- -Unquoted : NULL -Quoted : string(2) "''" -array(1) { - [0]=> - array(1) { - ["t"]=> - NULL - } -} Unquoted : string(0) "" Quoted : string(2) "''" array(1) { diff --git a/ext/pdo_oci/tests/pdo_oci_stream_2a.phpt b/ext/pdo_oci/tests/pdo_oci_stream_2.phpt similarity index 59% rename from ext/pdo_oci/tests/pdo_oci_stream_2a.phpt rename to ext/pdo_oci/tests/pdo_oci_stream_2.phpt index 0bb1e3996efef..93b71039187e9 100644 --- a/ext/pdo_oci/tests/pdo_oci_stream_2a.phpt +++ b/ext/pdo_oci/tests/pdo_oci_stream_2.phpt @@ -1,5 +1,5 @@ --TEST-- -PDO OCI: Inserts 1K with 1 number and 2 LOB columns (stress test) +PDO OCI: Insert and fetch 1K records from a table that contains 1 number and 2 LOB columns (stress test) --EXTENSIONS-- pdo pdo_oci @@ -71,6 +71,57 @@ printf("Done\n"); /* Cleanup is done in pdo_oci_stream_2b.phpt */ //$db->exec("drop table pdo_oci_stream_2"); +$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); // Let's use streams + +// Since each column only has one lob descriptor, the last row is +// shown twice because the lob descriptor for each column is reused in +// the stream + +$i = 0; +$j = 9; +$a_val = ord('a'); +foreach($db->query("select data1 as d4_1, data2 as d4_2 from pdo_oci_stream_2 order by id") as $row) { + $a = $row['d4_1']; + $a1 = $row['d4_2']; + + $str1 = stream_get_contents($a); + $str2 = stream_get_contents($a1); + + $str1len = strlen($str1); + $str2len = strlen($str2); + + $b = ord($str1[0]); + $b1 = ord($str2[0]); + + if (($b != ($a_val + $i)) && ($str1len != (4086 + $i)) && + ($b1 != ($a_val + $j)) && ($str2len != (4086 + $j))) { + printf("There is a bug!\n"); + printf("Col1:\n"); + printf("a_val = %d\n", $a_val); + printf("b = %d\n", $b); + printf("i = %d\n", $i); + printf("str1len = %d\n", $str1len); + + printf("Col2:\n"); + printf("a_val = %d\n", $a_val); + printf("b1 = %d\n", $b1); + printf("j = %d\n", $j); + printf("str2len = %d\n", $str1len); + + } + $i++; + if ($i>9) + $i = 0; + $j--; + if ($j<0) + $j = 9; +} +echo "Fetch operation done!\n"; + +/* Cleanup */ +$db->exec("drop table pdo_oci_stream_2"); + ?> --EXPECT-- Inserting 1000 Records ... Done +Fetch operation done! diff --git a/ext/pdo_oci/tests/pdo_oci_stream_2b.phpt b/ext/pdo_oci/tests/pdo_oci_stream_2b.phpt deleted file mode 100644 index 614590a4c1790..0000000000000 --- a/ext/pdo_oci/tests/pdo_oci_stream_2b.phpt +++ /dev/null @@ -1,72 +0,0 @@ ---TEST-- -PDO OCI: Fetches 1K records from a table that contains 1 number and 2 LOB columns (stress test) ---EXTENSIONS-- -pdo -pdo_oci ---SKIPIF-- - ---FILE-- -setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); // Let's use streams - -// Since each column only has one lob descriptor, the last row is -// shown twice because the lob descriptor for each column is reused in -// the stream - -$i = 0; -$j = 9; -$a_val = ord('a'); -foreach($db->query("select data1 as d4_1, data2 as d4_2 from pdo_oci_stream_2 order by id") as $row) { - $a = $row['d4_1']; - $a1 = $row['d4_2']; - - $str1 = stream_get_contents($a); - $str2 = stream_get_contents($a1); - - $str1len = strlen($str1); - $str2len = strlen($str2); - - $b = ord($str1[0]); - $b1 = ord($str2[0]); - - if (($b != ($a_val + $i)) && ($str1len != (4086 + $i)) && - ($b1 != ($a_val + $j)) && ($str2len != (4086 + $j))) { - printf("There is a bug!\n"); - printf("Col1:\n"); - printf("a_val = %d\n", $a_val); - printf("b = %d\n", $b); - printf("i = %d\n", $i); - printf("str1len = %d\n", $str1len); - - printf("Col2:\n"); - printf("a_val = %d\n", $a_val); - printf("b1 = %d\n", $b1); - printf("j = %d\n", $j); - printf("str2len = %d\n", $str1len); - - } - $i++; - if ($i>9) - $i = 0; - $j--; - if ($j<0) - $j = 9; -} -echo "Fetch operation done!\n"; - -/* Cleanup */ -$db->exec("drop table pdo_oci_stream_2"); - -?> ---EXPECT-- -Fetch operation done! diff --git a/ext/pdo_odbc/odbc_driver.c b/ext/pdo_odbc/odbc_driver.c index 308cf7e10c94d..661cab3c04f8c 100644 --- a/ext/pdo_odbc/odbc_driver.c +++ b/ext/pdo_odbc/odbc_driver.c @@ -396,11 +396,19 @@ static zend_result odbc_handle_check_liveness(pdo_dbh_t *dbh) RETCODE ret; UCHAR d_name[32]; SQLSMALLINT len; + SQLUINTEGER dead = SQL_CD_FALSE; pdo_odbc_db_handle *H = (pdo_odbc_db_handle *)dbh->driver_data; + ret = SQLGetConnectAttr(H->dbc, SQL_ATTR_CONNECTION_DEAD, &dead, 0, NULL); + if (ret == SQL_SUCCESS && dead == SQL_CD_TRUE) { + /* Bail early here, since we know it's gone */ + return FAILURE; + } /* - * SQL_ATTR_CONNECTION_DEAD is tempting, but only in ODBC 3.5, - * and not all drivers implement it properly + * If the driver doesn't support SQL_ATTR_CONNECTION_DEAD, or if + * it returns false (which could be a false positive), fall back + * to using SQL_DATA_SOURCE_READ_ONLY, which isn't semantically + * correct, but works with many drivers. */ ret = SQLGetInfo(H->dbc, SQL_DATA_SOURCE_READ_ONLY, d_name, sizeof(d_name), &len); diff --git a/ext/pdo_odbc/pdo_odbc.c b/ext/pdo_odbc/pdo_odbc.c index 12874c8bd8747..98e684bc5a95b 100644 --- a/ext/pdo_odbc/pdo_odbc.c +++ b/ext/pdo_odbc/pdo_odbc.c @@ -118,7 +118,7 @@ PHP_MSHUTDOWN_FUNCTION(pdo_odbc) PHP_MINFO_FUNCTION(pdo_odbc) { php_info_print_table_start(); - php_info_print_table_header(2, "PDO Driver for ODBC (" PDO_ODBC_TYPE ")" , "enabled"); + php_info_print_table_row(2, "PDO Driver for ODBC (" PDO_ODBC_TYPE ")" , "enabled"); #ifdef SQL_ATTR_CONNECTION_POOLING php_info_print_table_row(2, "ODBC Connection Pooling", pdo_odbc_pool_on == SQL_CP_OFF ? "Disabled" : (pdo_odbc_pool_mode == SQL_CP_STRICT_MATCH ? "Enabled, strict matching" : "Enabled, relaxed matching")); diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 7575f788aa476..ec4d5ec65866b 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -34,6 +34,8 @@ #include "zend_exceptions.h" #include "pgsql_driver_arginfo.h" +static bool pgsql_handle_in_transaction(pdo_dbh_t *dbh); + static char * _pdo_pgsql_trim_message(const char *message, int persistent) { size_t i = strlen(message)-1; @@ -139,10 +141,12 @@ static ssize_t pgsql_lob_read(php_stream *stream, char *buf, size_t count) static int pgsql_lob_close(php_stream *stream, int close_handle) { struct pdo_pgsql_lob_self *self = (struct pdo_pgsql_lob_self*)stream->abstract; + pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)(Z_PDO_DBH_P(&self->dbh))->driver_data; if (close_handle) { lo_close(self->conn, self->lfd); } + zend_hash_index_del(H->lob_streams, php_stream_get_resource_id(stream)); zval_ptr_dtor(&self->dbh); efree(self); return 0; @@ -193,6 +197,7 @@ php_stream *pdo_pgsql_create_lob_stream(zval *dbh, int lfd, Oid oid) if (stm) { Z_ADDREF_P(dbh); + zend_hash_index_add_ptr(H->lob_streams, php_stream_get_resource_id(stm), stm->res); return stm; } @@ -201,10 +206,29 @@ php_stream *pdo_pgsql_create_lob_stream(zval *dbh, int lfd, Oid oid) } /* }}} */ +void pdo_pgsql_close_lob_streams(pdo_dbh_t *dbh) +{ + zend_resource *res; + pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; + if (H->lob_streams) { + ZEND_HASH_REVERSE_FOREACH_PTR(H->lob_streams, res) { + if (res->type >= 0) { + zend_list_close(res); + } + } ZEND_HASH_FOREACH_END(); + } +} + static void pgsql_handle_closer(pdo_dbh_t *dbh) /* {{{ */ { pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; if (H) { + if (H->lob_streams) { + pdo_pgsql_close_lob_streams(dbh); + zend_hash_destroy(H->lob_streams); + pefree(H->lob_streams, dbh->is_persistent); + H->lob_streams = NULL; + } if (H->server) { PQfinish(H->server); H->server = NULL; @@ -294,6 +318,8 @@ static zend_long pgsql_handle_doer(pdo_dbh_t *dbh, const zend_string *sql) zend_long ret = 1; ExecStatusType qs; + bool in_trans = pgsql_handle_in_transaction(dbh); + if (!(res = PQexec(H->server, ZSTR_VAL(sql)))) { /* fatal error */ pdo_pgsql_error(dbh, PGRES_FATAL_ERROR, NULL); @@ -312,6 +338,9 @@ static zend_long pgsql_handle_doer(pdo_dbh_t *dbh, const zend_string *sql) ret = Z_L(0); } PQclear(res); + if (in_trans && !pgsql_handle_in_transaction(dbh)) { + pdo_pgsql_close_lob_streams(dbh); + } return ret; } @@ -502,9 +531,7 @@ static zend_result pdo_pgsql_check_liveness(pdo_dbh_t *dbh) static bool pgsql_handle_in_transaction(pdo_dbh_t *dbh) { - pdo_pgsql_db_handle *H; - - H = (pdo_pgsql_db_handle *)dbh->driver_data; + pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; return PQtransactionStatus(H->server) > PQTRANS_IDLE; } @@ -537,7 +564,9 @@ static bool pgsql_handle_commit(pdo_dbh_t *dbh) /* When deferred constraints are used the commit could fail, and a ROLLBACK implicitly ran. See bug #67462 */ - if (!ret) { + if (ret) { + pdo_pgsql_close_lob_streams(dbh); + } else { dbh->in_txn = pgsql_handle_in_transaction(dbh); } @@ -546,7 +575,13 @@ static bool pgsql_handle_commit(pdo_dbh_t *dbh) static bool pgsql_handle_rollback(pdo_dbh_t *dbh) { - return pdo_pgsql_transaction_cmd("ROLLBACK", dbh); + int ret = pdo_pgsql_transaction_cmd("ROLLBACK", dbh); + + if (ret) { + pdo_pgsql_close_lob_streams(dbh); + } + + return ret; } /* {{{ Returns true if the copy worked fine or false if error */ @@ -1241,6 +1276,8 @@ static int pdo_pgsql_handle_factory(pdo_dbh_t *dbh, zval *driver_options) /* {{{ } H->server = PQconnectdb(conn_str); + H->lob_streams = (HashTable *) pemalloc(sizeof(HashTable), dbh->is_persistent); + zend_hash_init(H->lob_streams, 0, NULL, NULL, 1); if (tmp_user) { zend_string_release_ex(tmp_user, 0); diff --git a/ext/pdo_pgsql/pgsql_driver.stub.php b/ext/pdo_pgsql/pgsql_driver.stub.php index 6daa55c7b873a..4206dbea636b9 100644 --- a/ext/pdo_pgsql/pgsql_driver.stub.php +++ b/ext/pdo_pgsql/pgsql_driver.stub.php @@ -2,7 +2,10 @@ /** @generate-function-entries */ -// These are extension methods for PDO. This is not a real class. +/** + * These are extension methods for PDO. This is not a real class. + * @undocumentable + */ class PDO_PGSql_Ext { /** @tentative-return-type */ public function pgsqlCopyFromArray(string $tableName, array $rows, string $separator = "\t", string $nullAs = "\\\\N", ?string $fields = null): bool {} diff --git a/ext/pdo_pgsql/pgsql_driver_arginfo.h b/ext/pdo_pgsql/pgsql_driver_arginfo.h index a3ec5196fad2c..3f84d4d8e5b9d 100644 --- a/ext/pdo_pgsql/pgsql_driver_arginfo.h +++ b/ext/pdo_pgsql/pgsql_driver_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 5dfd421cf9ba9eb043c4b4f3c9b9c09c81cc3ccb */ + * Stub hash: b30fa6327876dc1090ee5397253c935e4566a8fe */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDO_PGSql_Ext_pgsqlCopyFromArray, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, tableName, IS_STRING, 0) diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c index 03ac14c32db9a..76157ae17fec4 100644 --- a/ext/pdo_pgsql/pgsql_statement.c +++ b/ext/pdo_pgsql/pgsql_statement.c @@ -134,6 +134,8 @@ static int pgsql_stmt_execute(pdo_stmt_t *stmt) pdo_pgsql_db_handle *H = S->H; ExecStatusType status; + bool in_trans = stmt->dbh->methods->in_transaction(stmt->dbh); + /* ensure that we free any previous unfetched results */ if(S->result) { PQclear(S->result); @@ -252,6 +254,10 @@ static int pgsql_stmt_execute(pdo_stmt_t *stmt) stmt->row_count = (zend_long)PQntuples(S->result); } + if (in_trans && !stmt->dbh->methods->in_transaction(stmt->dbh)) { + pdo_pgsql_close_lob_streams(stmt->dbh); + } + return 1; } diff --git a/ext/pdo_pgsql/php_pdo_pgsql_int.h b/ext/pdo_pgsql/php_pdo_pgsql_int.h index 8ef8b68138489..f45718f0c96a2 100644 --- a/ext/pdo_pgsql/php_pdo_pgsql_int.h +++ b/ext/pdo_pgsql/php_pdo_pgsql_int.h @@ -45,6 +45,7 @@ typedef struct { bool emulate_prepares; bool disable_native_prepares; /* deprecated since 5.6 */ bool disable_prepares; + HashTable *lob_streams; } pdo_pgsql_db_handle; typedef struct { @@ -106,5 +107,6 @@ php_stream *pdo_pgsql_create_lob_stream(zval *pdh, int lfd, Oid oid); extern const php_stream_ops pdo_pgsql_lob_stream_ops; void pdo_libpq_version(char *buf, size_t len); +void pdo_pgsql_close_lob_streams(pdo_dbh_t *dbh); #endif /* PHP_PDO_PGSQL_INT_H */ diff --git a/ext/pdo_pgsql/tests/gh9411.phpt b/ext/pdo_pgsql/tests/gh9411.phpt new file mode 100644 index 0000000000000..c8a11e89df627 --- /dev/null +++ b/ext/pdo_pgsql/tests/gh9411.phpt @@ -0,0 +1,41 @@ +--TEST-- +Bug GH-9411 (PgSQL large object resource is incorrectly closed) +--SKIPIF-- + +--FILE-- +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); + +$db->beginTransaction(); +$oid = $db->pgsqlLOBCreate(); +var_dump($lob = $db->pgsqlLOBOpen($oid, 'wb')); +fwrite($lob, 'test'); +$db->rollback(); +var_dump($lob); + +$db->beginTransaction(); +$oid = $db->pgsqlLOBCreate(); +var_dump($lob = $db->pgsqlLOBOpen($oid, 'wb')); +fwrite($lob, 'test'); +$db->commit(); +var_dump($lob); + +$db->beginTransaction(); +var_dump($lob = $db->pgsqlLOBOpen($oid, 'wb')); +var_dump(fgets($lob)); +?> +--EXPECTF-- +resource(%d) of type (stream) +resource(%d) of type (Unknown) +resource(%d) of type (stream) +resource(%d) of type (Unknown) +resource(%d) of type (stream) +string(4) "test" diff --git a/ext/pdo_sqlite/pdo_sqlite.c b/ext/pdo_sqlite/pdo_sqlite.c index 81761b1370937..6da7708576368 100644 --- a/ext/pdo_sqlite/pdo_sqlite.c +++ b/ext/pdo_sqlite/pdo_sqlite.c @@ -84,7 +84,7 @@ PHP_MSHUTDOWN_FUNCTION(pdo_sqlite) PHP_MINFO_FUNCTION(pdo_sqlite) { php_info_print_table_start(); - php_info_print_table_header(2, "PDO Driver for SQLite 3.x", "enabled"); + php_info_print_table_row(2, "PDO Driver for SQLite 3.x", "enabled"); php_info_print_table_row(2, "SQLite Library", sqlite3_libversion()); php_info_print_table_end(); } diff --git a/ext/pdo_sqlite/sqlite_driver.stub.php b/ext/pdo_sqlite/sqlite_driver.stub.php index 58fb41c9b950e..add395f2b99a5 100644 --- a/ext/pdo_sqlite/sqlite_driver.stub.php +++ b/ext/pdo_sqlite/sqlite_driver.stub.php @@ -2,7 +2,10 @@ /** @generate-function-entries */ -// These are extension methods for PDO. This is not a real class. +/** + * These are extension methods for PDO. This is not a real class. + * @undocumentable + */ class PDO_SQLite_Ext { /** @tentative-return-type */ public function sqliteCreateFunction(string $name, callable $callback, int $numArgs = -1, int $flags = 0): bool {} diff --git a/ext/pdo_sqlite/sqlite_driver_arginfo.h b/ext/pdo_sqlite/sqlite_driver_arginfo.h index 2b9b1aea1e0ba..5ba745e55cf3e 100644 --- a/ext/pdo_sqlite/sqlite_driver_arginfo.h +++ b/ext/pdo_sqlite/sqlite_driver_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 8cc3c173f5a442ab80f240a568489b023aabd7ef */ + * Stub hash: dc901bd60d17c1a2cdb40a118e2c6cd6eb0396e3 */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_PDO_SQLite_Ext_sqliteCreateFunction, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 0) diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index b5c4b77ad3f71..aeaa5db70f1f5 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -157,7 +157,6 @@ static zend_object *pgsql_link_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &pgsql_link_object_handlers; return &intern->std; } @@ -213,7 +212,6 @@ static zend_object *pgsql_result_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &pgsql_result_object_handlers; return &intern->std; } @@ -251,7 +249,6 @@ static zend_object *pgsql_lob_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &pgsql_lob_object_handlers; return &intern->std; } @@ -440,6 +437,7 @@ PHP_MINIT_FUNCTION(pgsql) pgsql_link_ce = register_class_PgSql_Connection(); pgsql_link_ce->create_object = pgsql_link_create_object; + pgsql_link_ce->default_object_handlers = &pgsql_link_object_handlers; memcpy(&pgsql_link_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); pgsql_link_object_handlers.offset = XtOffsetOf(pgsql_link_handle, std); @@ -450,6 +448,7 @@ PHP_MINIT_FUNCTION(pgsql) pgsql_result_ce = register_class_PgSql_Result(); pgsql_result_ce->create_object = pgsql_result_create_object; + pgsql_result_ce->default_object_handlers = &pgsql_result_object_handlers; memcpy(&pgsql_result_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); pgsql_result_object_handlers.offset = XtOffsetOf(pgsql_result_handle, std); @@ -460,6 +459,7 @@ PHP_MINIT_FUNCTION(pgsql) pgsql_lob_ce = register_class_PgSql_Lob(); pgsql_lob_ce->create_object = pgsql_lob_create_object; + pgsql_lob_ce->default_object_handlers = &pgsql_lob_object_handlers; memcpy(&pgsql_lob_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); pgsql_lob_object_handlers.offset = XtOffsetOf(pgLofp, std); @@ -512,7 +512,7 @@ PHP_MINFO_FUNCTION(pgsql) char buf[256]; php_info_print_table_start(); - php_info_print_table_header(2, "PostgreSQL Support", "enabled"); + php_info_print_table_row(2, "PostgreSQL Support", "enabled"); php_info_print_table_row(2, "PostgreSQL (libpq) Version", pgsql_libpq_version); #ifdef HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT php_info_print_table_row(2, "Multibyte character support", "enabled"); diff --git a/ext/pgsql/pgsql_arginfo.h b/ext/pgsql/pgsql_arginfo.h index dd6abfc29a6e6..e6ade23529e50 100644 --- a/ext/pgsql/pgsql_arginfo.h +++ b/ext/pgsql/pgsql_arginfo.h @@ -676,94 +676,94 @@ static const zend_function_entry class_PgSql_Lob_methods[] = { static void register_pgsql_symbols(int module_number) { - REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION", pgsql_libpq_version, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION_STR", pgsql_libpq_version, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECT_ASYNC", PGSQL_CONNECT_ASYNC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_BOTH", PGSQL_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_LAST", PGSQL_NOTICE_LAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_ALL", PGSQL_NOTICE_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NOTICE_CLEAR", PGSQL_NOTICE_CLEAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_BAD", CONNECTION_BAD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_OK", CONNECTION_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_STARTED", CONNECTION_STARTED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_MADE", CONNECTION_MADE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AWAITING_RESPONSE", CONNECTION_AWAITING_RESPONSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AUTH_OK", CONNECTION_AUTH_OK, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION", pgsql_libpq_version, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION_STR", pgsql_libpq_version, CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECT_ASYNC", PGSQL_CONNECT_ASYNC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_BOTH", PGSQL_BOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NOTICE_LAST", PGSQL_NOTICE_LAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NOTICE_ALL", PGSQL_NOTICE_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NOTICE_CLEAR", PGSQL_NOTICE_CLEAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_BAD", CONNECTION_BAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_OK", CONNECTION_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_STARTED", CONNECTION_STARTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_MADE", CONNECTION_MADE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AWAITING_RESPONSE", CONNECTION_AWAITING_RESPONSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AUTH_OK", CONNECTION_AUTH_OK, CONST_PERSISTENT); #if defined(CONNECTION_SSL_STARTUP) - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SSL_STARTUP", CONNECTION_SSL_STARTUP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SSL_STARTUP", CONNECTION_SSL_STARTUP, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SETENV", CONNECTION_SETENV, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_FAILED", PGRES_POLLING_FAILED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_READING", PGRES_POLLING_READING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_WRITING", PGRES_POLLING_WRITING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_OK", PGRES_POLLING_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_POLLING_ACTIVE", PGRES_POLLING_ACTIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_IDLE", PQTRANS_IDLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_ACTIVE", PQTRANS_ACTIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INTRANS", PQTRANS_INTRANS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INERROR", PQTRANS_INERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_UNKNOWN", PQTRANS_UNKNOWN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_STATUS_LONG", PGSQL_STATUS_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_STATUS_STRING", PGSQL_STATUS_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_COPY_OUT", PGRES_COPY_OUT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_COPY_IN", PGRES_COPY_IN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_BAD_RESPONSE", PGRES_BAD_RESPONSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_NONFATAL_ERROR", PGRES_NONFATAL_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_FATAL_ERROR", PGRES_FATAL_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY", PG_DIAG_SEVERITY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SQLSTATE", PG_DIAG_SQLSTATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SETENV", CONNECTION_SETENV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_FAILED", PGRES_POLLING_FAILED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_READING", PGRES_POLLING_READING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_WRITING", PGRES_POLLING_WRITING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_OK", PGRES_POLLING_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_POLLING_ACTIVE", PGRES_POLLING_ACTIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_IDLE", PQTRANS_IDLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_ACTIVE", PQTRANS_ACTIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INTRANS", PQTRANS_INTRANS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INERROR", PQTRANS_INERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_UNKNOWN", PQTRANS_UNKNOWN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_STATUS_LONG", PGSQL_STATUS_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_STATUS_STRING", PGSQL_STATUS_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_COPY_OUT", PGRES_COPY_OUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_COPY_IN", PGRES_COPY_IN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_BAD_RESPONSE", PGRES_BAD_RESPONSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_NONFATAL_ERROR", PGRES_NONFATAL_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_FATAL_ERROR", PGRES_FATAL_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY", PG_DIAG_SEVERITY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SQLSTATE", PG_DIAG_SQLSTATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION, CONST_PERSISTENT); #if defined(PG_DIAG_INTERNAL_POSITION) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_POSITION", PG_DIAG_INTERNAL_POSITION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_POSITION", PG_DIAG_INTERNAL_POSITION, CONST_PERSISTENT); #endif #if defined(PG_DIAG_INTERNAL_QUERY) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_QUERY", PG_DIAG_INTERNAL_QUERY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_QUERY", PG_DIAG_INTERNAL_QUERY, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONTEXT", PG_DIAG_CONTEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONTEXT", PG_DIAG_CONTEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION, CONST_PERSISTENT); #if defined(PG_DIAG_SCHEMA_NAME) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SCHEMA_NAME", PG_DIAG_SCHEMA_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SCHEMA_NAME", PG_DIAG_SCHEMA_NAME, CONST_PERSISTENT); #endif #if defined(PG_DIAG_TABLE_NAME) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_TABLE_NAME", PG_DIAG_TABLE_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_TABLE_NAME", PG_DIAG_TABLE_NAME, CONST_PERSISTENT); #endif #if defined(PG_DIAG_COLUMN_NAME) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_COLUMN_NAME", PG_DIAG_COLUMN_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_COLUMN_NAME", PG_DIAG_COLUMN_NAME, CONST_PERSISTENT); #endif #if defined(PG_DIAG_DATATYPE_NAME) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_DATATYPE_NAME", PG_DIAG_DATATYPE_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_DATATYPE_NAME", PG_DIAG_DATATYPE_NAME, CONST_PERSISTENT); #endif #if defined(PG_DIAG_CONSTRAINT_NAME) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONSTRAINT_NAME", PG_DIAG_CONSTRAINT_NAME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONSTRAINT_NAME", PG_DIAG_CONSTRAINT_NAME, CONST_PERSISTENT); #endif #if defined(PG_DIAG_SEVERITY_NONLOCALIZED) - REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY_NONLOCALIZED", PG_DIAG_SEVERITY_NONLOCALIZED, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY_NONLOCALIZED", PG_DIAG_SEVERITY_NONLOCALIZED, CONST_PERSISTENT); #endif - REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_DEFAULT", PGSQL_CONV_IGNORE_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONV_FORCE_NULL", PGSQL_CONV_FORCE_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_NOT_NULL", PGSQL_CONV_IGNORE_NOT_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_ESCAPE", PGSQL_DML_ESCAPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_NO_CONV", PGSQL_DML_NO_CONV, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_EXEC", PGSQL_DML_EXEC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_ASYNC", PGSQL_DML_ASYNC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PGSQL_DML_STRING", PGSQL_DML_STRING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_DEFAULT", PGSQL_CONV_IGNORE_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONV_FORCE_NULL", PGSQL_CONV_FORCE_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_NOT_NULL", PGSQL_CONV_IGNORE_NOT_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_ESCAPE", PGSQL_DML_ESCAPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_NO_CONV", PGSQL_DML_NO_CONV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_EXEC", PGSQL_DML_EXEC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_ASYNC", PGSQL_DML_ASYNC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PGSQL_DML_STRING", PGSQL_DML_STRING, CONST_PERSISTENT); } static zend_class_entry *register_class_PgSql_Connection(void) diff --git a/ext/phar/phar.c b/ext/phar/phar.c index 6d5790e3089c4..087eae4a6d89f 100644 --- a/ext/phar/phar.c +++ b/ext/phar/phar.c @@ -3565,7 +3565,7 @@ PHP_MINFO_FUNCTION(phar) /* {{{ */ { phar_request_initialize(); php_info_print_table_start(); - php_info_print_table_header(2, "Phar: PHP Archive support", "enabled"); + php_info_print_table_row(2, "Phar: PHP Archive support", "enabled"); php_info_print_table_row(2, "Phar API version", PHP_PHAR_API_VERSION); php_info_print_table_row(2, "Phar-based phar archives", "enabled"); php_info_print_table_row(2, "Tar-based phar archives", "enabled"); diff --git a/ext/posix/posix.c b/ext/posix/posix.c index ed7a93c540996..b462cc8b7ad67 100644 --- a/ext/posix/posix.c +++ b/ext/posix/posix.c @@ -1145,3 +1145,14 @@ PHP_FUNCTION(posix_initgroups) } /* }}} */ #endif + +PHP_FUNCTION(posix_sysconf) +{ + zend_long conf_id; + + ZEND_PARSE_PARAMETERS_START(1, 1) + Z_PARAM_LONG(conf_id) + ZEND_PARSE_PARAMETERS_END(); + + RETURN_LONG(sysconf(conf_id)); +} diff --git a/ext/posix/posix.stub.php b/ext/posix/posix.stub.php index d3df0cd69d4a6..ecb462695ccf4 100644 --- a/ext/posix/posix.stub.php +++ b/ext/posix/posix.stub.php @@ -191,6 +191,34 @@ */ const POSIX_RLIMIT_INFINITY = UNKNOWN; #endif +#ifdef _SC_ARG_MAX +/** + * @var int + * @cvalue _SC_ARG_MAX + */ +const POSIX_SC_ARG_MAX = UNKNOWN; +#endif +#ifdef _SC_PAGESIZE +/** + * @var int + * @cvalue _SC_PAGESIZE + */ +const POSIX_SC_PAGESIZE = UNKNOWN; +#endif +#ifdef _SC_NPROCESSORS_CONF +/** + * @var int + * @cvalue _SC_NPROCESSORS_CONF + */ +const POSIX_SC_NPROCESSORS_CONF = UNKNOWN; +#endif +#ifdef _SC_NPROCESSORS_ONLN +/** + * @var int + * @cvalue _SC_NPROCESSORS_ONLN + */ +const POSIX_SC_NPROCESSORS_ONLN = UNKNOWN; +#endif function posix_kill(int $process_id, int $signal): bool {} @@ -327,3 +355,5 @@ function posix_strerror(int $error_code): string {} #ifdef HAVE_INITGROUPS function posix_initgroups(string $username, int $group_id): bool {} #endif + +function posix_sysconf(int $conf_id): int {} diff --git a/ext/posix/posix_arginfo.h b/ext/posix/posix_arginfo.h index 1f0a243582565..f45e8644b29bc 100644 --- a/ext/posix/posix_arginfo.h +++ b/ext/posix/posix_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: e7f501e4ca2c30f6bf52ea5912037c1e59743949 */ + * Stub hash: 82454cec6f55336a530c23663efeb7ac71932bba */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_posix_kill, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, process_id, IS_LONG, 0) @@ -159,6 +159,10 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_posix_initgroups, 0, 2, _IS_BOOL ZEND_END_ARG_INFO() #endif +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_posix_sysconf, 0, 1, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, conf_id, IS_LONG, 0) +ZEND_END_ARG_INFO() + ZEND_FUNCTION(posix_kill); ZEND_FUNCTION(posix_getpid); @@ -222,6 +226,7 @@ ZEND_FUNCTION(posix_strerror); #if defined(HAVE_INITGROUPS) ZEND_FUNCTION(posix_initgroups); #endif +ZEND_FUNCTION(posix_sysconf); static const zend_function_entry ext_functions[] = { @@ -288,85 +293,98 @@ static const zend_function_entry ext_functions[] = { #if defined(HAVE_INITGROUPS) ZEND_FE(posix_initgroups, arginfo_posix_initgroups) #endif + ZEND_FE(posix_sysconf, arginfo_posix_sysconf) ZEND_FE_END }; static void register_posix_symbols(int module_number) { - REGISTER_LONG_CONSTANT("POSIX_F_OK", F_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("POSIX_X_OK", X_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("POSIX_W_OK", W_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("POSIX_R_OK", R_OK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_F_OK", F_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_X_OK", X_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_W_OK", W_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_R_OK", R_OK, CONST_PERSISTENT); #if defined(S_IFREG) - REGISTER_LONG_CONSTANT("POSIX_S_IFREG", S_IFREG, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_S_IFREG", S_IFREG, CONST_PERSISTENT); #endif #if defined(S_IFCHR) - REGISTER_LONG_CONSTANT("POSIX_S_IFCHR", S_IFCHR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_S_IFCHR", S_IFCHR, CONST_PERSISTENT); #endif #if defined(S_IFBLK) - REGISTER_LONG_CONSTANT("POSIX_S_IFBLK", S_IFBLK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_S_IFBLK", S_IFBLK, CONST_PERSISTENT); #endif #if defined(S_IFIFO) - REGISTER_LONG_CONSTANT("POSIX_S_IFIFO", S_IFIFO, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_S_IFIFO", S_IFIFO, CONST_PERSISTENT); #endif #if defined(S_IFSOCK) - REGISTER_LONG_CONSTANT("POSIX_S_IFSOCK", S_IFSOCK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_S_IFSOCK", S_IFSOCK, CONST_PERSISTENT); #endif #if defined(RLIMIT_AS) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_AS", RLIMIT_AS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_AS", RLIMIT_AS, CONST_PERSISTENT); #endif #if defined(RLIMIT_CORE) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_CORE", RLIMIT_CORE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_CORE", RLIMIT_CORE, CONST_PERSISTENT); #endif #if defined(RLIMIT_CPU) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_CPU", RLIMIT_CPU, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_CPU", RLIMIT_CPU, CONST_PERSISTENT); #endif #if defined(RLIMIT_DATA) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_DATA", RLIMIT_DATA, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_DATA", RLIMIT_DATA, CONST_PERSISTENT); #endif #if defined(RLIMIT_FSIZE) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_FSIZE", RLIMIT_FSIZE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_FSIZE", RLIMIT_FSIZE, CONST_PERSISTENT); #endif #if defined(RLIMIT_LOCKS) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_LOCKS", RLIMIT_LOCKS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_LOCKS", RLIMIT_LOCKS, CONST_PERSISTENT); #endif #if defined(RLIMIT_MEMLOCK) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_MEMLOCK", RLIMIT_MEMLOCK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_MEMLOCK", RLIMIT_MEMLOCK, CONST_PERSISTENT); #endif #if defined(RLIMIT_MSGQUEUE) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_MSGQUEUE", RLIMIT_MSGQUEUE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_MSGQUEUE", RLIMIT_MSGQUEUE, CONST_PERSISTENT); #endif #if defined(RLIMIT_NICE) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NICE", RLIMIT_NICE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NICE", RLIMIT_NICE, CONST_PERSISTENT); #endif #if defined(RLIMIT_NOFILE) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NOFILE", RLIMIT_NOFILE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NOFILE", RLIMIT_NOFILE, CONST_PERSISTENT); #endif #if defined(RLIMIT_NPROC) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NPROC", RLIMIT_NPROC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NPROC", RLIMIT_NPROC, CONST_PERSISTENT); #endif #if defined(RLIMIT_RSS) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_RSS", RLIMIT_RSS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_RSS", RLIMIT_RSS, CONST_PERSISTENT); #endif #if defined(RLIMIT_RTPRIO) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_RTPRIO", RLIMIT_RTPRIO, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_RTPRIO", RLIMIT_RTPRIO, CONST_PERSISTENT); #endif #if defined(RLIMIT_RTTIME) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_RTTIME", RLIMIT_RTTIME, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_RTTIME", RLIMIT_RTTIME, CONST_PERSISTENT); #endif #if defined(RLIMIT_SIGPENDING) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_SIGPENDING", RLIMIT_SIGPENDING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_SIGPENDING", RLIMIT_SIGPENDING, CONST_PERSISTENT); #endif #if defined(RLIMIT_STACK) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_STACK", RLIMIT_STACK, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_STACK", RLIMIT_STACK, CONST_PERSISTENT); #endif #if defined(RLIMIT_KQUEUES) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_KQUEUES", RLIMIT_KQUEUES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_KQUEUES", RLIMIT_KQUEUES, CONST_PERSISTENT); #endif #if defined(RLIMIT_NPTS) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NPTS", RLIMIT_NPTS, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_NPTS", RLIMIT_NPTS, CONST_PERSISTENT); #endif #if defined(HAVE_SETRLIMIT) - REGISTER_LONG_CONSTANT("POSIX_RLIMIT_INFINITY", RLIM_INFINITY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("POSIX_RLIMIT_INFINITY", RLIM_INFINITY, CONST_PERSISTENT); +#endif +#if defined(_SC_ARG_MAX) + REGISTER_LONG_CONSTANT("POSIX_SC_ARG_MAX", _SC_ARG_MAX, CONST_PERSISTENT); +#endif +#if defined(_SC_PAGESIZE) + REGISTER_LONG_CONSTANT("POSIX_SC_PAGESIZE", _SC_PAGESIZE, CONST_PERSISTENT); +#endif +#if defined(_SC_NPROCESSORS_CONF) + REGISTER_LONG_CONSTANT("POSIX_SC_NPROCESSORS_CONF", _SC_NPROCESSORS_CONF, CONST_PERSISTENT); +#endif +#if defined(_SC_NPROCESSORS_ONLN) + REGISTER_LONG_CONSTANT("POSIX_SC_NPROCESSORS_ONLN", _SC_NPROCESSORS_ONLN, CONST_PERSISTENT); #endif } diff --git a/ext/posix/tests/posix_sysconf.phpt b/ext/posix/tests/posix_sysconf.phpt new file mode 100644 index 0000000000000..6acebe1f0e0f3 --- /dev/null +++ b/ext/posix/tests/posix_sysconf.phpt @@ -0,0 +1,14 @@ +--TEST-- +Test posix_sysconf +--EXTENSIONS-- +posix +--FILE-- + +--EXPECTF-- +int(-1) +bool(false) +int(%d) diff --git a/ext/pspell/pspell_arginfo.h b/ext/pspell/pspell_arginfo.h index dcbaba9e10c41..98d09ad038f6e 100644 --- a/ext/pspell/pspell_arginfo.h +++ b/ext/pspell/pspell_arginfo.h @@ -146,10 +146,10 @@ static const zend_function_entry class_PSpell_Config_methods[] = { static void register_pspell_symbols(int module_number) { - REGISTER_LONG_CONSTANT("PSPELL_FAST", PSPELL_FAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PSPELL_NORMAL", PSPELL_NORMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PSPELL_BAD_SPELLERS", PSPELL_BAD_SPELLERS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PSPELL_RUN_TOGETHER", PSPELL_RUN_TOGETHER, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PSPELL_FAST", PSPELL_FAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PSPELL_NORMAL", PSPELL_NORMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PSPELL_BAD_SPELLERS", PSPELL_BAD_SPELLERS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PSPELL_RUN_TOGETHER", PSPELL_RUN_TOGETHER, CONST_PERSISTENT); } static zend_class_entry *register_class_PSpell_Dictionary(void) diff --git a/ext/random/config.m4 b/ext/random/config.m4 index 7bd432c9110c2..a8e6d5a568991 100644 --- a/ext/random/config.m4 +++ b/ext/random/config.m4 @@ -7,7 +7,12 @@ dnl dnl Check for CCRandomGenerateBytes dnl header absent in previous macOs releases dnl -AC_CHECK_HEADERS([CommonCrypto/CommonRandom.h]) +AC_CHECK_HEADERS([CommonCrypto/CommonRandom.h], [], [], +[ + #include + #include + #include +]) dnl dnl Setup extension diff --git a/ext/random/engine_mt19937.c b/ext/random/engine_mt19937.c index d7d355b90d6b4..227c1ac02540d 100644 --- a/ext/random/engine_mt19937.c +++ b/ext/random/engine_mt19937.c @@ -168,11 +168,17 @@ static zend_long range(php_random_status *status, zend_long min, zend_long max) return php_random_range(&php_random_algo_mt19937, status, min, max); } - uint64_t r = php_random_algo_mt19937.generate(status) >> 1; /* Legacy mode deliberately not inside php_mt_rand_range() * to prevent other functions being affected */ - RAND_RANGE_BADSCALING(r, min, max, PHP_MT_RAND_MAX); - return (zend_long) r; + + uint64_t r = php_random_algo_mt19937.generate(status) >> 1; + + /* This is an inlined version of the RAND_RANGE_BADSCALING macro that does not invoke UB when encountering + * (max - min) > ZEND_LONG_MAX. + */ + zend_ulong offset = (double) ( (double) max - min + 1.0) * (r / (PHP_MT_RAND_MAX + 1.0)); + + return (zend_long) (offset + min); } static bool serialize(php_random_status *status, HashTable *data) @@ -197,6 +203,11 @@ static bool unserialize(php_random_status *status, HashTable *data) php_random_status_state_mt19937 *s = status->state; zval *t; + /* Verify the expected number of elements, this implicitly ensures that no additional elements are present. */ + if (zend_hash_num_elements(data) != (MT_N + 2)) { + return false; + } + for (uint32_t i = 0; i < MT_N; i++) { t = zend_hash_index_find(data, i); if (!t || Z_TYPE_P(t) != IS_STRING || Z_STRLEN_P(t) != (2 * sizeof(uint32_t))) { @@ -352,6 +363,12 @@ PHP_METHOD(Random_Engine_Mt19937, __unserialize) Z_PARAM_ARRAY_HT(d); ZEND_PARSE_PARAMETERS_END(); + /* Verify the expected number of elements, this implicitly ensures that no additional elements are present. */ + if (zend_hash_num_elements(d) != 2) { + zend_throw_exception_ex(NULL, 0, "Invalid serialization data for %s object", ZSTR_VAL(engine->std.ce->name)); + RETURN_THROWS(); + } + /* members */ t = zend_hash_index_find(d, 0); if (!t || Z_TYPE_P(t) != IS_ARRAY) { @@ -359,6 +376,10 @@ PHP_METHOD(Random_Engine_Mt19937, __unserialize) RETURN_THROWS(); } object_properties_load(&engine->std, Z_ARRVAL_P(t)); + if (EG(exception)) { + zend_throw_exception_ex(NULL, 0, "Invalid serialization data for %s object", ZSTR_VAL(engine->std.ce->name)); + RETURN_THROWS(); + } /* state */ t = zend_hash_index_find(d, 1); diff --git a/ext/random/engine_pcgoneseq128xslrr64.c b/ext/random/engine_pcgoneseq128xslrr64.c index 41bbdad98a422..243e296bbe890 100644 --- a/ext/random/engine_pcgoneseq128xslrr64.c +++ b/ext/random/engine_pcgoneseq128xslrr64.c @@ -83,6 +83,11 @@ static bool unserialize(php_random_status *status, HashTable *data) uint64_t u[2]; zval *t; + /* Verify the expected number of elements, this implicitly ensures that no additional elements are present. */ + if (zend_hash_num_elements(data) != 2) { + return false; + } + for (uint32_t i = 0; i < 2; i++) { t = zend_hash_index_find(data, i); if (!t || Z_TYPE_P(t) != IS_STRING || Z_STRLEN_P(t) != (2 * sizeof(uint64_t))) { diff --git a/ext/random/engine_xoshiro256starstar.c b/ext/random/engine_xoshiro256starstar.c index 1e48f3470da13..52617adb10565 100644 --- a/ext/random/engine_xoshiro256starstar.c +++ b/ext/random/engine_xoshiro256starstar.c @@ -36,7 +36,7 @@ static inline uint64_t splitmix64(uint64_t *seed) return (r ^ (r >> 31)); } -static inline uint64_t rotl(const uint64_t x, int k) +ZEND_ATTRIBUTE_CONST static inline uint64_t rotl(const uint64_t x, int k) { return (x << k) | (x >> (64 - k)); } @@ -131,6 +131,11 @@ static bool unserialize(php_random_status *status, HashTable *data) php_random_status_state_xoshiro256starstar *s = status->state; zval *t; + /* Verify the expected number of elements, this implicitly ensures that no additional elements are present. */ + if (zend_hash_num_elements(data) != 4) { + return false; + } + for (uint32_t i = 0; i < 4; i++) { t = zend_hash_index_find(data, i); if (!t || Z_TYPE_P(t) != IS_STRING || Z_STRLEN_P(t) != (2 * sizeof(uint64_t))) { @@ -205,10 +210,12 @@ PHP_METHOD(Random_Engine_Xoshiro256StarStar, __construct) ZEND_PARSE_PARAMETERS_END(); if (seed_is_null) { - if (php_random_bytes_throw(&state->state, 32) == FAILURE) { - zend_throw_exception(random_ce_Random_RandomException, "Failed to generate a random seed", 0); - RETURN_THROWS(); - } + do { + if (php_random_bytes_throw(&state->state, 32) == FAILURE) { + zend_throw_exception(random_ce_Random_RandomException, "Failed to generate a random seed", 0); + RETURN_THROWS(); + } + } while (UNEXPECTED(state->state[0] == 0 && state->state[1] == 0 && state->state[2] == 0 && state->state[3] == 0)); } else { if (str_seed) { /* char (byte: 8 bit) * 32 = 256 bits */ @@ -222,6 +229,12 @@ PHP_METHOD(Random_Engine_Xoshiro256StarStar, __construct) t[i] += ((uint64_t) (unsigned char) ZSTR_VAL(str_seed)[(i * 8) + j]) << (j * 8); } } + + if (UNEXPECTED(t[0] == 0 && t[1] == 0 && t[2] == 0 && t[3] == 0)) { + zend_argument_value_error(1, "must not consist entirely of NUL bytes"); + RETURN_THROWS(); + } + seed256(engine->status, t[0], t[1], t[2], t[3]); } else { zend_argument_value_error(1, "must be a 32 byte (256 bit) string"); diff --git a/ext/random/random.c b/ext/random/random.c index ba25e5c04f041..5afc7680d7ddd 100644 --- a/ext/random/random.c +++ b/ext/random/random.c @@ -107,7 +107,7 @@ static inline uint32_t rand_range32(const php_random_algo *algo, php_random_stat /* Special case where no modulus is required */ if (UNEXPECTED(umax == UINT32_MAX)) { - return true; + return result; } /* Increment the max so range is inclusive of max */ @@ -227,8 +227,6 @@ static zend_object *php_random_randomizer_new(zend_class_entry *ce) zend_object_std_init(&randomizer->std, ce); object_properties_init(&randomizer->std, ce); - randomizer->std.handlers = &random_randomizer_object_handlers; - return &randomizer->std; } @@ -313,7 +311,7 @@ PHPAPI zend_long php_random_range(const php_random_algo *algo, php_random_status { zend_ulong umax = (zend_ulong) max - (zend_ulong) min; - if (algo->generate_size == 0 || algo->generate_size > sizeof(uint32_t) || umax > UINT32_MAX) { + if (umax > UINT32_MAX) { return (zend_long) (rand_range64(algo, status, umax) + min); } @@ -880,6 +878,7 @@ PHP_MINIT_FUNCTION(random) /* Random\Randomizer */ random_ce_Random_Randomizer = register_class_Random_Randomizer(); random_ce_Random_Randomizer->create_object = php_random_randomizer_new; + random_ce_Random_Randomizer->default_object_handlers = &random_randomizer_object_handlers; memcpy(&random_randomizer_object_handlers, zend_get_std_object_handlers(), sizeof(zend_object_handlers)); random_randomizer_object_handlers.offset = XtOffsetOf(php_random_randomizer, std); random_randomizer_object_handlers.free_obj = randomizer_free_obj; diff --git a/ext/random/random_arginfo.h b/ext/random/random_arginfo.h index 440e77c62ef45..fc272607360d0 100644 --- a/ext/random/random_arginfo.h +++ b/ext/random/random_arginfo.h @@ -234,8 +234,8 @@ static const zend_function_entry class_Random_RandomException_methods[] = { static void register_random_symbols(int module_number) { - REGISTER_LONG_CONSTANT("MT_RAND_MT19937", MT_RAND_MT19937, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MT_RAND_PHP", MT_RAND_PHP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MT_RAND_MT19937", MT_RAND_MT19937, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MT_RAND_PHP", MT_RAND_PHP, CONST_PERSISTENT); } static zend_class_entry *register_class_Random_Engine_Mt19937(zend_class_entry *class_entry_Random_Engine) diff --git a/ext/random/randomizer.c b/ext/random/randomizer.c index 41be98d266cdd..b66a88169cbe2 100644 --- a/ext/random/randomizer.c +++ b/ext/random/randomizer.c @@ -24,7 +24,6 @@ #include "ext/standard/php_array.h" #include "ext/standard/php_string.h" -#include "ext/spl/spl_exceptions.h" #include "Zend/zend_exceptions.h" static inline void randomizer_common_init(php_random_randomizer *randomizer, zend_object *engine_object) { @@ -91,7 +90,7 @@ PHP_METHOD(Random_Randomizer, __construct) /* {{{ Generate positive random number */ PHP_METHOD(Random_Randomizer, nextInt) -{ +{ php_random_randomizer *randomizer = Z_RANDOM_RANDOMIZER_P(ZEND_THIS); uint64_t result; @@ -102,10 +101,10 @@ PHP_METHOD(Random_Randomizer, nextInt) RETURN_THROWS(); } if (randomizer->status->last_generated_size > sizeof(zend_long)) { - zend_throw_exception(spl_ce_RuntimeException, "Generated value exceeds size of int", 0); + zend_throw_exception(random_ce_Random_RandomException, "Generated value exceeds size of int", 0); RETURN_THROWS(); } - + RETURN_LONG((zend_long) (result >> 1)); } /* }}} */ @@ -273,12 +272,22 @@ PHP_METHOD(Random_Randomizer, __unserialize) Z_PARAM_ARRAY_HT(d); ZEND_PARSE_PARAMETERS_END(); + /* Verify the expected number of elements, this implicitly ensures that no additional elements are present. */ + if (zend_hash_num_elements(d) != 1) { + zend_throw_exception(NULL, "Invalid serialization data for Random\\Randomizer object", 0); + RETURN_THROWS(); + } + members_zv = zend_hash_index_find(d, 0); if (!members_zv || Z_TYPE_P(members_zv) != IS_ARRAY) { zend_throw_exception(NULL, "Invalid serialization data for Random\\Randomizer object", 0); RETURN_THROWS(); } object_properties_load(&randomizer->std, Z_ARRVAL_P(members_zv)); + if (EG(exception)) { + zend_throw_exception(NULL, "Invalid serialization data for Random\\Randomizer object", 0); + RETURN_THROWS(); + } zengine = zend_read_property(randomizer->std.ce, &randomizer->std, "engine", strlen("engine"), 1, NULL); if (Z_TYPE_P(zengine) != IS_OBJECT || !instanceof_function(Z_OBJCE_P(zengine), random_ce_Random_Engine)) { diff --git a/ext/random/tests/02_engine/all_serialize_error.phpt b/ext/random/tests/02_engine/all_serialize_error.phpt index adafe53e2653b..0569415145665 100644 --- a/ext/random/tests/02_engine/all_serialize_error.phpt +++ b/ext/random/tests/02_engine/all_serialize_error.phpt @@ -3,63 +3,79 @@ Random: Engine: serialize error pattern --FILE-- getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; } // invalid hex try { - unserialize('O:21:"Random\Engine\Mt19937":2:{i:0;a:0:{}i:1;a:626:{i:0;s:8:"5aa6b98g";i:1;s:8:"8660cc14";i:2;s:8:"c0b631ca";i:3;s:8:"e85464ad";i:4;s:8:"70fa6108";i:5;s:8:"c5ed9c3c";i:6;s:8:"b05b7ff1";i:7;s:8:"faf33a3a";i:8;s:8:"ab7c0e61";i:9;s:8:"2d4c9c37";i:10;s:8:"daffe918";i:11;s:8:"644f25b9";i:12;s:8:"fdb352e5";i:13;s:8:"434dafa9";i:14;s:8:"a3c9826e";i:15;s:8:"923dfd8c";i:16;s:8:"f641a225";i:17;s:8:"d87134b3";i:18;s:8:"c3b7926e";i:19;s:8:"c880b60d";i:20;s:8:"975f362d";i:21;s:8:"48192b77";i:22;s:8:"6f7dd08b";i:23;s:8:"7d4ad4f8";i:24;s:8:"d805b910";i:25;s:8:"8c98b365";i:26;s:8:"89e54af9";i:27;s:8:"e5257a3c";i:28;s:8:"8f596624";i:29;s:8:"3f42f88a";i:30;s:8:"6a7e95cc";i:31;s:8:"e1349e4d";i:32;s:8:"4539bc92";i:33;s:8:"045a3148";i:34;s:8:"c27cf7b9";i:35;s:8:"c64e8009";i:36;s:8:"dc5ed02e";i:37;s:8:"5753c741";i:38;s:8:"50be0a82";i:39;s:8:"822da0ee";i:40;s:8:"42fdb3c6";i:41;s:8:"c668fc80";i:42;s:8:"262376c6";i:43;s:8:"17b998c6";i:44;s:8:"1f3aac02";i:45;s:8:"6f939c7e";i:46;s:8:"21c099f4";i:47;s:8:"0f4b5c76";i:48;s:8:"64799ac0";i:49;s:8:"45d3bb99";i:50;s:8:"8ff3eb79";i:51;s:8:"61996264";i:52;s:8:"2b9ab1f4";i:53;s:8:"a0d0c50f";i:54;s:8:"f08713ce";i:55;s:8:"6b1cf9d8";i:56;s:8:"52d92cc5";i:57;s:8:"34bcec6f";i:58;s:8:"83ffa063";i:59;s:8:"a002321d";i:60;s:8:"386c46d9";i:61;s:8:"45e2c63e";i:62;s:8:"f481bdf4";i:63;s:8:"df58facb";i:64;s:8:"1781e49b";i:65;s:8:"1d968a6b";i:66;s:8:"8aa7fdd2";i:67;s:8:"631ac8cd";i:68;s:8:"8090ff8e";i:69;s:8:"4ddd4a5d";i:70;s:8:"ff6d8193";i:71;s:8:"39e18244";i:72;s:8:"4efe15db";i:73;s:8:"3fe64cd5";i:74;s:8:"e693a97f";i:75;s:8:"807a34e9";i:76;s:8:"6dc16ae7";i:77;s:8:"a1e1ed1d";i:78;s:8:"605bdc86";i:79;s:8:"abb1830e";i:80;s:8:"2baabeda";i:81;s:8:"fc0f66ad";i:82;s:8:"9cf4fb96";i:83;s:8:"b50ff764";i:84;s:8:"67c37a3d";i:85;s:8:"15253035";i:86;s:8:"387fce47";i:87;s:8:"5c3299a5";i:88;s:8:"125602b9";i:89;s:8:"daeb445c";i:90;s:8:"289e5a8d";i:91;s:8:"b47cd48c";i:92;s:8:"8664db23";i:93;s:8:"b9352af8";i:94;s:8:"51684d88";i:95;s:8:"b204cbc9";i:96;s:8:"e1b6becc";i:97;s:8:"dbbe0ee6";i:98;s:8:"89e54027";i:99;s:8:"a6512564";i:100;s:8:"3aab8d17";i:101;s:8:"7cab5272";i:102;s:8:"1804e981";i:103;s:8:"0bfebe2c";i:104;s:8:"7c082a4c";i:105;s:8:"06bc80c3";i:106;s:8:"c63db839";i:107;s:8:"59edb59d";i:108;s:8:"b52d9655";i:109;s:8:"efce041b";i:110;s:8:"57c1f890";i:111;s:8:"15499697";i:112;s:8:"e0ad3e3a";i:113;s:8:"408d4c16";i:114;s:8:"e53cf468";i:115;s:8:"6ea3d84f";i:116;s:8:"0a2bc4f2";i:117;s:8:"27b59259";i:118;s:8:"d223514b";i:119;s:8:"434c4185";i:120;s:8:"999c71df";i:121;s:8:"46134706";i:122;s:8:"f7f048d0";i:123;s:8:"7f5cfe34";i:124;s:8:"9bdc475c";i:125;s:8:"c1cf42ea";i:126;s:8:"65be324b";i:127;s:8:"68c7a1dc";i:128;s:8:"a7c8c5a2";i:129;s:8:"ecc4cd8a";i:130;s:8:"a761615c";i:131;s:8:"718ec534";i:132;s:8:"c8b086fc";i:133;s:8:"ead759f9";i:134;s:8:"eb9df4a0";i:135;s:8:"ec5b25f9";i:136;s:8:"3a6ff94e";i:137;s:8:"4511a3de";i:138;s:8:"9034f1c6";i:139;s:8:"5c1c6d14";i:140;s:8:"a228ed46";i:141;s:8:"ffe19f2f";i:142;s:8:"f21f68cf";i:143;s:8:"6c2235a4";i:144;s:8:"e0aed51a";i:145;s:8:"2ade527b";i:146;s:8:"65f3c758";i:147;s:8:"f6e868b7";i:148;s:8:"49b770a5";i:149;s:8:"48ab9158";i:150;s:8:"ab07a671";i:151;s:8:"4ef74251";i:152;s:8:"f4cad644";i:153;s:8:"1576c59e";i:154;s:8:"3882bbd1";i:155;s:8:"e49f32c0";i:156;s:8:"c67b757c";i:157;s:8:"3528c5d8";i:158;s:8:"371c3e34";i:159;s:8:"7f1d614f";i:160;s:8:"b9e19e66";i:161;s:8:"80a1d97f";i:162;s:8:"7f93c9f3";i:163;s:8:"4e82ea48";i:164;s:8:"9675e170";i:165;s:8:"aa54caef";i:166;s:8:"3bb9838e";i:167;s:8:"9c0d0a2b";i:168;s:8:"2595d91f";i:169;s:8:"84cc7ff2";i:170;s:8:"9457c4ee";i:171;s:8:"405b6bc8";i:172;s:8:"5aa668a4";i:173;s:8:"e94dfca2";i:174;s:8:"89c0d739";i:175;s:8:"459f8eb3";i:176;s:8:"76b95b42";i:177;s:8:"0e5ceafb";i:178;s:8:"55d4eaee";i:179;s:8:"a55a4784";i:180;s:8:"8c23e133";i:181;s:8:"0994f794";i:182;s:8:"a8d4d1b7";i:183;s:8:"0a50b177";i:184;s:8:"65409f44";i:185;s:8:"acf34e81";i:186;s:8:"e32f278e";i:187;s:8:"7aa21660";i:188;s:8:"9da66881";i:189;s:8:"5c4df7c5";i:190;s:8:"b21f8a4e";i:191;s:8:"d2cc6756";i:192;s:8:"8716f97d";i:193;s:8:"aabd84c5";i:194;s:8:"2e0a965a";i:195;s:8:"b4acc29c";i:196;s:8:"ed3be992";i:197;s:8:"867d9400";i:198;s:8:"a696ba3e";i:199;s:8:"8e2af3d9";i:200;s:8:"8fd95ea9";i:201;s:8:"930903d8";i:202;s:8:"4508dbb1";i:203;s:8:"80598d21";i:204;s:8:"df87fb74";i:205;s:8:"9d019d24";i:206;s:8:"05d5ce2e";i:207;s:8:"ed69bcfe";i:208;s:8:"f83a8d70";i:209;s:8:"750b10bd";i:210;s:8:"c0df892c";i:211;s:8:"df41f215";i:212;s:8:"03df46e3";i:213;s:8:"4e6dce66";i:214;s:8:"ea45a428";i:215;s:8:"cbbf3ff6";i:216;s:8:"f931c7b2";i:217;s:8:"80d19eab";i:218;s:8:"0e2c13da";i:219;s:8:"4b99ee8b";i:220;s:8:"2311d69e";i:221;s:8:"ca9050a7";i:222;s:8:"a4d9eec1";i:223;s:8:"ee665c77";i:224;s:8:"0714f961";i:225;s:8:"81f5be46";i:226;s:8:"420ea4bf";i:227;s:8:"281c28f0";i:228;s:8:"9936ab3f";i:229;s:8:"e4ca8936";i:230;s:8:"224d247b";i:231;s:8:"a564dffe";i:232;s:8:"d15045d2";i:233;s:8:"97d01e8f";i:234;s:8:"71793232";i:235;s:8:"43fe461e";i:236;s:8:"3b50916b";i:237;s:8:"ff242439";i:238;s:8:"a748a0a9";i:239;s:8:"ff51a2a6";i:240;s:8:"dec0ad0d";i:241;s:8:"4bcf2a2e";i:242;s:8:"2be6a97f";i:243;s:8:"eb3e636a";i:244;s:8:"81e31d64";i:245;s:8:"6ca4db9d";i:246;s:8:"bc5bd290";i:247;s:8:"ed2d2ba4";i:248;s:8:"00c46d55";i:249;s:8:"27578407";i:250;s:8:"bedbbcd8";i:251;s:8:"18172abc";i:252;s:8:"eaa5b9cf";i:253;s:8:"9e87ab84";i:254;s:8:"a0e2741c";i:255;s:8:"3bb931ae";i:256;s:8:"3a7b75cd";i:257;s:8:"1052cbf5";i:258;s:8:"b7afd060";i:259;s:8:"1d143d51";i:260;s:8:"17fb7422";i:261;s:8:"523fd346";i:262;s:8:"50429afd";i:263;s:8:"308ece7b";i:264;s:8:"285aa5c1";i:265;s:8:"d8afd736";i:266;s:8:"2e30512e";i:267;s:8:"af78ce36";i:268;s:8:"5967e738";i:269;s:8:"e19795de";i:270;s:8:"6d416e39";i:271;s:8:"23570261";i:272;s:8:"23106924";i:273;s:8:"a4b9add9";i:274;s:8:"baa83e79";i:275;s:8:"97ca48d3";i:276;s:8:"f369a004";i:277;s:8:"fa521bf6";i:278;s:8:"312e9e5e";i:279;s:8:"3acdb850";i:280;s:8:"485cbad7";i:281;s:8:"ddc2d365";i:282;s:8:"d8b87c13";i:283;s:8:"51f6aa7a";i:284;s:8:"b1c231ce";i:285;s:8:"926b9e57";i:286;s:8:"32bd5241";i:287;s:8:"b72cf0a0";i:288;s:8:"0cd99f51";i:289;s:8:"80815c0e";i:290;s:8:"a3459115";i:291;s:8:"5bb05439";i:292;s:8:"ee67a282";i:293;s:8:"65e533c5";i:294;s:8:"62e57b7a";i:295;s:8:"0f4a42fe";i:296;s:8:"ff5b8045";i:297;s:8:"cb9d60cf";i:298;s:8:"ffc891cd";i:299;s:8:"514d6027";i:300;s:8:"5b92df3b";i:301;s:8:"1fb47b1a";i:302;s:8:"a2382db8";i:303;s:8:"6f8b23cd";i:304;s:8:"db72737a";i:305;s:8:"d2d5022b";i:306;s:8:"eef762a7";i:307;s:8:"771fc2ed";i:308;s:8:"6581afb1";i:309;s:8:"64d7ffbd";i:310;s:8:"93a15a65";i:311;s:8:"fdc8b81b";i:312;s:8:"6369357b";i:313;s:8:"a8a58d2e";i:314;s:8:"d9ab2ed6";i:315;s:8:"0465340d";i:316;s:8:"eed4e3f1";i:317;s:8:"7e15ef9d";i:318;s:8:"99444e57";i:319;s:8:"959a6881";i:320;s:8:"e7498e10";i:321;s:8:"d7d0699e";i:322;s:8:"12372566";i:323;s:8:"b9f97c89";i:324;s:8:"5e688172";i:325;s:8:"8105e3b8";i:326;s:8:"627e9227";i:327;s:8:"67edb47d";i:328;s:8:"74e69d5f";i:329;s:8:"b8c5df2c";i:330;s:8:"14f06e80";i:331;s:8:"1a0af27f";i:332;s:8:"fa6ad68b";i:333;s:8:"d5938b0d";i:334;s:8:"2df9b8cc";i:335;s:8:"d90bd16c";i:336;s:8:"18779d24";i:337;s:8:"e1b81866";i:338;s:8:"dc51e106";i:339;s:8:"5078c0ce";i:340;s:8:"8fde3be3";i:341;s:8:"85939b08";i:342;s:8:"50f5565d";i:343;s:8:"281ec5f0";i:344;s:8:"ee2c4dfb";i:345;s:8:"89df2863";i:346;s:8:"0444ef85";i:347;s:8:"d52671b6";i:348;s:8:"84695c5d";i:349;s:8:"ceb19fc9";i:350;s:8:"8cd19595";i:351;s:8:"9773504b";i:352;s:8:"72031351";i:353;s:8:"285de56c";i:354;s:8:"08d949a1";i:355;s:8:"d1d24d60";i:356;s:8:"41c57eff";i:357;s:8:"ded22dfc";i:358;s:8:"9f799eb2";i:359;s:8:"ac14c164";i:360;s:8:"23ab3dac";i:361;s:8:"76de10e0";i:362;s:8:"72c2ac0b";i:363;s:8:"cce93127";i:364;s:8:"32bbb7e5";i:365;s:8:"b8af671a";i:366;s:8:"24dfc65a";i:367;s:8:"d7c8431f";i:368;s:8:"5cf3dffd";i:369;s:8:"7a93645c";i:370;s:8:"36bb66f8";i:371;s:8:"dc055709";i:372;s:8:"93c58efc";i:373;s:8:"11b9a1e6";i:374;s:8:"e487f36b";i:375;s:8:"7c3bcb46";i:376;s:8:"e4d724a3";i:377;s:8:"b732d653";i:378;s:8:"afc9c219";i:379;s:8:"ea658830";i:380;s:8:"b9052af6";i:381;s:8:"aa46a473";i:382;s:8:"1b37a35e";i:383;s:8:"0ba14ee9";i:384;s:8:"c7e150ac";i:385;s:8:"055ffa96";i:386;s:8:"e2bf88fb";i:387;s:8:"88f1f936";i:388;s:8:"488c7bdb";i:389;s:8:"a9dacbd1";i:390;s:8:"aaeea26f";i:391;s:8:"237af1cb";i:392;s:8:"e3dbdb50";i:393;s:8:"c8e5949e";i:394;s:8:"e70a989a";i:395;s:8:"fa540d6d";i:396;s:8:"f055b2f2";i:397;s:8:"1fc8acd4";i:398;s:8:"accb1a9b";i:399;s:8:"bedfb89c";i:400;s:8:"3d243ec0";i:401;s:8:"d2f3f2d8";i:402;s:8:"d83e7c53";i:403;s:8:"4f12e12d";i:404;s:8:"f48f33d1";i:405;s:8:"9555d943";i:406;s:8:"db853a55";i:407;s:8:"506a95b4";i:408;s:8:"408155d1";i:409;s:8:"32a384a0";i:410;s:8:"21c34eb4";i:411;s:8:"93e2e1ae";i:412;s:8:"88582a10";i:413;s:8:"1f065648";i:414;s:8:"96c3c81b";i:415;s:8:"412bc358";i:416;s:8:"11a4e990";i:417;s:8:"805ead73";i:418;s:8:"ec8ca56e";i:419;s:8:"a2ed4bdc";i:420;s:8:"ac408a10";i:421;s:8:"4ca98f96";i:422;s:8:"0686b6df";i:423;s:8:"9e9f7ae4";i:424;s:8:"07d5f658";i:425;s:8:"1c121a0c";i:426;s:8:"c11c8e82";i:427;s:8:"13f2c6d7";i:428;s:8:"e9f6ad9c";i:429;s:8:"bc1dc285";i:430;s:8:"e271fe4b";i:431;s:8:"34114ee5";i:432;s:8:"92ad1c39";i:433;s:8:"5ab5504b";i:434;s:8:"4f7118a7";i:435;s:8:"d1ceec2f";i:436;s:8:"adfd7622";i:437;s:8:"f4f4a9c0";i:438;s:8:"2d4f21e3";i:439;s:8:"3b4bed9e";i:440;s:8:"42ac5810";i:441;s:8:"7eae8db5";i:442;s:8:"09dc329e";i:443;s:8:"3c723314";i:444;s:8:"7fb50c08";i:445;s:8:"71fd69dd";i:446;s:8:"013ce542";i:447;s:8:"0add0d73";i:448;s:8:"465d495a";i:449;s:8:"9f8ddb9d";i:450;s:8:"f293e79e";i:451;s:8:"d6f59d72";i:452;s:8:"ac22e38f";i:453;s:8:"e96d5751";i:454;s:8:"fba79717";i:455;s:8:"39fedf2f";i:456;s:8:"3fb25196";i:457;s:8:"fcdaa825";i:458;s:8:"9a960022";i:459;s:8:"5371af3d";i:460;s:8:"df7faf0a";i:461;s:8:"82c22c85";i:462;s:8:"dfbbae9f";i:463;s:8:"403a4b84";i:464;s:8:"bc938282";i:465;s:8:"d2355fbc";i:466;s:8:"8d72b179";i:467;s:8:"dced02b2";i:468;s:8:"227b82e3";i:469;s:8:"24c60db6";i:470;s:8:"45092b73";i:471;s:8:"767c0e1d";i:472;s:8:"7eb5c592";i:473;s:8:"d0b356d9";i:474;s:8:"dc95ee45";i:475;s:8:"39aa5820";i:476;s:8:"9e6e1868";i:477;s:8:"ffe72d78";i:478;s:8:"82ae0503";i:479;s:8:"2ea981ad";i:480;s:8:"6935faba";i:481;s:8:"69c2ba98";i:482;s:8:"69dd219f";i:483;s:8:"860e0d0d";i:484;s:8:"5f451aa3";i:485;s:8:"a9d5f07d";i:486;s:8:"ec623682";i:487;s:8:"04d8adba";i:488;s:8:"717e8c76";i:489;s:8:"f9c1fb75";i:490;s:8:"ab4c9e06";i:491;s:8:"3895ef4d";i:492;s:8:"37c09060";i:493;s:8:"f3b7c652";i:494;s:8:"74dc421e";i:495;s:8:"97d458be";i:496;s:8:"1a1ddea1";i:497;s:8:"001c68ad";i:498;s:8:"680f033f";i:499;s:8:"b2e9bd38";i:500;s:8:"54192958";i:501;s:8:"b6dd0693";i:502;s:8:"9d149906";i:503;s:8:"9ba5479a";i:504;s:8:"18ba25e8";i:505;s:8:"16fa3e51";i:506;s:8:"1e74b698";i:507;s:8:"c5932028";i:508;s:8:"5a6cf6cd";i:509;s:8:"6fa90e13";i:510;s:8:"bcabdecb";i:511;s:8:"ae23af9a";i:512;s:8:"76b297eb";i:513;s:8:"d1332632";i:514;s:8:"693a55c3";i:515;s:8:"7c4beb9b";i:516;s:8:"409a0a15";i:517;s:8:"60f68335";i:518;s:8:"febcb934";i:519;s:8:"f32c6f8c";i:520;s:8:"aacacf0d";i:521;s:8:"d1f56e99";i:522;s:8:"d65bcf00";i:523;s:8:"361c9633";i:524;s:8:"cd34d7f4";i:525;s:8:"37d38e62";i:526;s:8:"942dee9d";i:527;s:8:"f41c9445";i:528;s:8:"7e9a8b5d";i:529;s:8:"4b941ed7";i:530;s:8:"c6256dce";i:531;s:8:"6c285146";i:532;s:8:"5920147e";i:533;s:8:"934d59ed";i:534;s:8:"5f400a1d";i:535;s:8:"1a5de58c";i:536;s:8:"11e601de";i:537;s:8:"cf4da287";i:538;s:8:"756a54e4";i:539;s:8:"9f2b1015";i:540;s:8:"3a3df642";i:541;s:8:"5d024d64";i:542;s:8:"2d617393";i:543;s:8:"e1b4ec53";i:544;s:8:"24996b5e";i:545;s:8:"7a271bf1";i:546;s:8:"68d7da60";i:547;s:8:"06d3bc73";i:548;s:8:"f21095f7";i:549;s:8:"93e6bfd9";i:550;s:8:"e80b015b";i:551;s:8:"4ddd4ede";i:552;s:8:"cec3d813";i:553;s:8:"281f2a65";i:554;s:8:"ffa068fb";i:555;s:8:"60e712e7";i:556;s:8:"4abcecac";i:557;s:8:"eef01060";i:558;s:8:"8e79e897";i:559;s:8:"b0cd39fe";i:560;s:8:"28cc9604";i:561;s:8:"c7bd58e0";i:562;s:8:"c73b1765";i:563;s:8:"e87d5e07";i:564;s:8:"03b7710d";i:565;s:8:"5f64c5dc";i:566;s:8:"4ae7b6f1";i:567;s:8:"401b9876";i:568;s:8:"9a162522";i:569;s:8:"2a1d6390";i:570;s:8:"c115eeff";i:571;s:8:"e549f7df";i:572;s:8:"a159c579";i:573;s:8:"48a44ff6";i:574;s:8:"e65fd1fc";i:575;s:8:"bb74cd7b";i:576;s:8:"87cc0383";i:577;s:8:"052755ee";i:578;s:8:"eba29b21";i:579;s:8:"88e2efa9";i:580;s:8:"a1a521b9";i:581;s:8:"ffb6f27b";i:582;s:8:"4fea3248";i:583;s:8:"0f46ad03";i:584;s:8:"58902f76";i:585;s:8:"cfb3f87e";i:586;s:8:"efb3d85c";i:587;s:8:"1e0f4648";i:588;s:8:"f95eda47";i:589;s:8:"c5220b0b";i:590;s:8:"e6574ef8";i:591;s:8:"f34b162e";i:592;s:8:"09b08b14";i:593;s:8:"dae53353";i:594;s:8:"ccc600dd";i:595;s:8:"b3ae8f4f";i:596;s:8:"daed379c";i:597;s:8:"113f5973";i:598;s:8:"6a66bb0a";i:599;s:8:"697817f3";i:600;s:8:"00b78167";i:601;s:8:"1e7c2ed9";i:602;s:8:"65f8a3c5";i:603;s:8:"c50f5c14";i:604;s:8:"a1665ca7";i:605;s:8:"d31c5017";i:606;s:8:"2e421193";i:607;s:8:"cb8d29a9";i:608;s:8:"fa9723b5";i:609;s:8:"8a4d18e4";i:610;s:8:"88081a19";i:611;s:8:"242623e4";i:612;s:8:"86202155";i:613;s:8:"ab55982f";i:614;s:8:"f1a3c261";i:615;s:8:"c44eaa91";i:616;s:8:"06c4716f";i:617;s:8:"60a25216";i:618;s:8:"dcce86a3";i:619;s:8:"bfcec0cd";i:620;s:8:"fb4170ed";i:621;s:8:"9bf5e563";i:622;s:8:"04fa51af";i:623;s:8:"dd86eeb1";i:624;i:0;i:625;i:0;}}'); + var_dump(unserialize('O:21:"Random\Engine\Mt19937":2:{i:0;a:0:{}i:1;a:626:{i:0;s:8:"5aa6b98g";i:1;s:8:"8660cc14";i:2;s:8:"c0b631ca";i:3;s:8:"e85464ad";i:4;s:8:"70fa6108";i:5;s:8:"c5ed9c3c";i:6;s:8:"b05b7ff1";i:7;s:8:"faf33a3a";i:8;s:8:"ab7c0e61";i:9;s:8:"2d4c9c37";i:10;s:8:"daffe918";i:11;s:8:"644f25b9";i:12;s:8:"fdb352e5";i:13;s:8:"434dafa9";i:14;s:8:"a3c9826e";i:15;s:8:"923dfd8c";i:16;s:8:"f641a225";i:17;s:8:"d87134b3";i:18;s:8:"c3b7926e";i:19;s:8:"c880b60d";i:20;s:8:"975f362d";i:21;s:8:"48192b77";i:22;s:8:"6f7dd08b";i:23;s:8:"7d4ad4f8";i:24;s:8:"d805b910";i:25;s:8:"8c98b365";i:26;s:8:"89e54af9";i:27;s:8:"e5257a3c";i:28;s:8:"8f596624";i:29;s:8:"3f42f88a";i:30;s:8:"6a7e95cc";i:31;s:8:"e1349e4d";i:32;s:8:"4539bc92";i:33;s:8:"045a3148";i:34;s:8:"c27cf7b9";i:35;s:8:"c64e8009";i:36;s:8:"dc5ed02e";i:37;s:8:"5753c741";i:38;s:8:"50be0a82";i:39;s:8:"822da0ee";i:40;s:8:"42fdb3c6";i:41;s:8:"c668fc80";i:42;s:8:"262376c6";i:43;s:8:"17b998c6";i:44;s:8:"1f3aac02";i:45;s:8:"6f939c7e";i:46;s:8:"21c099f4";i:47;s:8:"0f4b5c76";i:48;s:8:"64799ac0";i:49;s:8:"45d3bb99";i:50;s:8:"8ff3eb79";i:51;s:8:"61996264";i:52;s:8:"2b9ab1f4";i:53;s:8:"a0d0c50f";i:54;s:8:"f08713ce";i:55;s:8:"6b1cf9d8";i:56;s:8:"52d92cc5";i:57;s:8:"34bcec6f";i:58;s:8:"83ffa063";i:59;s:8:"a002321d";i:60;s:8:"386c46d9";i:61;s:8:"45e2c63e";i:62;s:8:"f481bdf4";i:63;s:8:"df58facb";i:64;s:8:"1781e49b";i:65;s:8:"1d968a6b";i:66;s:8:"8aa7fdd2";i:67;s:8:"631ac8cd";i:68;s:8:"8090ff8e";i:69;s:8:"4ddd4a5d";i:70;s:8:"ff6d8193";i:71;s:8:"39e18244";i:72;s:8:"4efe15db";i:73;s:8:"3fe64cd5";i:74;s:8:"e693a97f";i:75;s:8:"807a34e9";i:76;s:8:"6dc16ae7";i:77;s:8:"a1e1ed1d";i:78;s:8:"605bdc86";i:79;s:8:"abb1830e";i:80;s:8:"2baabeda";i:81;s:8:"fc0f66ad";i:82;s:8:"9cf4fb96";i:83;s:8:"b50ff764";i:84;s:8:"67c37a3d";i:85;s:8:"15253035";i:86;s:8:"387fce47";i:87;s:8:"5c3299a5";i:88;s:8:"125602b9";i:89;s:8:"daeb445c";i:90;s:8:"289e5a8d";i:91;s:8:"b47cd48c";i:92;s:8:"8664db23";i:93;s:8:"b9352af8";i:94;s:8:"51684d88";i:95;s:8:"b204cbc9";i:96;s:8:"e1b6becc";i:97;s:8:"dbbe0ee6";i:98;s:8:"89e54027";i:99;s:8:"a6512564";i:100;s:8:"3aab8d17";i:101;s:8:"7cab5272";i:102;s:8:"1804e981";i:103;s:8:"0bfebe2c";i:104;s:8:"7c082a4c";i:105;s:8:"06bc80c3";i:106;s:8:"c63db839";i:107;s:8:"59edb59d";i:108;s:8:"b52d9655";i:109;s:8:"efce041b";i:110;s:8:"57c1f890";i:111;s:8:"15499697";i:112;s:8:"e0ad3e3a";i:113;s:8:"408d4c16";i:114;s:8:"e53cf468";i:115;s:8:"6ea3d84f";i:116;s:8:"0a2bc4f2";i:117;s:8:"27b59259";i:118;s:8:"d223514b";i:119;s:8:"434c4185";i:120;s:8:"999c71df";i:121;s:8:"46134706";i:122;s:8:"f7f048d0";i:123;s:8:"7f5cfe34";i:124;s:8:"9bdc475c";i:125;s:8:"c1cf42ea";i:126;s:8:"65be324b";i:127;s:8:"68c7a1dc";i:128;s:8:"a7c8c5a2";i:129;s:8:"ecc4cd8a";i:130;s:8:"a761615c";i:131;s:8:"718ec534";i:132;s:8:"c8b086fc";i:133;s:8:"ead759f9";i:134;s:8:"eb9df4a0";i:135;s:8:"ec5b25f9";i:136;s:8:"3a6ff94e";i:137;s:8:"4511a3de";i:138;s:8:"9034f1c6";i:139;s:8:"5c1c6d14";i:140;s:8:"a228ed46";i:141;s:8:"ffe19f2f";i:142;s:8:"f21f68cf";i:143;s:8:"6c2235a4";i:144;s:8:"e0aed51a";i:145;s:8:"2ade527b";i:146;s:8:"65f3c758";i:147;s:8:"f6e868b7";i:148;s:8:"49b770a5";i:149;s:8:"48ab9158";i:150;s:8:"ab07a671";i:151;s:8:"4ef74251";i:152;s:8:"f4cad644";i:153;s:8:"1576c59e";i:154;s:8:"3882bbd1";i:155;s:8:"e49f32c0";i:156;s:8:"c67b757c";i:157;s:8:"3528c5d8";i:158;s:8:"371c3e34";i:159;s:8:"7f1d614f";i:160;s:8:"b9e19e66";i:161;s:8:"80a1d97f";i:162;s:8:"7f93c9f3";i:163;s:8:"4e82ea48";i:164;s:8:"9675e170";i:165;s:8:"aa54caef";i:166;s:8:"3bb9838e";i:167;s:8:"9c0d0a2b";i:168;s:8:"2595d91f";i:169;s:8:"84cc7ff2";i:170;s:8:"9457c4ee";i:171;s:8:"405b6bc8";i:172;s:8:"5aa668a4";i:173;s:8:"e94dfca2";i:174;s:8:"89c0d739";i:175;s:8:"459f8eb3";i:176;s:8:"76b95b42";i:177;s:8:"0e5ceafb";i:178;s:8:"55d4eaee";i:179;s:8:"a55a4784";i:180;s:8:"8c23e133";i:181;s:8:"0994f794";i:182;s:8:"a8d4d1b7";i:183;s:8:"0a50b177";i:184;s:8:"65409f44";i:185;s:8:"acf34e81";i:186;s:8:"e32f278e";i:187;s:8:"7aa21660";i:188;s:8:"9da66881";i:189;s:8:"5c4df7c5";i:190;s:8:"b21f8a4e";i:191;s:8:"d2cc6756";i:192;s:8:"8716f97d";i:193;s:8:"aabd84c5";i:194;s:8:"2e0a965a";i:195;s:8:"b4acc29c";i:196;s:8:"ed3be992";i:197;s:8:"867d9400";i:198;s:8:"a696ba3e";i:199;s:8:"8e2af3d9";i:200;s:8:"8fd95ea9";i:201;s:8:"930903d8";i:202;s:8:"4508dbb1";i:203;s:8:"80598d21";i:204;s:8:"df87fb74";i:205;s:8:"9d019d24";i:206;s:8:"05d5ce2e";i:207;s:8:"ed69bcfe";i:208;s:8:"f83a8d70";i:209;s:8:"750b10bd";i:210;s:8:"c0df892c";i:211;s:8:"df41f215";i:212;s:8:"03df46e3";i:213;s:8:"4e6dce66";i:214;s:8:"ea45a428";i:215;s:8:"cbbf3ff6";i:216;s:8:"f931c7b2";i:217;s:8:"80d19eab";i:218;s:8:"0e2c13da";i:219;s:8:"4b99ee8b";i:220;s:8:"2311d69e";i:221;s:8:"ca9050a7";i:222;s:8:"a4d9eec1";i:223;s:8:"ee665c77";i:224;s:8:"0714f961";i:225;s:8:"81f5be46";i:226;s:8:"420ea4bf";i:227;s:8:"281c28f0";i:228;s:8:"9936ab3f";i:229;s:8:"e4ca8936";i:230;s:8:"224d247b";i:231;s:8:"a564dffe";i:232;s:8:"d15045d2";i:233;s:8:"97d01e8f";i:234;s:8:"71793232";i:235;s:8:"43fe461e";i:236;s:8:"3b50916b";i:237;s:8:"ff242439";i:238;s:8:"a748a0a9";i:239;s:8:"ff51a2a6";i:240;s:8:"dec0ad0d";i:241;s:8:"4bcf2a2e";i:242;s:8:"2be6a97f";i:243;s:8:"eb3e636a";i:244;s:8:"81e31d64";i:245;s:8:"6ca4db9d";i:246;s:8:"bc5bd290";i:247;s:8:"ed2d2ba4";i:248;s:8:"00c46d55";i:249;s:8:"27578407";i:250;s:8:"bedbbcd8";i:251;s:8:"18172abc";i:252;s:8:"eaa5b9cf";i:253;s:8:"9e87ab84";i:254;s:8:"a0e2741c";i:255;s:8:"3bb931ae";i:256;s:8:"3a7b75cd";i:257;s:8:"1052cbf5";i:258;s:8:"b7afd060";i:259;s:8:"1d143d51";i:260;s:8:"17fb7422";i:261;s:8:"523fd346";i:262;s:8:"50429afd";i:263;s:8:"308ece7b";i:264;s:8:"285aa5c1";i:265;s:8:"d8afd736";i:266;s:8:"2e30512e";i:267;s:8:"af78ce36";i:268;s:8:"5967e738";i:269;s:8:"e19795de";i:270;s:8:"6d416e39";i:271;s:8:"23570261";i:272;s:8:"23106924";i:273;s:8:"a4b9add9";i:274;s:8:"baa83e79";i:275;s:8:"97ca48d3";i:276;s:8:"f369a004";i:277;s:8:"fa521bf6";i:278;s:8:"312e9e5e";i:279;s:8:"3acdb850";i:280;s:8:"485cbad7";i:281;s:8:"ddc2d365";i:282;s:8:"d8b87c13";i:283;s:8:"51f6aa7a";i:284;s:8:"b1c231ce";i:285;s:8:"926b9e57";i:286;s:8:"32bd5241";i:287;s:8:"b72cf0a0";i:288;s:8:"0cd99f51";i:289;s:8:"80815c0e";i:290;s:8:"a3459115";i:291;s:8:"5bb05439";i:292;s:8:"ee67a282";i:293;s:8:"65e533c5";i:294;s:8:"62e57b7a";i:295;s:8:"0f4a42fe";i:296;s:8:"ff5b8045";i:297;s:8:"cb9d60cf";i:298;s:8:"ffc891cd";i:299;s:8:"514d6027";i:300;s:8:"5b92df3b";i:301;s:8:"1fb47b1a";i:302;s:8:"a2382db8";i:303;s:8:"6f8b23cd";i:304;s:8:"db72737a";i:305;s:8:"d2d5022b";i:306;s:8:"eef762a7";i:307;s:8:"771fc2ed";i:308;s:8:"6581afb1";i:309;s:8:"64d7ffbd";i:310;s:8:"93a15a65";i:311;s:8:"fdc8b81b";i:312;s:8:"6369357b";i:313;s:8:"a8a58d2e";i:314;s:8:"d9ab2ed6";i:315;s:8:"0465340d";i:316;s:8:"eed4e3f1";i:317;s:8:"7e15ef9d";i:318;s:8:"99444e57";i:319;s:8:"959a6881";i:320;s:8:"e7498e10";i:321;s:8:"d7d0699e";i:322;s:8:"12372566";i:323;s:8:"b9f97c89";i:324;s:8:"5e688172";i:325;s:8:"8105e3b8";i:326;s:8:"627e9227";i:327;s:8:"67edb47d";i:328;s:8:"74e69d5f";i:329;s:8:"b8c5df2c";i:330;s:8:"14f06e80";i:331;s:8:"1a0af27f";i:332;s:8:"fa6ad68b";i:333;s:8:"d5938b0d";i:334;s:8:"2df9b8cc";i:335;s:8:"d90bd16c";i:336;s:8:"18779d24";i:337;s:8:"e1b81866";i:338;s:8:"dc51e106";i:339;s:8:"5078c0ce";i:340;s:8:"8fde3be3";i:341;s:8:"85939b08";i:342;s:8:"50f5565d";i:343;s:8:"281ec5f0";i:344;s:8:"ee2c4dfb";i:345;s:8:"89df2863";i:346;s:8:"0444ef85";i:347;s:8:"d52671b6";i:348;s:8:"84695c5d";i:349;s:8:"ceb19fc9";i:350;s:8:"8cd19595";i:351;s:8:"9773504b";i:352;s:8:"72031351";i:353;s:8:"285de56c";i:354;s:8:"08d949a1";i:355;s:8:"d1d24d60";i:356;s:8:"41c57eff";i:357;s:8:"ded22dfc";i:358;s:8:"9f799eb2";i:359;s:8:"ac14c164";i:360;s:8:"23ab3dac";i:361;s:8:"76de10e0";i:362;s:8:"72c2ac0b";i:363;s:8:"cce93127";i:364;s:8:"32bbb7e5";i:365;s:8:"b8af671a";i:366;s:8:"24dfc65a";i:367;s:8:"d7c8431f";i:368;s:8:"5cf3dffd";i:369;s:8:"7a93645c";i:370;s:8:"36bb66f8";i:371;s:8:"dc055709";i:372;s:8:"93c58efc";i:373;s:8:"11b9a1e6";i:374;s:8:"e487f36b";i:375;s:8:"7c3bcb46";i:376;s:8:"e4d724a3";i:377;s:8:"b732d653";i:378;s:8:"afc9c219";i:379;s:8:"ea658830";i:380;s:8:"b9052af6";i:381;s:8:"aa46a473";i:382;s:8:"1b37a35e";i:383;s:8:"0ba14ee9";i:384;s:8:"c7e150ac";i:385;s:8:"055ffa96";i:386;s:8:"e2bf88fb";i:387;s:8:"88f1f936";i:388;s:8:"488c7bdb";i:389;s:8:"a9dacbd1";i:390;s:8:"aaeea26f";i:391;s:8:"237af1cb";i:392;s:8:"e3dbdb50";i:393;s:8:"c8e5949e";i:394;s:8:"e70a989a";i:395;s:8:"fa540d6d";i:396;s:8:"f055b2f2";i:397;s:8:"1fc8acd4";i:398;s:8:"accb1a9b";i:399;s:8:"bedfb89c";i:400;s:8:"3d243ec0";i:401;s:8:"d2f3f2d8";i:402;s:8:"d83e7c53";i:403;s:8:"4f12e12d";i:404;s:8:"f48f33d1";i:405;s:8:"9555d943";i:406;s:8:"db853a55";i:407;s:8:"506a95b4";i:408;s:8:"408155d1";i:409;s:8:"32a384a0";i:410;s:8:"21c34eb4";i:411;s:8:"93e2e1ae";i:412;s:8:"88582a10";i:413;s:8:"1f065648";i:414;s:8:"96c3c81b";i:415;s:8:"412bc358";i:416;s:8:"11a4e990";i:417;s:8:"805ead73";i:418;s:8:"ec8ca56e";i:419;s:8:"a2ed4bdc";i:420;s:8:"ac408a10";i:421;s:8:"4ca98f96";i:422;s:8:"0686b6df";i:423;s:8:"9e9f7ae4";i:424;s:8:"07d5f658";i:425;s:8:"1c121a0c";i:426;s:8:"c11c8e82";i:427;s:8:"13f2c6d7";i:428;s:8:"e9f6ad9c";i:429;s:8:"bc1dc285";i:430;s:8:"e271fe4b";i:431;s:8:"34114ee5";i:432;s:8:"92ad1c39";i:433;s:8:"5ab5504b";i:434;s:8:"4f7118a7";i:435;s:8:"d1ceec2f";i:436;s:8:"adfd7622";i:437;s:8:"f4f4a9c0";i:438;s:8:"2d4f21e3";i:439;s:8:"3b4bed9e";i:440;s:8:"42ac5810";i:441;s:8:"7eae8db5";i:442;s:8:"09dc329e";i:443;s:8:"3c723314";i:444;s:8:"7fb50c08";i:445;s:8:"71fd69dd";i:446;s:8:"013ce542";i:447;s:8:"0add0d73";i:448;s:8:"465d495a";i:449;s:8:"9f8ddb9d";i:450;s:8:"f293e79e";i:451;s:8:"d6f59d72";i:452;s:8:"ac22e38f";i:453;s:8:"e96d5751";i:454;s:8:"fba79717";i:455;s:8:"39fedf2f";i:456;s:8:"3fb25196";i:457;s:8:"fcdaa825";i:458;s:8:"9a960022";i:459;s:8:"5371af3d";i:460;s:8:"df7faf0a";i:461;s:8:"82c22c85";i:462;s:8:"dfbbae9f";i:463;s:8:"403a4b84";i:464;s:8:"bc938282";i:465;s:8:"d2355fbc";i:466;s:8:"8d72b179";i:467;s:8:"dced02b2";i:468;s:8:"227b82e3";i:469;s:8:"24c60db6";i:470;s:8:"45092b73";i:471;s:8:"767c0e1d";i:472;s:8:"7eb5c592";i:473;s:8:"d0b356d9";i:474;s:8:"dc95ee45";i:475;s:8:"39aa5820";i:476;s:8:"9e6e1868";i:477;s:8:"ffe72d78";i:478;s:8:"82ae0503";i:479;s:8:"2ea981ad";i:480;s:8:"6935faba";i:481;s:8:"69c2ba98";i:482;s:8:"69dd219f";i:483;s:8:"860e0d0d";i:484;s:8:"5f451aa3";i:485;s:8:"a9d5f07d";i:486;s:8:"ec623682";i:487;s:8:"04d8adba";i:488;s:8:"717e8c76";i:489;s:8:"f9c1fb75";i:490;s:8:"ab4c9e06";i:491;s:8:"3895ef4d";i:492;s:8:"37c09060";i:493;s:8:"f3b7c652";i:494;s:8:"74dc421e";i:495;s:8:"97d458be";i:496;s:8:"1a1ddea1";i:497;s:8:"001c68ad";i:498;s:8:"680f033f";i:499;s:8:"b2e9bd38";i:500;s:8:"54192958";i:501;s:8:"b6dd0693";i:502;s:8:"9d149906";i:503;s:8:"9ba5479a";i:504;s:8:"18ba25e8";i:505;s:8:"16fa3e51";i:506;s:8:"1e74b698";i:507;s:8:"c5932028";i:508;s:8:"5a6cf6cd";i:509;s:8:"6fa90e13";i:510;s:8:"bcabdecb";i:511;s:8:"ae23af9a";i:512;s:8:"76b297eb";i:513;s:8:"d1332632";i:514;s:8:"693a55c3";i:515;s:8:"7c4beb9b";i:516;s:8:"409a0a15";i:517;s:8:"60f68335";i:518;s:8:"febcb934";i:519;s:8:"f32c6f8c";i:520;s:8:"aacacf0d";i:521;s:8:"d1f56e99";i:522;s:8:"d65bcf00";i:523;s:8:"361c9633";i:524;s:8:"cd34d7f4";i:525;s:8:"37d38e62";i:526;s:8:"942dee9d";i:527;s:8:"f41c9445";i:528;s:8:"7e9a8b5d";i:529;s:8:"4b941ed7";i:530;s:8:"c6256dce";i:531;s:8:"6c285146";i:532;s:8:"5920147e";i:533;s:8:"934d59ed";i:534;s:8:"5f400a1d";i:535;s:8:"1a5de58c";i:536;s:8:"11e601de";i:537;s:8:"cf4da287";i:538;s:8:"756a54e4";i:539;s:8:"9f2b1015";i:540;s:8:"3a3df642";i:541;s:8:"5d024d64";i:542;s:8:"2d617393";i:543;s:8:"e1b4ec53";i:544;s:8:"24996b5e";i:545;s:8:"7a271bf1";i:546;s:8:"68d7da60";i:547;s:8:"06d3bc73";i:548;s:8:"f21095f7";i:549;s:8:"93e6bfd9";i:550;s:8:"e80b015b";i:551;s:8:"4ddd4ede";i:552;s:8:"cec3d813";i:553;s:8:"281f2a65";i:554;s:8:"ffa068fb";i:555;s:8:"60e712e7";i:556;s:8:"4abcecac";i:557;s:8:"eef01060";i:558;s:8:"8e79e897";i:559;s:8:"b0cd39fe";i:560;s:8:"28cc9604";i:561;s:8:"c7bd58e0";i:562;s:8:"c73b1765";i:563;s:8:"e87d5e07";i:564;s:8:"03b7710d";i:565;s:8:"5f64c5dc";i:566;s:8:"4ae7b6f1";i:567;s:8:"401b9876";i:568;s:8:"9a162522";i:569;s:8:"2a1d6390";i:570;s:8:"c115eeff";i:571;s:8:"e549f7df";i:572;s:8:"a159c579";i:573;s:8:"48a44ff6";i:574;s:8:"e65fd1fc";i:575;s:8:"bb74cd7b";i:576;s:8:"87cc0383";i:577;s:8:"052755ee";i:578;s:8:"eba29b21";i:579;s:8:"88e2efa9";i:580;s:8:"a1a521b9";i:581;s:8:"ffb6f27b";i:582;s:8:"4fea3248";i:583;s:8:"0f46ad03";i:584;s:8:"58902f76";i:585;s:8:"cfb3f87e";i:586;s:8:"efb3d85c";i:587;s:8:"1e0f4648";i:588;s:8:"f95eda47";i:589;s:8:"c5220b0b";i:590;s:8:"e6574ef8";i:591;s:8:"f34b162e";i:592;s:8:"09b08b14";i:593;s:8:"dae53353";i:594;s:8:"ccc600dd";i:595;s:8:"b3ae8f4f";i:596;s:8:"daed379c";i:597;s:8:"113f5973";i:598;s:8:"6a66bb0a";i:599;s:8:"697817f3";i:600;s:8:"00b78167";i:601;s:8:"1e7c2ed9";i:602;s:8:"65f8a3c5";i:603;s:8:"c50f5c14";i:604;s:8:"a1665ca7";i:605;s:8:"d31c5017";i:606;s:8:"2e421193";i:607;s:8:"cb8d29a9";i:608;s:8:"fa9723b5";i:609;s:8:"8a4d18e4";i:610;s:8:"88081a19";i:611;s:8:"242623e4";i:612;s:8:"86202155";i:613;s:8:"ab55982f";i:614;s:8:"f1a3c261";i:615;s:8:"c44eaa91";i:616;s:8:"06c4716f";i:617;s:8:"60a25216";i:618;s:8:"dcce86a3";i:619;s:8:"bfcec0cd";i:620;s:8:"fb4170ed";i:621;s:8:"9bf5e563";i:622;s:8:"04fa51af";i:623;s:8:"dd86eeb1";i:624;i:0;i:625;i:0;}}')); } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; } // invalid count try { - unserialize('O:21:"Random\Engine\Mt19937":2:{i:0;a:0:{}i:1;a:626:{i:0;s:8:"5aa6b986";i:1;s:8:"8660cc14";i:2;s:8:"c0b631ca";i:3;s:8:"e85464ad";i:4;s:8:"70fa6108";i:5;s:8:"c5ed9c3c";i:6;s:8:"b05b7ff1";i:7;s:8:"faf33a3a";i:8;s:8:"ab7c0e61";i:9;s:8:"2d4c9c37";i:10;s:8:"daffe918";i:11;s:8:"644f25b9";i:12;s:8:"fdb352e5";i:13;s:8:"434dafa9";i:14;s:8:"a3c9826e";i:15;s:8:"923dfd8c";i:16;s:8:"f641a225";i:17;s:8:"d87134b3";i:18;s:8:"c3b7926e";i:19;s:8:"c880b60d";i:20;s:8:"975f362d";i:21;s:8:"48192b77";i:22;s:8:"6f7dd08b";i:23;s:8:"7d4ad4f8";i:24;s:8:"d805b910";i:25;s:8:"8c98b365";i:26;s:8:"89e54af9";i:27;s:8:"e5257a3c";i:28;s:8:"8f596624";i:29;s:8:"3f42f88a";i:30;s:8:"6a7e95cc";i:31;s:8:"e1349e4d";i:32;s:8:"4539bc92";i:33;s:8:"045a3148";i:34;s:8:"c27cf7b9";i:35;s:8:"c64e8009";i:36;s:8:"dc5ed02e";i:37;s:8:"5753c741";i:38;s:8:"50be0a82";i:39;s:8:"822da0ee";i:40;s:8:"42fdb3c6";i:41;s:8:"c668fc80";i:42;s:8:"262376c6";i:43;s:8:"17b998c6";i:44;s:8:"1f3aac02";i:45;s:8:"6f939c7e";i:46;s:8:"21c099f4";i:47;s:8:"0f4b5c76";i:48;s:8:"64799ac0";i:49;s:8:"45d3bb99";i:50;s:8:"8ff3eb79";i:51;s:8:"61996264";i:52;s:8:"2b9ab1f4";i:53;s:8:"a0d0c50f";i:54;s:8:"f08713ce";i:55;s:8:"6b1cf9d8";i:56;s:8:"52d92cc5";i:57;s:8:"34bcec6f";i:58;s:8:"83ffa063";i:59;s:8:"a002321d";i:60;s:8:"386c46d9";i:61;s:8:"45e2c63e";i:62;s:8:"f481bdf4";i:63;s:8:"df58facb";i:64;s:8:"1781e49b";i:65;s:8:"1d968a6b";i:66;s:8:"8aa7fdd2";i:67;s:8:"631ac8cd";i:68;s:8:"8090ff8e";i:69;s:8:"4ddd4a5d";i:70;s:8:"ff6d8193";i:71;s:8:"39e18244";i:72;s:8:"4efe15db";i:73;s:8:"3fe64cd5";i:74;s:8:"e693a97f";i:75;s:8:"807a34e9";i:76;s:8:"6dc16ae7";i:77;s:8:"a1e1ed1d";i:78;s:8:"605bdc86";i:79;s:8:"abb1830e";i:80;s:8:"2baabeda";i:81;s:8:"fc0f66ad";i:82;s:8:"9cf4fb96";i:83;s:8:"b50ff764";i:84;s:8:"67c37a3d";i:85;s:8:"15253035";i:86;s:8:"387fce47";i:87;s:8:"5c3299a5";i:88;s:8:"125602b9";i:89;s:8:"daeb445c";i:90;s:8:"289e5a8d";i:91;s:8:"b47cd48c";i:92;s:8:"8664db23";i:93;s:8:"b9352af8";i:94;s:8:"51684d88";i:95;s:8:"b204cbc9";i:96;s:8:"e1b6becc";i:97;s:8:"dbbe0ee6";i:98;s:8:"89e54027";i:99;s:8:"a6512564";i:100;s:8:"3aab8d17";i:101;s:8:"7cab5272";i:102;s:8:"1804e981";i:103;s:8:"0bfebe2c";i:104;s:8:"7c082a4c";i:105;s:8:"06bc80c3";i:106;s:8:"c63db839";i:107;s:8:"59edb59d";i:108;s:8:"b52d9655";i:109;s:8:"efce041b";i:110;s:8:"57c1f890";i:111;s:8:"15499697";i:112;s:8:"e0ad3e3a";i:113;s:8:"408d4c16";i:114;s:8:"e53cf468";i:115;s:8:"6ea3d84f";i:116;s:8:"0a2bc4f2";i:117;s:8:"27b59259";i:118;s:8:"d223514b";i:119;s:8:"434c4185";i:120;s:8:"999c71df";i:121;s:8:"46134706";i:122;s:8:"f7f048d0";i:123;s:8:"7f5cfe34";i:124;s:8:"9bdc475c";i:125;s:8:"c1cf42ea";i:126;s:8:"65be324b";i:127;s:8:"68c7a1dc";i:128;s:8:"a7c8c5a2";i:129;s:8:"ecc4cd8a";i:130;s:8:"a761615c";i:131;s:8:"718ec534";i:132;s:8:"c8b086fc";i:133;s:8:"ead759f9";i:134;s:8:"eb9df4a0";i:135;s:8:"ec5b25f9";i:136;s:8:"3a6ff94e";i:137;s:8:"4511a3de";i:138;s:8:"9034f1c6";i:139;s:8:"5c1c6d14";i:140;s:8:"a228ed46";i:141;s:8:"ffe19f2f";i:142;s:8:"f21f68cf";i:143;s:8:"6c2235a4";i:144;s:8:"e0aed51a";i:145;s:8:"2ade527b";i:146;s:8:"65f3c758";i:147;s:8:"f6e868b7";i:148;s:8:"49b770a5";i:149;s:8:"48ab9158";i:150;s:8:"ab07a671";i:151;s:8:"4ef74251";i:152;s:8:"f4cad644";i:153;s:8:"1576c59e";i:154;s:8:"3882bbd1";i:155;s:8:"e49f32c0";i:156;s:8:"c67b757c";i:157;s:8:"3528c5d8";i:158;s:8:"371c3e34";i:159;s:8:"7f1d614f";i:160;s:8:"b9e19e66";i:161;s:8:"80a1d97f";i:162;s:8:"7f93c9f3";i:163;s:8:"4e82ea48";i:164;s:8:"9675e170";i:165;s:8:"aa54caef";i:166;s:8:"3bb9838e";i:167;s:8:"9c0d0a2b";i:168;s:8:"2595d91f";i:169;s:8:"84cc7ff2";i:170;s:8:"9457c4ee";i:171;s:8:"405b6bc8";i:172;s:8:"5aa668a4";i:173;s:8:"e94dfca2";i:174;s:8:"89c0d739";i:175;s:8:"459f8eb3";i:176;s:8:"76b95b42";i:177;s:8:"0e5ceafb";i:178;s:8:"55d4eaee";i:179;s:8:"a55a4784";i:180;s:8:"8c23e133";i:181;s:8:"0994f794";i:182;s:8:"a8d4d1b7";i:183;s:8:"0a50b177";i:184;s:8:"65409f44";i:185;s:8:"acf34e81";i:186;s:8:"e32f278e";i:187;s:8:"7aa21660";i:188;s:8:"9da66881";i:189;s:8:"5c4df7c5";i:190;s:8:"b21f8a4e";i:191;s:8:"d2cc6756";i:192;s:8:"8716f97d";i:193;s:8:"aabd84c5";i:194;s:8:"2e0a965a";i:195;s:8:"b4acc29c";i:196;s:8:"ed3be992";i:197;s:8:"867d9400";i:198;s:8:"a696ba3e";i:199;s:8:"8e2af3d9";i:200;s:8:"8fd95ea9";i:201;s:8:"930903d8";i:202;s:8:"4508dbb1";i:203;s:8:"80598d21";i:204;s:8:"df87fb74";i:205;s:8:"9d019d24";i:206;s:8:"05d5ce2e";i:207;s:8:"ed69bcfe";i:208;s:8:"f83a8d70";i:209;s:8:"750b10bd";i:210;s:8:"c0df892c";i:211;s:8:"df41f215";i:212;s:8:"03df46e3";i:213;s:8:"4e6dce66";i:214;s:8:"ea45a428";i:215;s:8:"cbbf3ff6";i:216;s:8:"f931c7b2";i:217;s:8:"80d19eab";i:218;s:8:"0e2c13da";i:219;s:8:"4b99ee8b";i:220;s:8:"2311d69e";i:221;s:8:"ca9050a7";i:222;s:8:"a4d9eec1";i:223;s:8:"ee665c77";i:224;s:8:"0714f961";i:225;s:8:"81f5be46";i:226;s:8:"420ea4bf";i:227;s:8:"281c28f0";i:228;s:8:"9936ab3f";i:229;s:8:"e4ca8936";i:230;s:8:"224d247b";i:231;s:8:"a564dffe";i:232;s:8:"d15045d2";i:233;s:8:"97d01e8f";i:234;s:8:"71793232";i:235;s:8:"43fe461e";i:236;s:8:"3b50916b";i:237;s:8:"ff242439";i:238;s:8:"a748a0a9";i:239;s:8:"ff51a2a6";i:240;s:8:"dec0ad0d";i:241;s:8:"4bcf2a2e";i:242;s:8:"2be6a97f";i:243;s:8:"eb3e636a";i:244;s:8:"81e31d64";i:245;s:8:"6ca4db9d";i:246;s:8:"bc5bd290";i:247;s:8:"ed2d2ba4";i:248;s:8:"00c46d55";i:249;s:8:"27578407";i:250;s:8:"bedbbcd8";i:251;s:8:"18172abc";i:252;s:8:"eaa5b9cf";i:253;s:8:"9e87ab84";i:254;s:8:"a0e2741c";i:255;s:8:"3bb931ae";i:256;s:8:"3a7b75cd";i:257;s:8:"1052cbf5";i:258;s:8:"b7afd060";i:259;s:8:"1d143d51";i:260;s:8:"17fb7422";i:261;s:8:"523fd346";i:262;s:8:"50429afd";i:263;s:8:"308ece7b";i:264;s:8:"285aa5c1";i:265;s:8:"d8afd736";i:266;s:8:"2e30512e";i:267;s:8:"af78ce36";i:268;s:8:"5967e738";i:269;s:8:"e19795de";i:270;s:8:"6d416e39";i:271;s:8:"23570261";i:272;s:8:"23106924";i:273;s:8:"a4b9add9";i:274;s:8:"baa83e79";i:275;s:8:"97ca48d3";i:276;s:8:"f369a004";i:277;s:8:"fa521bf6";i:278;s:8:"312e9e5e";i:279;s:8:"3acdb850";i:280;s:8:"485cbad7";i:281;s:8:"ddc2d365";i:282;s:8:"d8b87c13";i:283;s:8:"51f6aa7a";i:284;s:8:"b1c231ce";i:285;s:8:"926b9e57";i:286;s:8:"32bd5241";i:287;s:8:"b72cf0a0";i:288;s:8:"0cd99f51";i:289;s:8:"80815c0e";i:290;s:8:"a3459115";i:291;s:8:"5bb05439";i:292;s:8:"ee67a282";i:293;s:8:"65e533c5";i:294;s:8:"62e57b7a";i:295;s:8:"0f4a42fe";i:296;s:8:"ff5b8045";i:297;s:8:"cb9d60cf";i:298;s:8:"ffc891cd";i:299;s:8:"514d6027";i:300;s:8:"5b92df3b";i:301;s:8:"1fb47b1a";i:302;s:8:"a2382db8";i:303;s:8:"6f8b23cd";i:304;s:8:"db72737a";i:305;s:8:"d2d5022b";i:306;s:8:"eef762a7";i:307;s:8:"771fc2ed";i:308;s:8:"6581afb1";i:309;s:8:"64d7ffbd";i:310;s:8:"93a15a65";i:311;s:8:"fdc8b81b";i:312;s:8:"6369357b";i:313;s:8:"a8a58d2e";i:314;s:8:"d9ab2ed6";i:315;s:8:"0465340d";i:316;s:8:"eed4e3f1";i:317;s:8:"7e15ef9d";i:318;s:8:"99444e57";i:319;s:8:"959a6881";i:320;s:8:"e7498e10";i:321;s:8:"d7d0699e";i:322;s:8:"12372566";i:323;s:8:"b9f97c89";i:324;s:8:"5e688172";i:325;s:8:"8105e3b8";i:326;s:8:"627e9227";i:327;s:8:"67edb47d";i:328;s:8:"74e69d5f";i:329;s:8:"b8c5df2c";i:330;s:8:"14f06e80";i:331;s:8:"1a0af27f";i:332;s:8:"fa6ad68b";i:333;s:8:"d5938b0d";i:334;s:8:"2df9b8cc";i:335;s:8:"d90bd16c";i:336;s:8:"18779d24";i:337;s:8:"e1b81866";i:338;s:8:"dc51e106";i:339;s:8:"5078c0ce";i:340;s:8:"8fde3be3";i:341;s:8:"85939b08";i:342;s:8:"50f5565d";i:343;s:8:"281ec5f0";i:344;s:8:"ee2c4dfb";i:345;s:8:"89df2863";i:346;s:8:"0444ef85";i:347;s:8:"d52671b6";i:348;s:8:"84695c5d";i:349;s:8:"ceb19fc9";i:350;s:8:"8cd19595";i:351;s:8:"9773504b";i:352;s:8:"72031351";i:353;s:8:"285de56c";i:354;s:8:"08d949a1";i:355;s:8:"d1d24d60";i:356;s:8:"41c57eff";i:357;s:8:"ded22dfc";i:358;s:8:"9f799eb2";i:359;s:8:"ac14c164";i:360;s:8:"23ab3dac";i:361;s:8:"76de10e0";i:362;s:8:"72c2ac0b";i:363;s:8:"cce93127";i:364;s:8:"32bbb7e5";i:365;s:8:"b8af671a";i:366;s:8:"24dfc65a";i:367;s:8:"d7c8431f";i:368;s:8:"5cf3dffd";i:369;s:8:"7a93645c";i:370;s:8:"36bb66f8";i:371;s:8:"dc055709";i:372;s:8:"93c58efc";i:373;s:8:"11b9a1e6";i:374;s:8:"e487f36b";i:375;s:8:"7c3bcb46";i:376;s:8:"e4d724a3";i:377;s:8:"b732d653";i:378;s:8:"afc9c219";i:379;s:8:"ea658830";i:380;s:8:"b9052af6";i:381;s:8:"aa46a473";i:382;s:8:"1b37a35e";i:383;s:8:"0ba14ee9";i:384;s:8:"c7e150ac";i:385;s:8:"055ffa96";i:386;s:8:"e2bf88fb";i:387;s:8:"88f1f936";i:388;s:8:"488c7bdb";i:389;s:8:"a9dacbd1";i:390;s:8:"aaeea26f";i:391;s:8:"237af1cb";i:392;s:8:"e3dbdb50";i:393;s:8:"c8e5949e";i:394;s:8:"e70a989a";i:395;s:8:"fa540d6d";i:396;s:8:"f055b2f2";i:397;s:8:"1fc8acd4";i:398;s:8:"accb1a9b";i:399;s:8:"bedfb89c";i:400;s:8:"3d243ec0";i:401;s:8:"d2f3f2d8";i:402;s:8:"d83e7c53";i:403;s:8:"4f12e12d";i:404;s:8:"f48f33d1";i:405;s:8:"9555d943";i:406;s:8:"db853a55";i:407;s:8:"506a95b4";i:408;s:8:"408155d1";i:409;s:8:"32a384a0";i:410;s:8:"21c34eb4";i:411;s:8:"93e2e1ae";i:412;s:8:"88582a10";i:413;s:8:"1f065648";i:414;s:8:"96c3c81b";i:415;s:8:"412bc358";i:416;s:8:"11a4e990";i:417;s:8:"805ead73";i:418;s:8:"ec8ca56e";i:419;s:8:"a2ed4bdc";i:420;s:8:"ac408a10";i:421;s:8:"4ca98f96";i:422;s:8:"0686b6df";i:423;s:8:"9e9f7ae4";i:424;s:8:"07d5f658";i:425;s:8:"1c121a0c";i:426;s:8:"c11c8e82";i:427;s:8:"13f2c6d7";i:428;s:8:"e9f6ad9c";i:429;s:8:"bc1dc285";i:430;s:8:"e271fe4b";i:431;s:8:"34114ee5";i:432;s:8:"92ad1c39";i:433;s:8:"5ab5504b";i:434;s:8:"4f7118a7";i:435;s:8:"d1ceec2f";i:436;s:8:"adfd7622";i:437;s:8:"f4f4a9c0";i:438;s:8:"2d4f21e3";i:439;s:8:"3b4bed9e";i:440;s:8:"42ac5810";i:441;s:8:"7eae8db5";i:442;s:8:"09dc329e";i:443;s:8:"3c723314";i:444;s:8:"7fb50c08";i:445;s:8:"71fd69dd";i:446;s:8:"013ce542";i:447;s:8:"0add0d73";i:448;s:8:"465d495a";i:449;s:8:"9f8ddb9d";i:450;s:8:"f293e79e";i:451;s:8:"d6f59d72";i:452;s:8:"ac22e38f";i:453;s:8:"e96d5751";i:454;s:8:"fba79717";i:455;s:8:"39fedf2f";i:456;s:8:"3fb25196";i:457;s:8:"fcdaa825";i:458;s:8:"9a960022";i:459;s:8:"5371af3d";i:460;s:8:"df7faf0a";i:461;s:8:"82c22c85";i:462;s:8:"dfbbae9f";i:463;s:8:"403a4b84";i:464;s:8:"bc938282";i:465;s:8:"d2355fbc";i:466;s:8:"8d72b179";i:467;s:8:"dced02b2";i:468;s:8:"227b82e3";i:469;s:8:"24c60db6";i:470;s:8:"45092b73";i:471;s:8:"767c0e1d";i:472;s:8:"7eb5c592";i:473;s:8:"d0b356d9";i:474;s:8:"dc95ee45";i:475;s:8:"39aa5820";i:476;s:8:"9e6e1868";i:477;s:8:"ffe72d78";i:478;s:8:"82ae0503";i:479;s:8:"2ea981ad";i:480;s:8:"6935faba";i:481;s:8:"69c2ba98";i:482;s:8:"69dd219f";i:483;s:8:"860e0d0d";i:484;s:8:"5f451aa3";i:485;s:8:"a9d5f07d";i:486;s:8:"ec623682";i:487;s:8:"04d8adba";i:488;s:8:"717e8c76";i:489;s:8:"f9c1fb75";i:490;s:8:"ab4c9e06";i:491;s:8:"3895ef4d";i:492;s:8:"37c09060";i:493;s:8:"f3b7c652";i:494;s:8:"74dc421e";i:495;s:8:"97d458be";i:496;s:8:"1a1ddea1";i:497;s:8:"001c68ad";i:498;s:8:"680f033f";i:499;s:8:"b2e9bd38";i:500;s:8:"54192958";i:501;s:8:"b6dd0693";i:502;s:8:"9d149906";i:503;s:8:"9ba5479a";i:504;s:8:"18ba25e8";i:505;s:8:"16fa3e51";i:506;s:8:"1e74b698";i:507;s:8:"c5932028";i:508;s:8:"5a6cf6cd";i:509;s:8:"6fa90e13";i:510;s:8:"bcabdecb";i:511;s:8:"ae23af9a";i:512;s:8:"76b297eb";i:513;s:8:"d1332632";i:514;s:8:"693a55c3";i:515;s:8:"7c4beb9b";i:516;s:8:"409a0a15";i:517;s:8:"60f68335";i:518;s:8:"febcb934";i:519;s:8:"f32c6f8c";i:520;s:8:"aacacf0d";i:521;s:8:"d1f56e99";i:522;s:8:"d65bcf00";i:523;s:8:"361c9633";i:524;s:8:"cd34d7f4";i:525;s:8:"37d38e62";i:526;s:8:"942dee9d";i:527;s:8:"f41c9445";i:528;s:8:"7e9a8b5d";i:529;s:8:"4b941ed7";i:530;s:8:"c6256dce";i:531;s:8:"6c285146";i:532;s:8:"5920147e";i:533;s:8:"934d59ed";i:534;s:8:"5f400a1d";i:535;s:8:"1a5de58c";i:536;s:8:"11e601de";i:537;s:8:"cf4da287";i:538;s:8:"756a54e4";i:539;s:8:"9f2b1015";i:540;s:8:"3a3df642";i:541;s:8:"5d024d64";i:542;s:8:"2d617393";i:543;s:8:"e1b4ec53";i:544;s:8:"24996b5e";i:545;s:8:"7a271bf1";i:546;s:8:"68d7da60";i:547;s:8:"06d3bc73";i:548;s:8:"f21095f7";i:549;s:8:"93e6bfd9";i:550;s:8:"e80b015b";i:551;s:8:"4ddd4ede";i:552;s:8:"cec3d813";i:553;s:8:"281f2a65";i:554;s:8:"ffa068fb";i:555;s:8:"60e712e7";i:556;s:8:"4abcecac";i:557;s:8:"eef01060";i:558;s:8:"8e79e897";i:559;s:8:"b0cd39fe";i:560;s:8:"28cc9604";i:561;s:8:"c7bd58e0";i:562;s:8:"c73b1765";i:563;s:8:"e87d5e07";i:564;s:8:"03b7710d";i:565;s:8:"5f64c5dc";i:566;s:8:"4ae7b6f1";i:567;s:8:"401b9876";i:568;s:8:"9a162522";i:569;s:8:"2a1d6390";i:570;s:8:"c115eeff";i:571;s:8:"e549f7df";i:572;s:8:"a159c579";i:573;s:8:"48a44ff6";i:574;s:8:"e65fd1fc";i:575;s:8:"bb74cd7b";i:576;s:8:"87cc0383";i:577;s:8:"052755ee";i:578;s:8:"eba29b21";i:579;s:8:"88e2efa9";i:580;s:8:"a1a521b9";i:581;s:8:"ffb6f27b";i:582;s:8:"4fea3248";i:583;s:8:"0f46ad03";i:584;s:8:"58902f76";i:585;s:8:"cfb3f87e";i:586;s:8:"efb3d85c";i:587;s:8:"1e0f4648";i:588;s:8:"f95eda47";i:589;s:8:"c5220b0b";i:590;s:8:"e6574ef8";i:591;s:8:"f34b162e";i:592;s:8:"09b08b14";i:593;s:8:"dae53353";i:594;s:8:"ccc600dd";i:595;s:8:"b3ae8f4f";i:596;s:8:"daed379c";i:597;s:8:"113f5973";i:598;s:8:"6a66bb0a";i:599;s:8:"697817f3";i:600;s:8:"00b78167";i:601;s:8:"1e7c2ed9";i:602;s:8:"65f8a3c5";i:603;s:8:"c50f5c14";i:604;s:8:"a1665ca7";i:605;s:8:"d31c5017";i:606;s:8:"2e421193";i:607;s:8:"cb8d29a9";i:608;s:8:"fa9723b5";i:609;s:8:"8a4d18e4";i:610;s:8:"88081a19";i:611;s:8:"242623e4";i:612;s:8:"86202155";i:613;s:8:"ab55982f";i:614;s:8:"f1a3c261";i:615;s:8:"c44eaa91";i:616;s:8:"06c4716f";i:617;s:8:"60a25216";i:618;s:8:"dcce86a3";i:619;s:8:"bfcec0cd";i:620;s:8:"fb4170ed";i:621;s:8:"9bf5e563";i:622;s:8:"04fa51af";i:623;s:8:"dd86eeb1";i:624;i:1000;i:625;i:0;}}'); + var_dump(unserialize('O:21:"Random\Engine\Mt19937":2:{i:0;a:0:{}i:1;a:626:{i:0;s:8:"5aa6b986";i:1;s:8:"8660cc14";i:2;s:8:"c0b631ca";i:3;s:8:"e85464ad";i:4;s:8:"70fa6108";i:5;s:8:"c5ed9c3c";i:6;s:8:"b05b7ff1";i:7;s:8:"faf33a3a";i:8;s:8:"ab7c0e61";i:9;s:8:"2d4c9c37";i:10;s:8:"daffe918";i:11;s:8:"644f25b9";i:12;s:8:"fdb352e5";i:13;s:8:"434dafa9";i:14;s:8:"a3c9826e";i:15;s:8:"923dfd8c";i:16;s:8:"f641a225";i:17;s:8:"d87134b3";i:18;s:8:"c3b7926e";i:19;s:8:"c880b60d";i:20;s:8:"975f362d";i:21;s:8:"48192b77";i:22;s:8:"6f7dd08b";i:23;s:8:"7d4ad4f8";i:24;s:8:"d805b910";i:25;s:8:"8c98b365";i:26;s:8:"89e54af9";i:27;s:8:"e5257a3c";i:28;s:8:"8f596624";i:29;s:8:"3f42f88a";i:30;s:8:"6a7e95cc";i:31;s:8:"e1349e4d";i:32;s:8:"4539bc92";i:33;s:8:"045a3148";i:34;s:8:"c27cf7b9";i:35;s:8:"c64e8009";i:36;s:8:"dc5ed02e";i:37;s:8:"5753c741";i:38;s:8:"50be0a82";i:39;s:8:"822da0ee";i:40;s:8:"42fdb3c6";i:41;s:8:"c668fc80";i:42;s:8:"262376c6";i:43;s:8:"17b998c6";i:44;s:8:"1f3aac02";i:45;s:8:"6f939c7e";i:46;s:8:"21c099f4";i:47;s:8:"0f4b5c76";i:48;s:8:"64799ac0";i:49;s:8:"45d3bb99";i:50;s:8:"8ff3eb79";i:51;s:8:"61996264";i:52;s:8:"2b9ab1f4";i:53;s:8:"a0d0c50f";i:54;s:8:"f08713ce";i:55;s:8:"6b1cf9d8";i:56;s:8:"52d92cc5";i:57;s:8:"34bcec6f";i:58;s:8:"83ffa063";i:59;s:8:"a002321d";i:60;s:8:"386c46d9";i:61;s:8:"45e2c63e";i:62;s:8:"f481bdf4";i:63;s:8:"df58facb";i:64;s:8:"1781e49b";i:65;s:8:"1d968a6b";i:66;s:8:"8aa7fdd2";i:67;s:8:"631ac8cd";i:68;s:8:"8090ff8e";i:69;s:8:"4ddd4a5d";i:70;s:8:"ff6d8193";i:71;s:8:"39e18244";i:72;s:8:"4efe15db";i:73;s:8:"3fe64cd5";i:74;s:8:"e693a97f";i:75;s:8:"807a34e9";i:76;s:8:"6dc16ae7";i:77;s:8:"a1e1ed1d";i:78;s:8:"605bdc86";i:79;s:8:"abb1830e";i:80;s:8:"2baabeda";i:81;s:8:"fc0f66ad";i:82;s:8:"9cf4fb96";i:83;s:8:"b50ff764";i:84;s:8:"67c37a3d";i:85;s:8:"15253035";i:86;s:8:"387fce47";i:87;s:8:"5c3299a5";i:88;s:8:"125602b9";i:89;s:8:"daeb445c";i:90;s:8:"289e5a8d";i:91;s:8:"b47cd48c";i:92;s:8:"8664db23";i:93;s:8:"b9352af8";i:94;s:8:"51684d88";i:95;s:8:"b204cbc9";i:96;s:8:"e1b6becc";i:97;s:8:"dbbe0ee6";i:98;s:8:"89e54027";i:99;s:8:"a6512564";i:100;s:8:"3aab8d17";i:101;s:8:"7cab5272";i:102;s:8:"1804e981";i:103;s:8:"0bfebe2c";i:104;s:8:"7c082a4c";i:105;s:8:"06bc80c3";i:106;s:8:"c63db839";i:107;s:8:"59edb59d";i:108;s:8:"b52d9655";i:109;s:8:"efce041b";i:110;s:8:"57c1f890";i:111;s:8:"15499697";i:112;s:8:"e0ad3e3a";i:113;s:8:"408d4c16";i:114;s:8:"e53cf468";i:115;s:8:"6ea3d84f";i:116;s:8:"0a2bc4f2";i:117;s:8:"27b59259";i:118;s:8:"d223514b";i:119;s:8:"434c4185";i:120;s:8:"999c71df";i:121;s:8:"46134706";i:122;s:8:"f7f048d0";i:123;s:8:"7f5cfe34";i:124;s:8:"9bdc475c";i:125;s:8:"c1cf42ea";i:126;s:8:"65be324b";i:127;s:8:"68c7a1dc";i:128;s:8:"a7c8c5a2";i:129;s:8:"ecc4cd8a";i:130;s:8:"a761615c";i:131;s:8:"718ec534";i:132;s:8:"c8b086fc";i:133;s:8:"ead759f9";i:134;s:8:"eb9df4a0";i:135;s:8:"ec5b25f9";i:136;s:8:"3a6ff94e";i:137;s:8:"4511a3de";i:138;s:8:"9034f1c6";i:139;s:8:"5c1c6d14";i:140;s:8:"a228ed46";i:141;s:8:"ffe19f2f";i:142;s:8:"f21f68cf";i:143;s:8:"6c2235a4";i:144;s:8:"e0aed51a";i:145;s:8:"2ade527b";i:146;s:8:"65f3c758";i:147;s:8:"f6e868b7";i:148;s:8:"49b770a5";i:149;s:8:"48ab9158";i:150;s:8:"ab07a671";i:151;s:8:"4ef74251";i:152;s:8:"f4cad644";i:153;s:8:"1576c59e";i:154;s:8:"3882bbd1";i:155;s:8:"e49f32c0";i:156;s:8:"c67b757c";i:157;s:8:"3528c5d8";i:158;s:8:"371c3e34";i:159;s:8:"7f1d614f";i:160;s:8:"b9e19e66";i:161;s:8:"80a1d97f";i:162;s:8:"7f93c9f3";i:163;s:8:"4e82ea48";i:164;s:8:"9675e170";i:165;s:8:"aa54caef";i:166;s:8:"3bb9838e";i:167;s:8:"9c0d0a2b";i:168;s:8:"2595d91f";i:169;s:8:"84cc7ff2";i:170;s:8:"9457c4ee";i:171;s:8:"405b6bc8";i:172;s:8:"5aa668a4";i:173;s:8:"e94dfca2";i:174;s:8:"89c0d739";i:175;s:8:"459f8eb3";i:176;s:8:"76b95b42";i:177;s:8:"0e5ceafb";i:178;s:8:"55d4eaee";i:179;s:8:"a55a4784";i:180;s:8:"8c23e133";i:181;s:8:"0994f794";i:182;s:8:"a8d4d1b7";i:183;s:8:"0a50b177";i:184;s:8:"65409f44";i:185;s:8:"acf34e81";i:186;s:8:"e32f278e";i:187;s:8:"7aa21660";i:188;s:8:"9da66881";i:189;s:8:"5c4df7c5";i:190;s:8:"b21f8a4e";i:191;s:8:"d2cc6756";i:192;s:8:"8716f97d";i:193;s:8:"aabd84c5";i:194;s:8:"2e0a965a";i:195;s:8:"b4acc29c";i:196;s:8:"ed3be992";i:197;s:8:"867d9400";i:198;s:8:"a696ba3e";i:199;s:8:"8e2af3d9";i:200;s:8:"8fd95ea9";i:201;s:8:"930903d8";i:202;s:8:"4508dbb1";i:203;s:8:"80598d21";i:204;s:8:"df87fb74";i:205;s:8:"9d019d24";i:206;s:8:"05d5ce2e";i:207;s:8:"ed69bcfe";i:208;s:8:"f83a8d70";i:209;s:8:"750b10bd";i:210;s:8:"c0df892c";i:211;s:8:"df41f215";i:212;s:8:"03df46e3";i:213;s:8:"4e6dce66";i:214;s:8:"ea45a428";i:215;s:8:"cbbf3ff6";i:216;s:8:"f931c7b2";i:217;s:8:"80d19eab";i:218;s:8:"0e2c13da";i:219;s:8:"4b99ee8b";i:220;s:8:"2311d69e";i:221;s:8:"ca9050a7";i:222;s:8:"a4d9eec1";i:223;s:8:"ee665c77";i:224;s:8:"0714f961";i:225;s:8:"81f5be46";i:226;s:8:"420ea4bf";i:227;s:8:"281c28f0";i:228;s:8:"9936ab3f";i:229;s:8:"e4ca8936";i:230;s:8:"224d247b";i:231;s:8:"a564dffe";i:232;s:8:"d15045d2";i:233;s:8:"97d01e8f";i:234;s:8:"71793232";i:235;s:8:"43fe461e";i:236;s:8:"3b50916b";i:237;s:8:"ff242439";i:238;s:8:"a748a0a9";i:239;s:8:"ff51a2a6";i:240;s:8:"dec0ad0d";i:241;s:8:"4bcf2a2e";i:242;s:8:"2be6a97f";i:243;s:8:"eb3e636a";i:244;s:8:"81e31d64";i:245;s:8:"6ca4db9d";i:246;s:8:"bc5bd290";i:247;s:8:"ed2d2ba4";i:248;s:8:"00c46d55";i:249;s:8:"27578407";i:250;s:8:"bedbbcd8";i:251;s:8:"18172abc";i:252;s:8:"eaa5b9cf";i:253;s:8:"9e87ab84";i:254;s:8:"a0e2741c";i:255;s:8:"3bb931ae";i:256;s:8:"3a7b75cd";i:257;s:8:"1052cbf5";i:258;s:8:"b7afd060";i:259;s:8:"1d143d51";i:260;s:8:"17fb7422";i:261;s:8:"523fd346";i:262;s:8:"50429afd";i:263;s:8:"308ece7b";i:264;s:8:"285aa5c1";i:265;s:8:"d8afd736";i:266;s:8:"2e30512e";i:267;s:8:"af78ce36";i:268;s:8:"5967e738";i:269;s:8:"e19795de";i:270;s:8:"6d416e39";i:271;s:8:"23570261";i:272;s:8:"23106924";i:273;s:8:"a4b9add9";i:274;s:8:"baa83e79";i:275;s:8:"97ca48d3";i:276;s:8:"f369a004";i:277;s:8:"fa521bf6";i:278;s:8:"312e9e5e";i:279;s:8:"3acdb850";i:280;s:8:"485cbad7";i:281;s:8:"ddc2d365";i:282;s:8:"d8b87c13";i:283;s:8:"51f6aa7a";i:284;s:8:"b1c231ce";i:285;s:8:"926b9e57";i:286;s:8:"32bd5241";i:287;s:8:"b72cf0a0";i:288;s:8:"0cd99f51";i:289;s:8:"80815c0e";i:290;s:8:"a3459115";i:291;s:8:"5bb05439";i:292;s:8:"ee67a282";i:293;s:8:"65e533c5";i:294;s:8:"62e57b7a";i:295;s:8:"0f4a42fe";i:296;s:8:"ff5b8045";i:297;s:8:"cb9d60cf";i:298;s:8:"ffc891cd";i:299;s:8:"514d6027";i:300;s:8:"5b92df3b";i:301;s:8:"1fb47b1a";i:302;s:8:"a2382db8";i:303;s:8:"6f8b23cd";i:304;s:8:"db72737a";i:305;s:8:"d2d5022b";i:306;s:8:"eef762a7";i:307;s:8:"771fc2ed";i:308;s:8:"6581afb1";i:309;s:8:"64d7ffbd";i:310;s:8:"93a15a65";i:311;s:8:"fdc8b81b";i:312;s:8:"6369357b";i:313;s:8:"a8a58d2e";i:314;s:8:"d9ab2ed6";i:315;s:8:"0465340d";i:316;s:8:"eed4e3f1";i:317;s:8:"7e15ef9d";i:318;s:8:"99444e57";i:319;s:8:"959a6881";i:320;s:8:"e7498e10";i:321;s:8:"d7d0699e";i:322;s:8:"12372566";i:323;s:8:"b9f97c89";i:324;s:8:"5e688172";i:325;s:8:"8105e3b8";i:326;s:8:"627e9227";i:327;s:8:"67edb47d";i:328;s:8:"74e69d5f";i:329;s:8:"b8c5df2c";i:330;s:8:"14f06e80";i:331;s:8:"1a0af27f";i:332;s:8:"fa6ad68b";i:333;s:8:"d5938b0d";i:334;s:8:"2df9b8cc";i:335;s:8:"d90bd16c";i:336;s:8:"18779d24";i:337;s:8:"e1b81866";i:338;s:8:"dc51e106";i:339;s:8:"5078c0ce";i:340;s:8:"8fde3be3";i:341;s:8:"85939b08";i:342;s:8:"50f5565d";i:343;s:8:"281ec5f0";i:344;s:8:"ee2c4dfb";i:345;s:8:"89df2863";i:346;s:8:"0444ef85";i:347;s:8:"d52671b6";i:348;s:8:"84695c5d";i:349;s:8:"ceb19fc9";i:350;s:8:"8cd19595";i:351;s:8:"9773504b";i:352;s:8:"72031351";i:353;s:8:"285de56c";i:354;s:8:"08d949a1";i:355;s:8:"d1d24d60";i:356;s:8:"41c57eff";i:357;s:8:"ded22dfc";i:358;s:8:"9f799eb2";i:359;s:8:"ac14c164";i:360;s:8:"23ab3dac";i:361;s:8:"76de10e0";i:362;s:8:"72c2ac0b";i:363;s:8:"cce93127";i:364;s:8:"32bbb7e5";i:365;s:8:"b8af671a";i:366;s:8:"24dfc65a";i:367;s:8:"d7c8431f";i:368;s:8:"5cf3dffd";i:369;s:8:"7a93645c";i:370;s:8:"36bb66f8";i:371;s:8:"dc055709";i:372;s:8:"93c58efc";i:373;s:8:"11b9a1e6";i:374;s:8:"e487f36b";i:375;s:8:"7c3bcb46";i:376;s:8:"e4d724a3";i:377;s:8:"b732d653";i:378;s:8:"afc9c219";i:379;s:8:"ea658830";i:380;s:8:"b9052af6";i:381;s:8:"aa46a473";i:382;s:8:"1b37a35e";i:383;s:8:"0ba14ee9";i:384;s:8:"c7e150ac";i:385;s:8:"055ffa96";i:386;s:8:"e2bf88fb";i:387;s:8:"88f1f936";i:388;s:8:"488c7bdb";i:389;s:8:"a9dacbd1";i:390;s:8:"aaeea26f";i:391;s:8:"237af1cb";i:392;s:8:"e3dbdb50";i:393;s:8:"c8e5949e";i:394;s:8:"e70a989a";i:395;s:8:"fa540d6d";i:396;s:8:"f055b2f2";i:397;s:8:"1fc8acd4";i:398;s:8:"accb1a9b";i:399;s:8:"bedfb89c";i:400;s:8:"3d243ec0";i:401;s:8:"d2f3f2d8";i:402;s:8:"d83e7c53";i:403;s:8:"4f12e12d";i:404;s:8:"f48f33d1";i:405;s:8:"9555d943";i:406;s:8:"db853a55";i:407;s:8:"506a95b4";i:408;s:8:"408155d1";i:409;s:8:"32a384a0";i:410;s:8:"21c34eb4";i:411;s:8:"93e2e1ae";i:412;s:8:"88582a10";i:413;s:8:"1f065648";i:414;s:8:"96c3c81b";i:415;s:8:"412bc358";i:416;s:8:"11a4e990";i:417;s:8:"805ead73";i:418;s:8:"ec8ca56e";i:419;s:8:"a2ed4bdc";i:420;s:8:"ac408a10";i:421;s:8:"4ca98f96";i:422;s:8:"0686b6df";i:423;s:8:"9e9f7ae4";i:424;s:8:"07d5f658";i:425;s:8:"1c121a0c";i:426;s:8:"c11c8e82";i:427;s:8:"13f2c6d7";i:428;s:8:"e9f6ad9c";i:429;s:8:"bc1dc285";i:430;s:8:"e271fe4b";i:431;s:8:"34114ee5";i:432;s:8:"92ad1c39";i:433;s:8:"5ab5504b";i:434;s:8:"4f7118a7";i:435;s:8:"d1ceec2f";i:436;s:8:"adfd7622";i:437;s:8:"f4f4a9c0";i:438;s:8:"2d4f21e3";i:439;s:8:"3b4bed9e";i:440;s:8:"42ac5810";i:441;s:8:"7eae8db5";i:442;s:8:"09dc329e";i:443;s:8:"3c723314";i:444;s:8:"7fb50c08";i:445;s:8:"71fd69dd";i:446;s:8:"013ce542";i:447;s:8:"0add0d73";i:448;s:8:"465d495a";i:449;s:8:"9f8ddb9d";i:450;s:8:"f293e79e";i:451;s:8:"d6f59d72";i:452;s:8:"ac22e38f";i:453;s:8:"e96d5751";i:454;s:8:"fba79717";i:455;s:8:"39fedf2f";i:456;s:8:"3fb25196";i:457;s:8:"fcdaa825";i:458;s:8:"9a960022";i:459;s:8:"5371af3d";i:460;s:8:"df7faf0a";i:461;s:8:"82c22c85";i:462;s:8:"dfbbae9f";i:463;s:8:"403a4b84";i:464;s:8:"bc938282";i:465;s:8:"d2355fbc";i:466;s:8:"8d72b179";i:467;s:8:"dced02b2";i:468;s:8:"227b82e3";i:469;s:8:"24c60db6";i:470;s:8:"45092b73";i:471;s:8:"767c0e1d";i:472;s:8:"7eb5c592";i:473;s:8:"d0b356d9";i:474;s:8:"dc95ee45";i:475;s:8:"39aa5820";i:476;s:8:"9e6e1868";i:477;s:8:"ffe72d78";i:478;s:8:"82ae0503";i:479;s:8:"2ea981ad";i:480;s:8:"6935faba";i:481;s:8:"69c2ba98";i:482;s:8:"69dd219f";i:483;s:8:"860e0d0d";i:484;s:8:"5f451aa3";i:485;s:8:"a9d5f07d";i:486;s:8:"ec623682";i:487;s:8:"04d8adba";i:488;s:8:"717e8c76";i:489;s:8:"f9c1fb75";i:490;s:8:"ab4c9e06";i:491;s:8:"3895ef4d";i:492;s:8:"37c09060";i:493;s:8:"f3b7c652";i:494;s:8:"74dc421e";i:495;s:8:"97d458be";i:496;s:8:"1a1ddea1";i:497;s:8:"001c68ad";i:498;s:8:"680f033f";i:499;s:8:"b2e9bd38";i:500;s:8:"54192958";i:501;s:8:"b6dd0693";i:502;s:8:"9d149906";i:503;s:8:"9ba5479a";i:504;s:8:"18ba25e8";i:505;s:8:"16fa3e51";i:506;s:8:"1e74b698";i:507;s:8:"c5932028";i:508;s:8:"5a6cf6cd";i:509;s:8:"6fa90e13";i:510;s:8:"bcabdecb";i:511;s:8:"ae23af9a";i:512;s:8:"76b297eb";i:513;s:8:"d1332632";i:514;s:8:"693a55c3";i:515;s:8:"7c4beb9b";i:516;s:8:"409a0a15";i:517;s:8:"60f68335";i:518;s:8:"febcb934";i:519;s:8:"f32c6f8c";i:520;s:8:"aacacf0d";i:521;s:8:"d1f56e99";i:522;s:8:"d65bcf00";i:523;s:8:"361c9633";i:524;s:8:"cd34d7f4";i:525;s:8:"37d38e62";i:526;s:8:"942dee9d";i:527;s:8:"f41c9445";i:528;s:8:"7e9a8b5d";i:529;s:8:"4b941ed7";i:530;s:8:"c6256dce";i:531;s:8:"6c285146";i:532;s:8:"5920147e";i:533;s:8:"934d59ed";i:534;s:8:"5f400a1d";i:535;s:8:"1a5de58c";i:536;s:8:"11e601de";i:537;s:8:"cf4da287";i:538;s:8:"756a54e4";i:539;s:8:"9f2b1015";i:540;s:8:"3a3df642";i:541;s:8:"5d024d64";i:542;s:8:"2d617393";i:543;s:8:"e1b4ec53";i:544;s:8:"24996b5e";i:545;s:8:"7a271bf1";i:546;s:8:"68d7da60";i:547;s:8:"06d3bc73";i:548;s:8:"f21095f7";i:549;s:8:"93e6bfd9";i:550;s:8:"e80b015b";i:551;s:8:"4ddd4ede";i:552;s:8:"cec3d813";i:553;s:8:"281f2a65";i:554;s:8:"ffa068fb";i:555;s:8:"60e712e7";i:556;s:8:"4abcecac";i:557;s:8:"eef01060";i:558;s:8:"8e79e897";i:559;s:8:"b0cd39fe";i:560;s:8:"28cc9604";i:561;s:8:"c7bd58e0";i:562;s:8:"c73b1765";i:563;s:8:"e87d5e07";i:564;s:8:"03b7710d";i:565;s:8:"5f64c5dc";i:566;s:8:"4ae7b6f1";i:567;s:8:"401b9876";i:568;s:8:"9a162522";i:569;s:8:"2a1d6390";i:570;s:8:"c115eeff";i:571;s:8:"e549f7df";i:572;s:8:"a159c579";i:573;s:8:"48a44ff6";i:574;s:8:"e65fd1fc";i:575;s:8:"bb74cd7b";i:576;s:8:"87cc0383";i:577;s:8:"052755ee";i:578;s:8:"eba29b21";i:579;s:8:"88e2efa9";i:580;s:8:"a1a521b9";i:581;s:8:"ffb6f27b";i:582;s:8:"4fea3248";i:583;s:8:"0f46ad03";i:584;s:8:"58902f76";i:585;s:8:"cfb3f87e";i:586;s:8:"efb3d85c";i:587;s:8:"1e0f4648";i:588;s:8:"f95eda47";i:589;s:8:"c5220b0b";i:590;s:8:"e6574ef8";i:591;s:8:"f34b162e";i:592;s:8:"09b08b14";i:593;s:8:"dae53353";i:594;s:8:"ccc600dd";i:595;s:8:"b3ae8f4f";i:596;s:8:"daed379c";i:597;s:8:"113f5973";i:598;s:8:"6a66bb0a";i:599;s:8:"697817f3";i:600;s:8:"00b78167";i:601;s:8:"1e7c2ed9";i:602;s:8:"65f8a3c5";i:603;s:8:"c50f5c14";i:604;s:8:"a1665ca7";i:605;s:8:"d31c5017";i:606;s:8:"2e421193";i:607;s:8:"cb8d29a9";i:608;s:8:"fa9723b5";i:609;s:8:"8a4d18e4";i:610;s:8:"88081a19";i:611;s:8:"242623e4";i:612;s:8:"86202155";i:613;s:8:"ab55982f";i:614;s:8:"f1a3c261";i:615;s:8:"c44eaa91";i:616;s:8:"06c4716f";i:617;s:8:"60a25216";i:618;s:8:"dcce86a3";i:619;s:8:"bfcec0cd";i:620;s:8:"fb4170ed";i:621;s:8:"9bf5e563";i:622;s:8:"04fa51af";i:623;s:8:"dd86eeb1";i:624;i:1000;i:625;i:0;}}')); } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; } // invalid mode try { - unserialize('O:21:"Random\Engine\Mt19937":2:{i:0;a:0:{}i:1;a:626:{i:0;s:8:"5aa6b986";i:1;s:8:"8660cc14";i:2;s:8:"c0b631ca";i:3;s:8:"e85464ad";i:4;s:8:"70fa6108";i:5;s:8:"c5ed9c3c";i:6;s:8:"b05b7ff1";i:7;s:8:"faf33a3a";i:8;s:8:"ab7c0e61";i:9;s:8:"2d4c9c37";i:10;s:8:"daffe918";i:11;s:8:"644f25b9";i:12;s:8:"fdb352e5";i:13;s:8:"434dafa9";i:14;s:8:"a3c9826e";i:15;s:8:"923dfd8c";i:16;s:8:"f641a225";i:17;s:8:"d87134b3";i:18;s:8:"c3b7926e";i:19;s:8:"c880b60d";i:20;s:8:"975f362d";i:21;s:8:"48192b77";i:22;s:8:"6f7dd08b";i:23;s:8:"7d4ad4f8";i:24;s:8:"d805b910";i:25;s:8:"8c98b365";i:26;s:8:"89e54af9";i:27;s:8:"e5257a3c";i:28;s:8:"8f596624";i:29;s:8:"3f42f88a";i:30;s:8:"6a7e95cc";i:31;s:8:"e1349e4d";i:32;s:8:"4539bc92";i:33;s:8:"045a3148";i:34;s:8:"c27cf7b9";i:35;s:8:"c64e8009";i:36;s:8:"dc5ed02e";i:37;s:8:"5753c741";i:38;s:8:"50be0a82";i:39;s:8:"822da0ee";i:40;s:8:"42fdb3c6";i:41;s:8:"c668fc80";i:42;s:8:"262376c6";i:43;s:8:"17b998c6";i:44;s:8:"1f3aac02";i:45;s:8:"6f939c7e";i:46;s:8:"21c099f4";i:47;s:8:"0f4b5c76";i:48;s:8:"64799ac0";i:49;s:8:"45d3bb99";i:50;s:8:"8ff3eb79";i:51;s:8:"61996264";i:52;s:8:"2b9ab1f4";i:53;s:8:"a0d0c50f";i:54;s:8:"f08713ce";i:55;s:8:"6b1cf9d8";i:56;s:8:"52d92cc5";i:57;s:8:"34bcec6f";i:58;s:8:"83ffa063";i:59;s:8:"a002321d";i:60;s:8:"386c46d9";i:61;s:8:"45e2c63e";i:62;s:8:"f481bdf4";i:63;s:8:"df58facb";i:64;s:8:"1781e49b";i:65;s:8:"1d968a6b";i:66;s:8:"8aa7fdd2";i:67;s:8:"631ac8cd";i:68;s:8:"8090ff8e";i:69;s:8:"4ddd4a5d";i:70;s:8:"ff6d8193";i:71;s:8:"39e18244";i:72;s:8:"4efe15db";i:73;s:8:"3fe64cd5";i:74;s:8:"e693a97f";i:75;s:8:"807a34e9";i:76;s:8:"6dc16ae7";i:77;s:8:"a1e1ed1d";i:78;s:8:"605bdc86";i:79;s:8:"abb1830e";i:80;s:8:"2baabeda";i:81;s:8:"fc0f66ad";i:82;s:8:"9cf4fb96";i:83;s:8:"b50ff764";i:84;s:8:"67c37a3d";i:85;s:8:"15253035";i:86;s:8:"387fce47";i:87;s:8:"5c3299a5";i:88;s:8:"125602b9";i:89;s:8:"daeb445c";i:90;s:8:"289e5a8d";i:91;s:8:"b47cd48c";i:92;s:8:"8664db23";i:93;s:8:"b9352af8";i:94;s:8:"51684d88";i:95;s:8:"b204cbc9";i:96;s:8:"e1b6becc";i:97;s:8:"dbbe0ee6";i:98;s:8:"89e54027";i:99;s:8:"a6512564";i:100;s:8:"3aab8d17";i:101;s:8:"7cab5272";i:102;s:8:"1804e981";i:103;s:8:"0bfebe2c";i:104;s:8:"7c082a4c";i:105;s:8:"06bc80c3";i:106;s:8:"c63db839";i:107;s:8:"59edb59d";i:108;s:8:"b52d9655";i:109;s:8:"efce041b";i:110;s:8:"57c1f890";i:111;s:8:"15499697";i:112;s:8:"e0ad3e3a";i:113;s:8:"408d4c16";i:114;s:8:"e53cf468";i:115;s:8:"6ea3d84f";i:116;s:8:"0a2bc4f2";i:117;s:8:"27b59259";i:118;s:8:"d223514b";i:119;s:8:"434c4185";i:120;s:8:"999c71df";i:121;s:8:"46134706";i:122;s:8:"f7f048d0";i:123;s:8:"7f5cfe34";i:124;s:8:"9bdc475c";i:125;s:8:"c1cf42ea";i:126;s:8:"65be324b";i:127;s:8:"68c7a1dc";i:128;s:8:"a7c8c5a2";i:129;s:8:"ecc4cd8a";i:130;s:8:"a761615c";i:131;s:8:"718ec534";i:132;s:8:"c8b086fc";i:133;s:8:"ead759f9";i:134;s:8:"eb9df4a0";i:135;s:8:"ec5b25f9";i:136;s:8:"3a6ff94e";i:137;s:8:"4511a3de";i:138;s:8:"9034f1c6";i:139;s:8:"5c1c6d14";i:140;s:8:"a228ed46";i:141;s:8:"ffe19f2f";i:142;s:8:"f21f68cf";i:143;s:8:"6c2235a4";i:144;s:8:"e0aed51a";i:145;s:8:"2ade527b";i:146;s:8:"65f3c758";i:147;s:8:"f6e868b7";i:148;s:8:"49b770a5";i:149;s:8:"48ab9158";i:150;s:8:"ab07a671";i:151;s:8:"4ef74251";i:152;s:8:"f4cad644";i:153;s:8:"1576c59e";i:154;s:8:"3882bbd1";i:155;s:8:"e49f32c0";i:156;s:8:"c67b757c";i:157;s:8:"3528c5d8";i:158;s:8:"371c3e34";i:159;s:8:"7f1d614f";i:160;s:8:"b9e19e66";i:161;s:8:"80a1d97f";i:162;s:8:"7f93c9f3";i:163;s:8:"4e82ea48";i:164;s:8:"9675e170";i:165;s:8:"aa54caef";i:166;s:8:"3bb9838e";i:167;s:8:"9c0d0a2b";i:168;s:8:"2595d91f";i:169;s:8:"84cc7ff2";i:170;s:8:"9457c4ee";i:171;s:8:"405b6bc8";i:172;s:8:"5aa668a4";i:173;s:8:"e94dfca2";i:174;s:8:"89c0d739";i:175;s:8:"459f8eb3";i:176;s:8:"76b95b42";i:177;s:8:"0e5ceafb";i:178;s:8:"55d4eaee";i:179;s:8:"a55a4784";i:180;s:8:"8c23e133";i:181;s:8:"0994f794";i:182;s:8:"a8d4d1b7";i:183;s:8:"0a50b177";i:184;s:8:"65409f44";i:185;s:8:"acf34e81";i:186;s:8:"e32f278e";i:187;s:8:"7aa21660";i:188;s:8:"9da66881";i:189;s:8:"5c4df7c5";i:190;s:8:"b21f8a4e";i:191;s:8:"d2cc6756";i:192;s:8:"8716f97d";i:193;s:8:"aabd84c5";i:194;s:8:"2e0a965a";i:195;s:8:"b4acc29c";i:196;s:8:"ed3be992";i:197;s:8:"867d9400";i:198;s:8:"a696ba3e";i:199;s:8:"8e2af3d9";i:200;s:8:"8fd95ea9";i:201;s:8:"930903d8";i:202;s:8:"4508dbb1";i:203;s:8:"80598d21";i:204;s:8:"df87fb74";i:205;s:8:"9d019d24";i:206;s:8:"05d5ce2e";i:207;s:8:"ed69bcfe";i:208;s:8:"f83a8d70";i:209;s:8:"750b10bd";i:210;s:8:"c0df892c";i:211;s:8:"df41f215";i:212;s:8:"03df46e3";i:213;s:8:"4e6dce66";i:214;s:8:"ea45a428";i:215;s:8:"cbbf3ff6";i:216;s:8:"f931c7b2";i:217;s:8:"80d19eab";i:218;s:8:"0e2c13da";i:219;s:8:"4b99ee8b";i:220;s:8:"2311d69e";i:221;s:8:"ca9050a7";i:222;s:8:"a4d9eec1";i:223;s:8:"ee665c77";i:224;s:8:"0714f961";i:225;s:8:"81f5be46";i:226;s:8:"420ea4bf";i:227;s:8:"281c28f0";i:228;s:8:"9936ab3f";i:229;s:8:"e4ca8936";i:230;s:8:"224d247b";i:231;s:8:"a564dffe";i:232;s:8:"d15045d2";i:233;s:8:"97d01e8f";i:234;s:8:"71793232";i:235;s:8:"43fe461e";i:236;s:8:"3b50916b";i:237;s:8:"ff242439";i:238;s:8:"a748a0a9";i:239;s:8:"ff51a2a6";i:240;s:8:"dec0ad0d";i:241;s:8:"4bcf2a2e";i:242;s:8:"2be6a97f";i:243;s:8:"eb3e636a";i:244;s:8:"81e31d64";i:245;s:8:"6ca4db9d";i:246;s:8:"bc5bd290";i:247;s:8:"ed2d2ba4";i:248;s:8:"00c46d55";i:249;s:8:"27578407";i:250;s:8:"bedbbcd8";i:251;s:8:"18172abc";i:252;s:8:"eaa5b9cf";i:253;s:8:"9e87ab84";i:254;s:8:"a0e2741c";i:255;s:8:"3bb931ae";i:256;s:8:"3a7b75cd";i:257;s:8:"1052cbf5";i:258;s:8:"b7afd060";i:259;s:8:"1d143d51";i:260;s:8:"17fb7422";i:261;s:8:"523fd346";i:262;s:8:"50429afd";i:263;s:8:"308ece7b";i:264;s:8:"285aa5c1";i:265;s:8:"d8afd736";i:266;s:8:"2e30512e";i:267;s:8:"af78ce36";i:268;s:8:"5967e738";i:269;s:8:"e19795de";i:270;s:8:"6d416e39";i:271;s:8:"23570261";i:272;s:8:"23106924";i:273;s:8:"a4b9add9";i:274;s:8:"baa83e79";i:275;s:8:"97ca48d3";i:276;s:8:"f369a004";i:277;s:8:"fa521bf6";i:278;s:8:"312e9e5e";i:279;s:8:"3acdb850";i:280;s:8:"485cbad7";i:281;s:8:"ddc2d365";i:282;s:8:"d8b87c13";i:283;s:8:"51f6aa7a";i:284;s:8:"b1c231ce";i:285;s:8:"926b9e57";i:286;s:8:"32bd5241";i:287;s:8:"b72cf0a0";i:288;s:8:"0cd99f51";i:289;s:8:"80815c0e";i:290;s:8:"a3459115";i:291;s:8:"5bb05439";i:292;s:8:"ee67a282";i:293;s:8:"65e533c5";i:294;s:8:"62e57b7a";i:295;s:8:"0f4a42fe";i:296;s:8:"ff5b8045";i:297;s:8:"cb9d60cf";i:298;s:8:"ffc891cd";i:299;s:8:"514d6027";i:300;s:8:"5b92df3b";i:301;s:8:"1fb47b1a";i:302;s:8:"a2382db8";i:303;s:8:"6f8b23cd";i:304;s:8:"db72737a";i:305;s:8:"d2d5022b";i:306;s:8:"eef762a7";i:307;s:8:"771fc2ed";i:308;s:8:"6581afb1";i:309;s:8:"64d7ffbd";i:310;s:8:"93a15a65";i:311;s:8:"fdc8b81b";i:312;s:8:"6369357b";i:313;s:8:"a8a58d2e";i:314;s:8:"d9ab2ed6";i:315;s:8:"0465340d";i:316;s:8:"eed4e3f1";i:317;s:8:"7e15ef9d";i:318;s:8:"99444e57";i:319;s:8:"959a6881";i:320;s:8:"e7498e10";i:321;s:8:"d7d0699e";i:322;s:8:"12372566";i:323;s:8:"b9f97c89";i:324;s:8:"5e688172";i:325;s:8:"8105e3b8";i:326;s:8:"627e9227";i:327;s:8:"67edb47d";i:328;s:8:"74e69d5f";i:329;s:8:"b8c5df2c";i:330;s:8:"14f06e80";i:331;s:8:"1a0af27f";i:332;s:8:"fa6ad68b";i:333;s:8:"d5938b0d";i:334;s:8:"2df9b8cc";i:335;s:8:"d90bd16c";i:336;s:8:"18779d24";i:337;s:8:"e1b81866";i:338;s:8:"dc51e106";i:339;s:8:"5078c0ce";i:340;s:8:"8fde3be3";i:341;s:8:"85939b08";i:342;s:8:"50f5565d";i:343;s:8:"281ec5f0";i:344;s:8:"ee2c4dfb";i:345;s:8:"89df2863";i:346;s:8:"0444ef85";i:347;s:8:"d52671b6";i:348;s:8:"84695c5d";i:349;s:8:"ceb19fc9";i:350;s:8:"8cd19595";i:351;s:8:"9773504b";i:352;s:8:"72031351";i:353;s:8:"285de56c";i:354;s:8:"08d949a1";i:355;s:8:"d1d24d60";i:356;s:8:"41c57eff";i:357;s:8:"ded22dfc";i:358;s:8:"9f799eb2";i:359;s:8:"ac14c164";i:360;s:8:"23ab3dac";i:361;s:8:"76de10e0";i:362;s:8:"72c2ac0b";i:363;s:8:"cce93127";i:364;s:8:"32bbb7e5";i:365;s:8:"b8af671a";i:366;s:8:"24dfc65a";i:367;s:8:"d7c8431f";i:368;s:8:"5cf3dffd";i:369;s:8:"7a93645c";i:370;s:8:"36bb66f8";i:371;s:8:"dc055709";i:372;s:8:"93c58efc";i:373;s:8:"11b9a1e6";i:374;s:8:"e487f36b";i:375;s:8:"7c3bcb46";i:376;s:8:"e4d724a3";i:377;s:8:"b732d653";i:378;s:8:"afc9c219";i:379;s:8:"ea658830";i:380;s:8:"b9052af6";i:381;s:8:"aa46a473";i:382;s:8:"1b37a35e";i:383;s:8:"0ba14ee9";i:384;s:8:"c7e150ac";i:385;s:8:"055ffa96";i:386;s:8:"e2bf88fb";i:387;s:8:"88f1f936";i:388;s:8:"488c7bdb";i:389;s:8:"a9dacbd1";i:390;s:8:"aaeea26f";i:391;s:8:"237af1cb";i:392;s:8:"e3dbdb50";i:393;s:8:"c8e5949e";i:394;s:8:"e70a989a";i:395;s:8:"fa540d6d";i:396;s:8:"f055b2f2";i:397;s:8:"1fc8acd4";i:398;s:8:"accb1a9b";i:399;s:8:"bedfb89c";i:400;s:8:"3d243ec0";i:401;s:8:"d2f3f2d8";i:402;s:8:"d83e7c53";i:403;s:8:"4f12e12d";i:404;s:8:"f48f33d1";i:405;s:8:"9555d943";i:406;s:8:"db853a55";i:407;s:8:"506a95b4";i:408;s:8:"408155d1";i:409;s:8:"32a384a0";i:410;s:8:"21c34eb4";i:411;s:8:"93e2e1ae";i:412;s:8:"88582a10";i:413;s:8:"1f065648";i:414;s:8:"96c3c81b";i:415;s:8:"412bc358";i:416;s:8:"11a4e990";i:417;s:8:"805ead73";i:418;s:8:"ec8ca56e";i:419;s:8:"a2ed4bdc";i:420;s:8:"ac408a10";i:421;s:8:"4ca98f96";i:422;s:8:"0686b6df";i:423;s:8:"9e9f7ae4";i:424;s:8:"07d5f658";i:425;s:8:"1c121a0c";i:426;s:8:"c11c8e82";i:427;s:8:"13f2c6d7";i:428;s:8:"e9f6ad9c";i:429;s:8:"bc1dc285";i:430;s:8:"e271fe4b";i:431;s:8:"34114ee5";i:432;s:8:"92ad1c39";i:433;s:8:"5ab5504b";i:434;s:8:"4f7118a7";i:435;s:8:"d1ceec2f";i:436;s:8:"adfd7622";i:437;s:8:"f4f4a9c0";i:438;s:8:"2d4f21e3";i:439;s:8:"3b4bed9e";i:440;s:8:"42ac5810";i:441;s:8:"7eae8db5";i:442;s:8:"09dc329e";i:443;s:8:"3c723314";i:444;s:8:"7fb50c08";i:445;s:8:"71fd69dd";i:446;s:8:"013ce542";i:447;s:8:"0add0d73";i:448;s:8:"465d495a";i:449;s:8:"9f8ddb9d";i:450;s:8:"f293e79e";i:451;s:8:"d6f59d72";i:452;s:8:"ac22e38f";i:453;s:8:"e96d5751";i:454;s:8:"fba79717";i:455;s:8:"39fedf2f";i:456;s:8:"3fb25196";i:457;s:8:"fcdaa825";i:458;s:8:"9a960022";i:459;s:8:"5371af3d";i:460;s:8:"df7faf0a";i:461;s:8:"82c22c85";i:462;s:8:"dfbbae9f";i:463;s:8:"403a4b84";i:464;s:8:"bc938282";i:465;s:8:"d2355fbc";i:466;s:8:"8d72b179";i:467;s:8:"dced02b2";i:468;s:8:"227b82e3";i:469;s:8:"24c60db6";i:470;s:8:"45092b73";i:471;s:8:"767c0e1d";i:472;s:8:"7eb5c592";i:473;s:8:"d0b356d9";i:474;s:8:"dc95ee45";i:475;s:8:"39aa5820";i:476;s:8:"9e6e1868";i:477;s:8:"ffe72d78";i:478;s:8:"82ae0503";i:479;s:8:"2ea981ad";i:480;s:8:"6935faba";i:481;s:8:"69c2ba98";i:482;s:8:"69dd219f";i:483;s:8:"860e0d0d";i:484;s:8:"5f451aa3";i:485;s:8:"a9d5f07d";i:486;s:8:"ec623682";i:487;s:8:"04d8adba";i:488;s:8:"717e8c76";i:489;s:8:"f9c1fb75";i:490;s:8:"ab4c9e06";i:491;s:8:"3895ef4d";i:492;s:8:"37c09060";i:493;s:8:"f3b7c652";i:494;s:8:"74dc421e";i:495;s:8:"97d458be";i:496;s:8:"1a1ddea1";i:497;s:8:"001c68ad";i:498;s:8:"680f033f";i:499;s:8:"b2e9bd38";i:500;s:8:"54192958";i:501;s:8:"b6dd0693";i:502;s:8:"9d149906";i:503;s:8:"9ba5479a";i:504;s:8:"18ba25e8";i:505;s:8:"16fa3e51";i:506;s:8:"1e74b698";i:507;s:8:"c5932028";i:508;s:8:"5a6cf6cd";i:509;s:8:"6fa90e13";i:510;s:8:"bcabdecb";i:511;s:8:"ae23af9a";i:512;s:8:"76b297eb";i:513;s:8:"d1332632";i:514;s:8:"693a55c3";i:515;s:8:"7c4beb9b";i:516;s:8:"409a0a15";i:517;s:8:"60f68335";i:518;s:8:"febcb934";i:519;s:8:"f32c6f8c";i:520;s:8:"aacacf0d";i:521;s:8:"d1f56e99";i:522;s:8:"d65bcf00";i:523;s:8:"361c9633";i:524;s:8:"cd34d7f4";i:525;s:8:"37d38e62";i:526;s:8:"942dee9d";i:527;s:8:"f41c9445";i:528;s:8:"7e9a8b5d";i:529;s:8:"4b941ed7";i:530;s:8:"c6256dce";i:531;s:8:"6c285146";i:532;s:8:"5920147e";i:533;s:8:"934d59ed";i:534;s:8:"5f400a1d";i:535;s:8:"1a5de58c";i:536;s:8:"11e601de";i:537;s:8:"cf4da287";i:538;s:8:"756a54e4";i:539;s:8:"9f2b1015";i:540;s:8:"3a3df642";i:541;s:8:"5d024d64";i:542;s:8:"2d617393";i:543;s:8:"e1b4ec53";i:544;s:8:"24996b5e";i:545;s:8:"7a271bf1";i:546;s:8:"68d7da60";i:547;s:8:"06d3bc73";i:548;s:8:"f21095f7";i:549;s:8:"93e6bfd9";i:550;s:8:"e80b015b";i:551;s:8:"4ddd4ede";i:552;s:8:"cec3d813";i:553;s:8:"281f2a65";i:554;s:8:"ffa068fb";i:555;s:8:"60e712e7";i:556;s:8:"4abcecac";i:557;s:8:"eef01060";i:558;s:8:"8e79e897";i:559;s:8:"b0cd39fe";i:560;s:8:"28cc9604";i:561;s:8:"c7bd58e0";i:562;s:8:"c73b1765";i:563;s:8:"e87d5e07";i:564;s:8:"03b7710d";i:565;s:8:"5f64c5dc";i:566;s:8:"4ae7b6f1";i:567;s:8:"401b9876";i:568;s:8:"9a162522";i:569;s:8:"2a1d6390";i:570;s:8:"c115eeff";i:571;s:8:"e549f7df";i:572;s:8:"a159c579";i:573;s:8:"48a44ff6";i:574;s:8:"e65fd1fc";i:575;s:8:"bb74cd7b";i:576;s:8:"87cc0383";i:577;s:8:"052755ee";i:578;s:8:"eba29b21";i:579;s:8:"88e2efa9";i:580;s:8:"a1a521b9";i:581;s:8:"ffb6f27b";i:582;s:8:"4fea3248";i:583;s:8:"0f46ad03";i:584;s:8:"58902f76";i:585;s:8:"cfb3f87e";i:586;s:8:"efb3d85c";i:587;s:8:"1e0f4648";i:588;s:8:"f95eda47";i:589;s:8:"c5220b0b";i:590;s:8:"e6574ef8";i:591;s:8:"f34b162e";i:592;s:8:"09b08b14";i:593;s:8:"dae53353";i:594;s:8:"ccc600dd";i:595;s:8:"b3ae8f4f";i:596;s:8:"daed379c";i:597;s:8:"113f5973";i:598;s:8:"6a66bb0a";i:599;s:8:"697817f3";i:600;s:8:"00b78167";i:601;s:8:"1e7c2ed9";i:602;s:8:"65f8a3c5";i:603;s:8:"c50f5c14";i:604;s:8:"a1665ca7";i:605;s:8:"d31c5017";i:606;s:8:"2e421193";i:607;s:8:"cb8d29a9";i:608;s:8:"fa9723b5";i:609;s:8:"8a4d18e4";i:610;s:8:"88081a19";i:611;s:8:"242623e4";i:612;s:8:"86202155";i:613;s:8:"ab55982f";i:614;s:8:"f1a3c261";i:615;s:8:"c44eaa91";i:616;s:8:"06c4716f";i:617;s:8:"60a25216";i:618;s:8:"dcce86a3";i:619;s:8:"bfcec0cd";i:620;s:8:"fb4170ed";i:621;s:8:"9bf5e563";i:622;s:8:"04fa51af";i:623;s:8:"dd86eeb1";i:624;i:0;i:625;i:2;}}'); + var_dump(unserialize('O:21:"Random\Engine\Mt19937":2:{i:0;a:0:{}i:1;a:626:{i:0;s:8:"5aa6b986";i:1;s:8:"8660cc14";i:2;s:8:"c0b631ca";i:3;s:8:"e85464ad";i:4;s:8:"70fa6108";i:5;s:8:"c5ed9c3c";i:6;s:8:"b05b7ff1";i:7;s:8:"faf33a3a";i:8;s:8:"ab7c0e61";i:9;s:8:"2d4c9c37";i:10;s:8:"daffe918";i:11;s:8:"644f25b9";i:12;s:8:"fdb352e5";i:13;s:8:"434dafa9";i:14;s:8:"a3c9826e";i:15;s:8:"923dfd8c";i:16;s:8:"f641a225";i:17;s:8:"d87134b3";i:18;s:8:"c3b7926e";i:19;s:8:"c880b60d";i:20;s:8:"975f362d";i:21;s:8:"48192b77";i:22;s:8:"6f7dd08b";i:23;s:8:"7d4ad4f8";i:24;s:8:"d805b910";i:25;s:8:"8c98b365";i:26;s:8:"89e54af9";i:27;s:8:"e5257a3c";i:28;s:8:"8f596624";i:29;s:8:"3f42f88a";i:30;s:8:"6a7e95cc";i:31;s:8:"e1349e4d";i:32;s:8:"4539bc92";i:33;s:8:"045a3148";i:34;s:8:"c27cf7b9";i:35;s:8:"c64e8009";i:36;s:8:"dc5ed02e";i:37;s:8:"5753c741";i:38;s:8:"50be0a82";i:39;s:8:"822da0ee";i:40;s:8:"42fdb3c6";i:41;s:8:"c668fc80";i:42;s:8:"262376c6";i:43;s:8:"17b998c6";i:44;s:8:"1f3aac02";i:45;s:8:"6f939c7e";i:46;s:8:"21c099f4";i:47;s:8:"0f4b5c76";i:48;s:8:"64799ac0";i:49;s:8:"45d3bb99";i:50;s:8:"8ff3eb79";i:51;s:8:"61996264";i:52;s:8:"2b9ab1f4";i:53;s:8:"a0d0c50f";i:54;s:8:"f08713ce";i:55;s:8:"6b1cf9d8";i:56;s:8:"52d92cc5";i:57;s:8:"34bcec6f";i:58;s:8:"83ffa063";i:59;s:8:"a002321d";i:60;s:8:"386c46d9";i:61;s:8:"45e2c63e";i:62;s:8:"f481bdf4";i:63;s:8:"df58facb";i:64;s:8:"1781e49b";i:65;s:8:"1d968a6b";i:66;s:8:"8aa7fdd2";i:67;s:8:"631ac8cd";i:68;s:8:"8090ff8e";i:69;s:8:"4ddd4a5d";i:70;s:8:"ff6d8193";i:71;s:8:"39e18244";i:72;s:8:"4efe15db";i:73;s:8:"3fe64cd5";i:74;s:8:"e693a97f";i:75;s:8:"807a34e9";i:76;s:8:"6dc16ae7";i:77;s:8:"a1e1ed1d";i:78;s:8:"605bdc86";i:79;s:8:"abb1830e";i:80;s:8:"2baabeda";i:81;s:8:"fc0f66ad";i:82;s:8:"9cf4fb96";i:83;s:8:"b50ff764";i:84;s:8:"67c37a3d";i:85;s:8:"15253035";i:86;s:8:"387fce47";i:87;s:8:"5c3299a5";i:88;s:8:"125602b9";i:89;s:8:"daeb445c";i:90;s:8:"289e5a8d";i:91;s:8:"b47cd48c";i:92;s:8:"8664db23";i:93;s:8:"b9352af8";i:94;s:8:"51684d88";i:95;s:8:"b204cbc9";i:96;s:8:"e1b6becc";i:97;s:8:"dbbe0ee6";i:98;s:8:"89e54027";i:99;s:8:"a6512564";i:100;s:8:"3aab8d17";i:101;s:8:"7cab5272";i:102;s:8:"1804e981";i:103;s:8:"0bfebe2c";i:104;s:8:"7c082a4c";i:105;s:8:"06bc80c3";i:106;s:8:"c63db839";i:107;s:8:"59edb59d";i:108;s:8:"b52d9655";i:109;s:8:"efce041b";i:110;s:8:"57c1f890";i:111;s:8:"15499697";i:112;s:8:"e0ad3e3a";i:113;s:8:"408d4c16";i:114;s:8:"e53cf468";i:115;s:8:"6ea3d84f";i:116;s:8:"0a2bc4f2";i:117;s:8:"27b59259";i:118;s:8:"d223514b";i:119;s:8:"434c4185";i:120;s:8:"999c71df";i:121;s:8:"46134706";i:122;s:8:"f7f048d0";i:123;s:8:"7f5cfe34";i:124;s:8:"9bdc475c";i:125;s:8:"c1cf42ea";i:126;s:8:"65be324b";i:127;s:8:"68c7a1dc";i:128;s:8:"a7c8c5a2";i:129;s:8:"ecc4cd8a";i:130;s:8:"a761615c";i:131;s:8:"718ec534";i:132;s:8:"c8b086fc";i:133;s:8:"ead759f9";i:134;s:8:"eb9df4a0";i:135;s:8:"ec5b25f9";i:136;s:8:"3a6ff94e";i:137;s:8:"4511a3de";i:138;s:8:"9034f1c6";i:139;s:8:"5c1c6d14";i:140;s:8:"a228ed46";i:141;s:8:"ffe19f2f";i:142;s:8:"f21f68cf";i:143;s:8:"6c2235a4";i:144;s:8:"e0aed51a";i:145;s:8:"2ade527b";i:146;s:8:"65f3c758";i:147;s:8:"f6e868b7";i:148;s:8:"49b770a5";i:149;s:8:"48ab9158";i:150;s:8:"ab07a671";i:151;s:8:"4ef74251";i:152;s:8:"f4cad644";i:153;s:8:"1576c59e";i:154;s:8:"3882bbd1";i:155;s:8:"e49f32c0";i:156;s:8:"c67b757c";i:157;s:8:"3528c5d8";i:158;s:8:"371c3e34";i:159;s:8:"7f1d614f";i:160;s:8:"b9e19e66";i:161;s:8:"80a1d97f";i:162;s:8:"7f93c9f3";i:163;s:8:"4e82ea48";i:164;s:8:"9675e170";i:165;s:8:"aa54caef";i:166;s:8:"3bb9838e";i:167;s:8:"9c0d0a2b";i:168;s:8:"2595d91f";i:169;s:8:"84cc7ff2";i:170;s:8:"9457c4ee";i:171;s:8:"405b6bc8";i:172;s:8:"5aa668a4";i:173;s:8:"e94dfca2";i:174;s:8:"89c0d739";i:175;s:8:"459f8eb3";i:176;s:8:"76b95b42";i:177;s:8:"0e5ceafb";i:178;s:8:"55d4eaee";i:179;s:8:"a55a4784";i:180;s:8:"8c23e133";i:181;s:8:"0994f794";i:182;s:8:"a8d4d1b7";i:183;s:8:"0a50b177";i:184;s:8:"65409f44";i:185;s:8:"acf34e81";i:186;s:8:"e32f278e";i:187;s:8:"7aa21660";i:188;s:8:"9da66881";i:189;s:8:"5c4df7c5";i:190;s:8:"b21f8a4e";i:191;s:8:"d2cc6756";i:192;s:8:"8716f97d";i:193;s:8:"aabd84c5";i:194;s:8:"2e0a965a";i:195;s:8:"b4acc29c";i:196;s:8:"ed3be992";i:197;s:8:"867d9400";i:198;s:8:"a696ba3e";i:199;s:8:"8e2af3d9";i:200;s:8:"8fd95ea9";i:201;s:8:"930903d8";i:202;s:8:"4508dbb1";i:203;s:8:"80598d21";i:204;s:8:"df87fb74";i:205;s:8:"9d019d24";i:206;s:8:"05d5ce2e";i:207;s:8:"ed69bcfe";i:208;s:8:"f83a8d70";i:209;s:8:"750b10bd";i:210;s:8:"c0df892c";i:211;s:8:"df41f215";i:212;s:8:"03df46e3";i:213;s:8:"4e6dce66";i:214;s:8:"ea45a428";i:215;s:8:"cbbf3ff6";i:216;s:8:"f931c7b2";i:217;s:8:"80d19eab";i:218;s:8:"0e2c13da";i:219;s:8:"4b99ee8b";i:220;s:8:"2311d69e";i:221;s:8:"ca9050a7";i:222;s:8:"a4d9eec1";i:223;s:8:"ee665c77";i:224;s:8:"0714f961";i:225;s:8:"81f5be46";i:226;s:8:"420ea4bf";i:227;s:8:"281c28f0";i:228;s:8:"9936ab3f";i:229;s:8:"e4ca8936";i:230;s:8:"224d247b";i:231;s:8:"a564dffe";i:232;s:8:"d15045d2";i:233;s:8:"97d01e8f";i:234;s:8:"71793232";i:235;s:8:"43fe461e";i:236;s:8:"3b50916b";i:237;s:8:"ff242439";i:238;s:8:"a748a0a9";i:239;s:8:"ff51a2a6";i:240;s:8:"dec0ad0d";i:241;s:8:"4bcf2a2e";i:242;s:8:"2be6a97f";i:243;s:8:"eb3e636a";i:244;s:8:"81e31d64";i:245;s:8:"6ca4db9d";i:246;s:8:"bc5bd290";i:247;s:8:"ed2d2ba4";i:248;s:8:"00c46d55";i:249;s:8:"27578407";i:250;s:8:"bedbbcd8";i:251;s:8:"18172abc";i:252;s:8:"eaa5b9cf";i:253;s:8:"9e87ab84";i:254;s:8:"a0e2741c";i:255;s:8:"3bb931ae";i:256;s:8:"3a7b75cd";i:257;s:8:"1052cbf5";i:258;s:8:"b7afd060";i:259;s:8:"1d143d51";i:260;s:8:"17fb7422";i:261;s:8:"523fd346";i:262;s:8:"50429afd";i:263;s:8:"308ece7b";i:264;s:8:"285aa5c1";i:265;s:8:"d8afd736";i:266;s:8:"2e30512e";i:267;s:8:"af78ce36";i:268;s:8:"5967e738";i:269;s:8:"e19795de";i:270;s:8:"6d416e39";i:271;s:8:"23570261";i:272;s:8:"23106924";i:273;s:8:"a4b9add9";i:274;s:8:"baa83e79";i:275;s:8:"97ca48d3";i:276;s:8:"f369a004";i:277;s:8:"fa521bf6";i:278;s:8:"312e9e5e";i:279;s:8:"3acdb850";i:280;s:8:"485cbad7";i:281;s:8:"ddc2d365";i:282;s:8:"d8b87c13";i:283;s:8:"51f6aa7a";i:284;s:8:"b1c231ce";i:285;s:8:"926b9e57";i:286;s:8:"32bd5241";i:287;s:8:"b72cf0a0";i:288;s:8:"0cd99f51";i:289;s:8:"80815c0e";i:290;s:8:"a3459115";i:291;s:8:"5bb05439";i:292;s:8:"ee67a282";i:293;s:8:"65e533c5";i:294;s:8:"62e57b7a";i:295;s:8:"0f4a42fe";i:296;s:8:"ff5b8045";i:297;s:8:"cb9d60cf";i:298;s:8:"ffc891cd";i:299;s:8:"514d6027";i:300;s:8:"5b92df3b";i:301;s:8:"1fb47b1a";i:302;s:8:"a2382db8";i:303;s:8:"6f8b23cd";i:304;s:8:"db72737a";i:305;s:8:"d2d5022b";i:306;s:8:"eef762a7";i:307;s:8:"771fc2ed";i:308;s:8:"6581afb1";i:309;s:8:"64d7ffbd";i:310;s:8:"93a15a65";i:311;s:8:"fdc8b81b";i:312;s:8:"6369357b";i:313;s:8:"a8a58d2e";i:314;s:8:"d9ab2ed6";i:315;s:8:"0465340d";i:316;s:8:"eed4e3f1";i:317;s:8:"7e15ef9d";i:318;s:8:"99444e57";i:319;s:8:"959a6881";i:320;s:8:"e7498e10";i:321;s:8:"d7d0699e";i:322;s:8:"12372566";i:323;s:8:"b9f97c89";i:324;s:8:"5e688172";i:325;s:8:"8105e3b8";i:326;s:8:"627e9227";i:327;s:8:"67edb47d";i:328;s:8:"74e69d5f";i:329;s:8:"b8c5df2c";i:330;s:8:"14f06e80";i:331;s:8:"1a0af27f";i:332;s:8:"fa6ad68b";i:333;s:8:"d5938b0d";i:334;s:8:"2df9b8cc";i:335;s:8:"d90bd16c";i:336;s:8:"18779d24";i:337;s:8:"e1b81866";i:338;s:8:"dc51e106";i:339;s:8:"5078c0ce";i:340;s:8:"8fde3be3";i:341;s:8:"85939b08";i:342;s:8:"50f5565d";i:343;s:8:"281ec5f0";i:344;s:8:"ee2c4dfb";i:345;s:8:"89df2863";i:346;s:8:"0444ef85";i:347;s:8:"d52671b6";i:348;s:8:"84695c5d";i:349;s:8:"ceb19fc9";i:350;s:8:"8cd19595";i:351;s:8:"9773504b";i:352;s:8:"72031351";i:353;s:8:"285de56c";i:354;s:8:"08d949a1";i:355;s:8:"d1d24d60";i:356;s:8:"41c57eff";i:357;s:8:"ded22dfc";i:358;s:8:"9f799eb2";i:359;s:8:"ac14c164";i:360;s:8:"23ab3dac";i:361;s:8:"76de10e0";i:362;s:8:"72c2ac0b";i:363;s:8:"cce93127";i:364;s:8:"32bbb7e5";i:365;s:8:"b8af671a";i:366;s:8:"24dfc65a";i:367;s:8:"d7c8431f";i:368;s:8:"5cf3dffd";i:369;s:8:"7a93645c";i:370;s:8:"36bb66f8";i:371;s:8:"dc055709";i:372;s:8:"93c58efc";i:373;s:8:"11b9a1e6";i:374;s:8:"e487f36b";i:375;s:8:"7c3bcb46";i:376;s:8:"e4d724a3";i:377;s:8:"b732d653";i:378;s:8:"afc9c219";i:379;s:8:"ea658830";i:380;s:8:"b9052af6";i:381;s:8:"aa46a473";i:382;s:8:"1b37a35e";i:383;s:8:"0ba14ee9";i:384;s:8:"c7e150ac";i:385;s:8:"055ffa96";i:386;s:8:"e2bf88fb";i:387;s:8:"88f1f936";i:388;s:8:"488c7bdb";i:389;s:8:"a9dacbd1";i:390;s:8:"aaeea26f";i:391;s:8:"237af1cb";i:392;s:8:"e3dbdb50";i:393;s:8:"c8e5949e";i:394;s:8:"e70a989a";i:395;s:8:"fa540d6d";i:396;s:8:"f055b2f2";i:397;s:8:"1fc8acd4";i:398;s:8:"accb1a9b";i:399;s:8:"bedfb89c";i:400;s:8:"3d243ec0";i:401;s:8:"d2f3f2d8";i:402;s:8:"d83e7c53";i:403;s:8:"4f12e12d";i:404;s:8:"f48f33d1";i:405;s:8:"9555d943";i:406;s:8:"db853a55";i:407;s:8:"506a95b4";i:408;s:8:"408155d1";i:409;s:8:"32a384a0";i:410;s:8:"21c34eb4";i:411;s:8:"93e2e1ae";i:412;s:8:"88582a10";i:413;s:8:"1f065648";i:414;s:8:"96c3c81b";i:415;s:8:"412bc358";i:416;s:8:"11a4e990";i:417;s:8:"805ead73";i:418;s:8:"ec8ca56e";i:419;s:8:"a2ed4bdc";i:420;s:8:"ac408a10";i:421;s:8:"4ca98f96";i:422;s:8:"0686b6df";i:423;s:8:"9e9f7ae4";i:424;s:8:"07d5f658";i:425;s:8:"1c121a0c";i:426;s:8:"c11c8e82";i:427;s:8:"13f2c6d7";i:428;s:8:"e9f6ad9c";i:429;s:8:"bc1dc285";i:430;s:8:"e271fe4b";i:431;s:8:"34114ee5";i:432;s:8:"92ad1c39";i:433;s:8:"5ab5504b";i:434;s:8:"4f7118a7";i:435;s:8:"d1ceec2f";i:436;s:8:"adfd7622";i:437;s:8:"f4f4a9c0";i:438;s:8:"2d4f21e3";i:439;s:8:"3b4bed9e";i:440;s:8:"42ac5810";i:441;s:8:"7eae8db5";i:442;s:8:"09dc329e";i:443;s:8:"3c723314";i:444;s:8:"7fb50c08";i:445;s:8:"71fd69dd";i:446;s:8:"013ce542";i:447;s:8:"0add0d73";i:448;s:8:"465d495a";i:449;s:8:"9f8ddb9d";i:450;s:8:"f293e79e";i:451;s:8:"d6f59d72";i:452;s:8:"ac22e38f";i:453;s:8:"e96d5751";i:454;s:8:"fba79717";i:455;s:8:"39fedf2f";i:456;s:8:"3fb25196";i:457;s:8:"fcdaa825";i:458;s:8:"9a960022";i:459;s:8:"5371af3d";i:460;s:8:"df7faf0a";i:461;s:8:"82c22c85";i:462;s:8:"dfbbae9f";i:463;s:8:"403a4b84";i:464;s:8:"bc938282";i:465;s:8:"d2355fbc";i:466;s:8:"8d72b179";i:467;s:8:"dced02b2";i:468;s:8:"227b82e3";i:469;s:8:"24c60db6";i:470;s:8:"45092b73";i:471;s:8:"767c0e1d";i:472;s:8:"7eb5c592";i:473;s:8:"d0b356d9";i:474;s:8:"dc95ee45";i:475;s:8:"39aa5820";i:476;s:8:"9e6e1868";i:477;s:8:"ffe72d78";i:478;s:8:"82ae0503";i:479;s:8:"2ea981ad";i:480;s:8:"6935faba";i:481;s:8:"69c2ba98";i:482;s:8:"69dd219f";i:483;s:8:"860e0d0d";i:484;s:8:"5f451aa3";i:485;s:8:"a9d5f07d";i:486;s:8:"ec623682";i:487;s:8:"04d8adba";i:488;s:8:"717e8c76";i:489;s:8:"f9c1fb75";i:490;s:8:"ab4c9e06";i:491;s:8:"3895ef4d";i:492;s:8:"37c09060";i:493;s:8:"f3b7c652";i:494;s:8:"74dc421e";i:495;s:8:"97d458be";i:496;s:8:"1a1ddea1";i:497;s:8:"001c68ad";i:498;s:8:"680f033f";i:499;s:8:"b2e9bd38";i:500;s:8:"54192958";i:501;s:8:"b6dd0693";i:502;s:8:"9d149906";i:503;s:8:"9ba5479a";i:504;s:8:"18ba25e8";i:505;s:8:"16fa3e51";i:506;s:8:"1e74b698";i:507;s:8:"c5932028";i:508;s:8:"5a6cf6cd";i:509;s:8:"6fa90e13";i:510;s:8:"bcabdecb";i:511;s:8:"ae23af9a";i:512;s:8:"76b297eb";i:513;s:8:"d1332632";i:514;s:8:"693a55c3";i:515;s:8:"7c4beb9b";i:516;s:8:"409a0a15";i:517;s:8:"60f68335";i:518;s:8:"febcb934";i:519;s:8:"f32c6f8c";i:520;s:8:"aacacf0d";i:521;s:8:"d1f56e99";i:522;s:8:"d65bcf00";i:523;s:8:"361c9633";i:524;s:8:"cd34d7f4";i:525;s:8:"37d38e62";i:526;s:8:"942dee9d";i:527;s:8:"f41c9445";i:528;s:8:"7e9a8b5d";i:529;s:8:"4b941ed7";i:530;s:8:"c6256dce";i:531;s:8:"6c285146";i:532;s:8:"5920147e";i:533;s:8:"934d59ed";i:534;s:8:"5f400a1d";i:535;s:8:"1a5de58c";i:536;s:8:"11e601de";i:537;s:8:"cf4da287";i:538;s:8:"756a54e4";i:539;s:8:"9f2b1015";i:540;s:8:"3a3df642";i:541;s:8:"5d024d64";i:542;s:8:"2d617393";i:543;s:8:"e1b4ec53";i:544;s:8:"24996b5e";i:545;s:8:"7a271bf1";i:546;s:8:"68d7da60";i:547;s:8:"06d3bc73";i:548;s:8:"f21095f7";i:549;s:8:"93e6bfd9";i:550;s:8:"e80b015b";i:551;s:8:"4ddd4ede";i:552;s:8:"cec3d813";i:553;s:8:"281f2a65";i:554;s:8:"ffa068fb";i:555;s:8:"60e712e7";i:556;s:8:"4abcecac";i:557;s:8:"eef01060";i:558;s:8:"8e79e897";i:559;s:8:"b0cd39fe";i:560;s:8:"28cc9604";i:561;s:8:"c7bd58e0";i:562;s:8:"c73b1765";i:563;s:8:"e87d5e07";i:564;s:8:"03b7710d";i:565;s:8:"5f64c5dc";i:566;s:8:"4ae7b6f1";i:567;s:8:"401b9876";i:568;s:8:"9a162522";i:569;s:8:"2a1d6390";i:570;s:8:"c115eeff";i:571;s:8:"e549f7df";i:572;s:8:"a159c579";i:573;s:8:"48a44ff6";i:574;s:8:"e65fd1fc";i:575;s:8:"bb74cd7b";i:576;s:8:"87cc0383";i:577;s:8:"052755ee";i:578;s:8:"eba29b21";i:579;s:8:"88e2efa9";i:580;s:8:"a1a521b9";i:581;s:8:"ffb6f27b";i:582;s:8:"4fea3248";i:583;s:8:"0f46ad03";i:584;s:8:"58902f76";i:585;s:8:"cfb3f87e";i:586;s:8:"efb3d85c";i:587;s:8:"1e0f4648";i:588;s:8:"f95eda47";i:589;s:8:"c5220b0b";i:590;s:8:"e6574ef8";i:591;s:8:"f34b162e";i:592;s:8:"09b08b14";i:593;s:8:"dae53353";i:594;s:8:"ccc600dd";i:595;s:8:"b3ae8f4f";i:596;s:8:"daed379c";i:597;s:8:"113f5973";i:598;s:8:"6a66bb0a";i:599;s:8:"697817f3";i:600;s:8:"00b78167";i:601;s:8:"1e7c2ed9";i:602;s:8:"65f8a3c5";i:603;s:8:"c50f5c14";i:604;s:8:"a1665ca7";i:605;s:8:"d31c5017";i:606;s:8:"2e421193";i:607;s:8:"cb8d29a9";i:608;s:8:"fa9723b5";i:609;s:8:"8a4d18e4";i:610;s:8:"88081a19";i:611;s:8:"242623e4";i:612;s:8:"86202155";i:613;s:8:"ab55982f";i:614;s:8:"f1a3c261";i:615;s:8:"c44eaa91";i:616;s:8:"06c4716f";i:617;s:8:"60a25216";i:618;s:8:"dcce86a3";i:619;s:8:"bfcec0cd";i:620;s:8:"fb4170ed";i:621;s:8:"9bf5e563";i:622;s:8:"04fa51af";i:623;s:8:"dd86eeb1";i:624;i:0;i:625;i:2;}}')); } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; } +echo PHP_EOL, PHP_EOL; -echo \Random\Engine\PcgOneseq128XslRr64::class . PHP_EOL; +echo \Random\Engine\PcgOneseq128XslRr64::class, PHP_EOL; // malformed hex try { - unserialize('O:33:"Random\Engine\PcgOneseq128XslRr64":2:{i:0;a:0:{}i:1;a:2:{i:0;s:15:"c6d571c37c41a8d";i:1;s:16:"345e7e82265d6e27";}}'); + var_dump(unserialize('O:33:"Random\Engine\PcgOneseq128XslRr64":2:{i:0;a:0:{}i:1;a:2:{i:0;s:15:"c6d571c37c41a8d";i:1;s:16:"345e7e82265d6e27";}}')); } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; } // invalid hex try { - unserialize('O:33:"Random\Engine\PcgOneseq128XslRr64":2:{i:0;a:0:{}i:1;a:2:{i:0;s:16:"c6d571c37c41a8d1";i:1;s:16:"345e7e82265d6e2g";}}'); + var_dump(unserialize('O:33:"Random\Engine\PcgOneseq128XslRr64":2:{i:0;a:0:{}i:1;a:2:{i:0;s:16:"c6d571c37c41a8d1";i:1;s:16:"345e7e82265d6e2g";}}')); } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; } +echo PHP_EOL, PHP_EOL; -echo \Random\Engine\Xoshiro256StarStar::class . PHP_EOL; +echo \Random\Engine\Xoshiro256StarStar::class, PHP_EOL; // malformed hex try { - unserialize('O:32:"Random\Engine\Xoshiro256StarStar":2:{i:0;a:0:{}i:1;a:4:{i:0;s:15:"db1c182f1bf60cb";i:1;s:16:"2465f04d36a1c797";i:2;s:16:"da25c09be4fabe33";i:3;s:16:"33a0d052f241624e";}}'); + var_dump(unserialize('O:32:"Random\Engine\Xoshiro256StarStar":2:{i:0;a:0:{}i:1;a:4:{i:0;s:15:"db1c182f1bf60cb";i:1;s:16:"2465f04d36a1c797";i:2;s:16:"da25c09be4fabe33";i:3;s:16:"33a0d052f241624e";}}')); } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; } // invalid hex try { - unserialize('O:32:"Random\Engine\Xoshiro256StarStar":2:{i:0;a:0:{}i:1;a:4:{i:0;s:16:"db1c182f1bf60cbb";i:1;s:16:"2465f04d36a1c797";i:2;s:16:"da25c09be4fabe33";i:3;s:16:"33a0d052f241624g";}}'); + var_dump(unserialize('O:32:"Random\Engine\Xoshiro256StarStar":2:{i:0;a:0:{}i:1;a:4:{i:0;s:16:"db1c182f1bf60cbb";i:1;s:16:"2465f04d36a1c797";i:2;s:16:"da25c09be4fabe33";i:3;s:16:"33a0d052f241624g";}}')); } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; + echo $e->getMessage(), PHP_EOL; +} + +// additional array values (1) +try { + var_dump(unserialize('O:32:"Random\Engine\Xoshiro256StarStar":3:{i:0;a:0:{}i:1;a:4:{i:0;s:16:"db1c182f1bf60cbb";i:1;s:16:"2465f04d36a1c797";i:2;s:16:"da25c09be4fabe33";i:3;s:16:"33a0d052f241624e";}i:2;N;}')); +} catch (\Exception $e) { + echo $e->getMessage(), PHP_EOL; +} + +// additional array values (2) +try { + var_dump(unserialize('O:32:"Random\Engine\Xoshiro256StarStar":2:{i:0;a:0:{}i:1;a:5:{i:0;s:16:"db1c182f1bf60cbb";i:1;s:16:"2465f04d36a1c797";i:2;s:16:"da25c09be4fabe33";i:3;s:16:"33a0d052f241624e";i:4;N;}}')); +} catch (\Exception $e) { + echo $e->getMessage(), PHP_EOL; } ?> @@ -69,9 +85,15 @@ Invalid serialization data for Random\Engine\Mt19937 object Invalid serialization data for Random\Engine\Mt19937 object Invalid serialization data for Random\Engine\Mt19937 object Invalid serialization data for Random\Engine\Mt19937 object + + Random\Engine\PcgOneseq128XslRr64 Invalid serialization data for Random\Engine\PcgOneseq128XslRr64 object Invalid serialization data for Random\Engine\PcgOneseq128XslRr64 object + + Random\Engine\Xoshiro256StarStar Invalid serialization data for Random\Engine\Xoshiro256StarStar object Invalid serialization data for Random\Engine\Xoshiro256StarStar object +Invalid serialization data for Random\Engine\Xoshiro256StarStar object +Invalid serialization data for Random\Engine\Xoshiro256StarStar object diff --git a/ext/random/tests/02_engine/all_serialize_native.phpt b/ext/random/tests/02_engine/all_serialize_native.phpt index 768979a88bdfa..cadb208a66422 100644 --- a/ext/random/tests/02_engine/all_serialize_native.phpt +++ b/ext/random/tests/02_engine/all_serialize_native.phpt @@ -1,27 +1,38 @@ --TEST-- -Random: Engine: serialize: native +Random: Engine: Serialization of native engines must preserve the sequence --FILE-- generate(); } + $engine2 = unserialize(serialize($engine)); - for ($i = 0; $i < 5000; $i++) { + + for ($i = 0; $i < 10_000; $i++) { if ($engine->generate() !== $engine2->generate()) { - $className = $engine::class; - die("failure class: {$className} i: {$i}"); + die("failure: state differs at {$i}"); } } } die('success'); + ?> --EXPECT-- +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar success diff --git a/ext/random/tests/02_engine/all_serialize_user.phpt b/ext/random/tests/02_engine/all_serialize_user.phpt index 7d2b05bfdba37..9ae742314f5af 100644 --- a/ext/random/tests/02_engine/all_serialize_user.phpt +++ b/ext/random/tests/02_engine/all_serialize_user.phpt @@ -1,48 +1,47 @@ ---TEST-- -Random: Engine: serialize: user ---FILE-- -count); - } -} - -final class User32 implements \Random\Engine -{ - private int $count = 0; - - public function generate(): string - { - return \pack('V', ++$this->count); - } -} - -$engines = []; -if (\PHP_INT_SIZE >= 8) { - $engines[] = new \User64(); -} -$engines[] = new \User32(); - -foreach ($engines as $engine) { - for ($i = 0; $i < 1000; $i++) { - $engine->generate(); - } - $engine2 = unserialize(serialize($engine)); - for ($i = 0; $i < 5000; $i++) { - if ($engine->generate() !== $engine2->generate()) { - $className = $engine::class; - die("failure class: {$className} i: {$i}"); - } - } -} - -die('success'); -?> ---EXPECT-- -success +--TEST-- +Random: Engine: Serialization of user engines must preserve the sequence +--FILE-- +count); + } +} + +$engines = []; +$engines[] = new CountingEngine32(); +$engines[] = new TestShaEngine(); + +foreach ($engines as $engine) { + echo $engine::class, PHP_EOL; + + for ($i = 0; $i < 10_000; $i++) { + $engine->generate(); + } + + $engine2 = unserialize(serialize($engine)); + + for ($i = 0; $i < 10_000; $i++) { + if ($engine->generate() !== $engine2->generate()) { + die("failure: state differs at {$i}"); + } + } +} + +die('success'); + +?> +--EXPECT-- +CountingEngine32 +Random\Engine\Test\TestShaEngine +success diff --git a/ext/random/tests/02_engine/mt19937_error.phpt b/ext/random/tests/02_engine/mt19937_error.phpt index bdbea8df8d8e6..dcbc21aa6bed3 100644 --- a/ext/random/tests/02_engine/mt19937_error.phpt +++ b/ext/random/tests/02_engine/mt19937_error.phpt @@ -1,11 +1,13 @@ --TEST-- -Random: Engine: Mt19937: error pattern +Random: Engine: Mt19937: Invalid $mode parameter values must be rejected --FILE-- getMessage(), PHP_EOL; } diff --git a/ext/random/tests/02_engine/mt19937_serialize.phpt b/ext/random/tests/02_engine/mt19937_serialize.phpt index 5621263793f2f..600d617dbcf69 100644 --- a/ext/random/tests/02_engine/mt19937_serialize.phpt +++ b/ext/random/tests/02_engine/mt19937_serialize.phpt @@ -1,9 +1,11 @@ --TEST-- -Random: Engine: Mt19937: serialize +Random: Engine: Mt19937: The serialization output must be stable --FILE-- --EXPECT-- diff --git a/ext/random/tests/02_engine/mt19937_value.phpt b/ext/random/tests/02_engine/mt19937_value.phpt index e90d3e69e3e05..11afbd0f75134 100644 --- a/ext/random/tests/02_engine/mt19937_value.phpt +++ b/ext/random/tests/02_engine/mt19937_value.phpt @@ -1,15 +1,18 @@ --TEST-- -Random: Engine: Mt19937: value +Random: Engine: Mt19937: For a reference seed a fixed reference value must be generated --FILE-- generate(); } -echo \bin2hex($engine->generate()); +var_dump(bin2hex($engine->generate())); + ?> --EXPECT-- -60fe95d9 +string(8) "60fe95d9" diff --git a/ext/random/tests/02_engine/pcgoneseq128xslrr64_jump_error.phpt b/ext/random/tests/02_engine/pcgoneseq128xslrr64_jump_error.phpt index 207c146acb30c..cbc6e370b1733 100644 --- a/ext/random/tests/02_engine/pcgoneseq128xslrr64_jump_error.phpt +++ b/ext/random/tests/02_engine/pcgoneseq128xslrr64_jump_error.phpt @@ -1,10 +1,12 @@ --TEST-- -Random: Engine: PcgOneseq128XslRr64: Jump with negative $advance +Random: Engine: PcgOneseq128XslRr64: Negative jumps must be rejected --FILE-- jump(-1); @@ -12,11 +14,14 @@ try { echo $e->getMessage(), PHP_EOL; } -if ($engine->generate() !== $referenceEngine->generate()) { - die('failure: state changed'); +for ($i = 0; $i < 10_000; $i++) { + if ($engine->generate() !== $referenceEngine->generate()) { + die("failure: state differs at {$i}"); + } } die('success'); + ?> --EXPECT-- Random\Engine\PcgOneseq128XslRr64::jump(): Argument #1 ($advance) must be greater than or equal to 0 diff --git a/ext/random/tests/02_engine/pcgoneseq128xslrr64_seed.phpt b/ext/random/tests/02_engine/pcgoneseq128xslrr64_seed.phpt index af5ea33f24d0b..b31177fba017a 100644 --- a/ext/random/tests/02_engine/pcgoneseq128xslrr64_seed.phpt +++ b/ext/random/tests/02_engine/pcgoneseq128xslrr64_seed.phpt @@ -1,37 +1,63 @@ --TEST-- -Random: Engine: PcgOneseq128XslRr64: seed +Random: Engine: PcgOneseq128XslRr64: The seed parameter must work as expected --FILE-- getMessage() . PHP_EOL; + $engine = new PcgOneseq128XslRr64(1.0); +} catch (TypeError $e) { + echo $e->getMessage(), PHP_EOL; } +echo PHP_EOL, PHP_EOL; +echo "Invalid string seed length", PHP_EOL; try { - $engine = new Random\Engine\PcgOneseq128XslRr64('foobar'); -} catch (\Throwable $e) { - echo $e->getMessage() . PHP_EOL; + $engine = new PcgOneseq128XslRr64('foobar'); +} catch (ValueError $e) { + echo $e->getMessage(), PHP_EOL; } +echo PHP_EOL, PHP_EOL; -$engine = new \Random\Engine\PcgOneseq128XslRr64("\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x03\x04\x05\x06\x07\x08"); +echo "Valid string seed", PHP_EOL; +$engine = new PcgOneseq128XslRr64(str_repeat("\x01\x02\x03\x04\x05\x06\x07\x08", 2)); -\var_dump($engine); +var_dump($engine); for ($i = 0; $i < 1000; $i++) { $engine->generate(); } -\var_dump(\bin2hex($engine->generate())); + +var_dump(bin2hex($engine->generate())); ?> ---EXPECTF-- +--EXPECT-- +Random integer seed + + +Random string seed + + +Invalid data type Random\Engine\PcgOneseq128XslRr64::__construct(): Argument #1 ($seed) must be of type string|int|null, float given + + +Invalid string seed length Random\Engine\PcgOneseq128XslRr64::__construct(): Argument #1 ($seed) must be a 16 byte (128 bit) string -object(Random\Engine\PcgOneseq128XslRr64)#%d (%d) { + + +Valid string seed +object(Random\Engine\PcgOneseq128XslRr64)#3 (1) { ["__states"]=> array(2) { [0]=> diff --git a/ext/random/tests/02_engine/pcgoneseq128xslrr64_serialize.phpt b/ext/random/tests/02_engine/pcgoneseq128xslrr64_serialize.phpt index d0572138fcf6e..3db2d4e45b615 100644 --- a/ext/random/tests/02_engine/pcgoneseq128xslrr64_serialize.phpt +++ b/ext/random/tests/02_engine/pcgoneseq128xslrr64_serialize.phpt @@ -1,9 +1,11 @@ --TEST-- -Random: Engine: PcgOneseq128XslRr64: serialize +Random: Engine: PcgOneseq128XslRr64: The serialization output must be stable --FILE-- --EXPECT-- diff --git a/ext/random/tests/02_engine/pcgoneseq128xslrr64_value.phpt b/ext/random/tests/02_engine/pcgoneseq128xslrr64_value.phpt index c363c9e4d1cd3..1904fd60ca167 100644 --- a/ext/random/tests/02_engine/pcgoneseq128xslrr64_value.phpt +++ b/ext/random/tests/02_engine/pcgoneseq128xslrr64_value.phpt @@ -1,17 +1,20 @@ --TEST-- -Random: Engine: PcgOneseq128XslRr64: value +Random: Engine: PcgOneseq128XslRr64: For a reference seed a fixed reference value must be generated --FILE-- generate(); } $engine->jump(1234567); -echo \bin2hex($engine->generate()); +var_dump(bin2hex($engine->generate())); + ?> --EXPECT-- -b88e2a0f23720a1d +string(16) "b88e2a0f23720a1d" diff --git a/ext/random/tests/02_engine/user_compatibility.phpt b/ext/random/tests/02_engine/user_compatibility.phpt index 824dc367da449..401541e7141b0 100644 --- a/ext/random/tests/02_engine/user_compatibility.phpt +++ b/ext/random/tests/02_engine/user_compatibility.phpt @@ -1,63 +1,39 @@ --TEST-- -Random: Engine: User: compatibility +Random: Engine: Native engines can be wrapped without changing their sequence --FILE-- engine->generate(); - } -}; - -for ($i = 0; $i < 1000; $i++) { - if ($native_engine->generate() !== $user_engine->generate()) { - die('failure Mt19937'); - } -} - -$native_engine = new \Random\Engine\PcgOneseq128XslRr64(1234); -$user_engine = new class () implements \Random\Engine { - public function __construct(private $engine = new \Random\Engine\PcgOneseq128XslRr64(1234)) - { - } +use Random\Engine; +use Random\Engine\Mt19937; +use Random\Engine\PcgOneseq128XslRr64; +use Random\Engine\Test\TestWrapperEngine; +use Random\Engine\Xoshiro256StarStar; - public function generate(): string - { - return $this->engine->generate(); - } -}; +require __DIR__ . "/../engines.inc"; -for ($i = 0; $i < 1000; $i++) { - if ($native_engine->generate() !== $user_engine->generate()) { - die('failure PcgOneseq128XslRr64'); - } -} +$engines = []; +$engines[] = new Mt19937(1234); +$engines[] = new PcgOneseq128XslRr64(1234); +$engines[] = new Xoshiro256StarStar(1234); -$native_engine = new \Random\Engine\Xoshiro256StarStar(1234); -$user_engine = new class () implements \Random\Engine { - public function __construct(private $engine = new \Random\Engine\Xoshiro256StarStar(1234)) - { - } +foreach ($engines as $engine) { + echo $engine::class, PHP_EOL; - public function generate(): string - { - return $this->engine->generate(); - } -}; + $native_engine = clone $engine; + $user_engine = new TestWrapperEngine(clone $engine); -for ($i = 0; $i < 1000; $i++) { - if ($native_engine->generate() !== $user_engine->generate()) { - die('failure Xoshiro256StarStar'); + for ($i = 0; $i < 10_000; $i++) { + if ($native_engine->generate() !== $user_engine->generate()) { + die("failure: state differs at {$i}"); + } } } die('success'); + ?> --EXPECT-- +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar success diff --git a/ext/random/tests/02_engine/user_xoshiro128plusplus.phpt b/ext/random/tests/02_engine/user_xoshiro128plusplus.phpt deleted file mode 100644 index 9759e01a12994..0000000000000 --- a/ext/random/tests/02_engine/user_xoshiro128plusplus.phpt +++ /dev/null @@ -1,61 +0,0 @@ ---TEST-- -Random: Engine: User: Xoshiro128++ ---SKIPIF-- - ---FILE-- - - */ - -final class Xoshiro128PP implements \Random\Engine -{ - private function __construct( - private int $s0, - private int $s1, - private int $s2, - private int $s3 - ) { - } - - public static function fromNumbers($s0, $s1, $s2, $s3) - { - return new self($s0, $s1, $s2, $s3); - } - - private static function rotl($x, $k) - { - return (($x << $k) | ($x >> (32 - $k))) & 0xFFFFFFFF; - } - - public function generate(): string - { - $result = (self::rotl(($this->s0 + $this->s3) & 0xFFFFFFFF, 7) + $this->s0) & 0xFFFFFFFF; - - $t = ($this->s1 << 9) & 0xFFFFFFFF; - - $this->s2 ^= $this->s0; - $this->s3 ^= $this->s1; - $this->s1 ^= $this->s2; - $this->s0 ^= $this->s3; - - $this->s2 ^= $t; - - $this->s3 = self::rotl($this->s3, 11); - - return \pack('V', $result); - } -} - -$g = Xoshiro128PP::fromNumbers(1, 2, 3, 4); - -for ($i = 0; $i < 102400; $i++) { - $g->generate(); -} - -die(\bin2hex($g->generate())); - -?> ---EXPECT-- -fa3c872c diff --git a/ext/random/tests/02_engine/xoshiro256starstar_seed.phpt b/ext/random/tests/02_engine/xoshiro256starstar_seed.phpt index 2bf107dd5da85..ec31c358fd68e 100644 --- a/ext/random/tests/02_engine/xoshiro256starstar_seed.phpt +++ b/ext/random/tests/02_engine/xoshiro256starstar_seed.phpt @@ -1,36 +1,74 @@ --TEST-- -Random: Engine: Xoshiro256StarStar: seed +Random: Engine: Xoshiro256StarStar: The seed parameter must work as expected --FILE-- getMessage(), PHP_EOL; +} +echo PHP_EOL, PHP_EOL; + +echo "Invalid string seed length", PHP_EOL; try { - $engine = new Random\Engine\Xoshiro256StarStar(1.0); -} catch (\Throwable $e) { - echo $e->getMessage() . PHP_EOL; + $engine = new Xoshiro256StarStar('foobar'); +} catch (Throwable $e) { + echo $e->getMessage(), PHP_EOL; } +echo PHP_EOL, PHP_EOL; +echo "Null seed", PHP_EOL; try { - $engine = new Random\Engine\Xoshiro256StarStar('foobar'); -} catch (\Throwable $e) { - echo $e->getMessage() . PHP_EOL; + $engine = new Xoshiro256StarStar(str_repeat("\x00", 32)); +} catch (Throwable $e) { + echo $e->getMessage(), PHP_EOL; } +echo PHP_EOL, PHP_EOL; -$engine = new \Random\Engine\Xoshiro256StarStar("\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x03\x04\x05\x06\x07\x08\x01\x02\x03\x04\x05\x06\x07\x08"); +echo "Valid string seed", PHP_EOL; +$engine = new Xoshiro256StarStar(str_repeat("\x01\x02\x03\x04\x05\x06\x07\x08", 4)); -\var_dump($engine); +var_dump($engine); for ($i = 0; $i < 1000; $i++) { $engine->generate(); } -\var_dump(\bin2hex($engine->generate())); + +var_dump(bin2hex($engine->generate())); ?> --EXPECTF-- +Random integer seed + + +Random string seed + + +Invalid data type Random\Engine\Xoshiro256StarStar::__construct(): Argument #1 ($seed) must be of type string|int|null, float given + + +Invalid string seed length Random\Engine\Xoshiro256StarStar::__construct(): Argument #1 ($seed) must be a 32 byte (256 bit) string + + +Null seed +Random\Engine\Xoshiro256StarStar::__construct(): Argument #1 ($seed) must not consist entirely of NUL bytes + + +Valid string seed object(Random\Engine\Xoshiro256StarStar)#%d (%d) { ["__states"]=> array(4) { diff --git a/ext/random/tests/02_engine/xoshiro256starstar_serialize.phpt b/ext/random/tests/02_engine/xoshiro256starstar_serialize.phpt index 7230c3559614a..6803b9c77990a 100644 --- a/ext/random/tests/02_engine/xoshiro256starstar_serialize.phpt +++ b/ext/random/tests/02_engine/xoshiro256starstar_serialize.phpt @@ -1,9 +1,11 @@ --TEST-- -Random: Engine: Xoshiro256StarStar: serialize +Random: Engine: Xoshiro256StarStar: The serialization output must be stable --FILE-- --EXPECT-- diff --git a/ext/random/tests/02_engine/xoshiro256starstar_value.phpt b/ext/random/tests/02_engine/xoshiro256starstar_value.phpt index 8ec283aab1509..254fbaa555ed0 100644 --- a/ext/random/tests/02_engine/xoshiro256starstar_value.phpt +++ b/ext/random/tests/02_engine/xoshiro256starstar_value.phpt @@ -1,18 +1,21 @@ --TEST-- -Random: Engine: Xoshiro256StarStar: value +Random: Engine: Xoshiro256StarStar: For a reference seed a fixed reference value must be generated --FILE-- generate(); } $engine->jump(); $engine->jumpLong(); -echo \bin2hex($engine->generate()); +var_dump(bin2hex($engine->generate())); + ?> --EXPECT-- -1f197e9ca7969123 +string(16) "1f197e9ca7969123" diff --git a/ext/random/tests/03_randomizer/basic.phpt b/ext/random/tests/03_randomizer/basic.phpt deleted file mode 100644 index 077b9f5b780db..0000000000000 --- a/ext/random/tests/03_randomizer/basic.phpt +++ /dev/null @@ -1,81 +0,0 @@ ---TEST-- -Random: Randomizer: basic ---FILE-- -nextInt(); - } catch (\RuntimeException $e) { - if ($e->getMessage() !== 'Generated value exceeds size of int') { - die($engine::class . ": nextInt: failure: {$e->getMessage()}"); - } - } - } - - // getInt - for ($i = 0; $i < 1000; $i++) { - $result = $randomizer->getInt(-50, 50); - if ($result > 50 || $result < -50) { - die($engine::class . ': getInt: failure'); - } - } - - // getBytes - for ($i = 0; $i < 1000; $i++) { - $length = \random_int(1, 1024); - if (\strlen($randomizer->getBytes($length)) !== $length) { - die($engine::class . ': getBytes: failure'); - } - } - - // shuffleArray - $array = range(1, 1000); - $shuffled_array = $randomizer->shuffleArray($array); - (function () use ($array, $shuffled_array): void { - for ($i = 0; $i < count($array); $i++) { - if ($array[$i] !== $shuffled_array[$i]) { - return; - } - } - - die($engine::class . ': shuffleArray: failure'); - })(); - - // shuffleBytes - $string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'; - $shuffled_string = $randomizer->shuffleBytes($string); - if ($string === $shuffled_string) { - die($engine::class . ': shuffleBytes: failure'); - } -} - -die('success'); -?> ---EXPECTF-- -success diff --git a/ext/random/tests/03_randomizer/pick_array_keys.phpt b/ext/random/tests/03_randomizer/compatibility_array_rand.phpt similarity index 73% rename from ext/random/tests/03_randomizer/pick_array_keys.phpt rename to ext/random/tests/03_randomizer/compatibility_array_rand.phpt index 168d01dbc42dd..364267faf6ba4 100644 --- a/ext/random/tests/03_randomizer/pick_array_keys.phpt +++ b/ext/random/tests/03_randomizer/compatibility_array_rand.phpt @@ -1,8 +1,11 @@ --TEST-- -Random: Randomizer: pickArrayKeys +Random: Randomizer: The Mt19937 engine and pickArrayKeys are consistent with array_rand() --FILE-- 0, 'bar' => 1, 'baz' => 2]; $list = range(1, 10); @@ -14,7 +17,7 @@ $mapPickTwoFunc = array_rand($map, 2); $listPickOneFunc = array_rand($list, 1); $listPickTwoFunc = array_rand($list, 2); -$randomizer = new \Random\Randomizer(new \Random\Engine\Mt19937(1234)); +$randomizer = new Randomizer(new Mt19937(1234)); [$mapPickOneMethod] = $randomizer->pickArrayKeys($map, 1); $mapPickTwoMethod = $randomizer->pickArrayKeys($map, 2); @@ -24,25 +27,30 @@ $listPickTwoMethod = $randomizer->pickArrayKeys($list, 2); if ($mapPickOneFunc !== $mapPickOneMethod) { var_dump($mapPickOneFunc, $mapPickOneMethod); - die('failure mapPickOne'); + + die('failure: mapPickOne'); } if ($mapPickTwoFunc !== $mapPickTwoMethod) { var_dump($mapPickTwoFunc, $mapPickTwoMethod); - die('failure mapPickTwo'); + + die('failure: mapPickTwo'); } if ($listPickOneFunc !== $listPickOneMethod) { var_dump($listPickOneFunc, $listPickOneMethod); - die('failure listPickOne'); + + die('failure: listPickOne'); } if ($listPickTwoFunc !== $listPickTwoMethod) { var_dump($listPickTwoFunc, $listPickOneMethod); - die('failure listPickTwo'); + + die('failure: listPickTwo'); } die('success'); + ?> ---EXPECTF-- +--EXPECT-- success diff --git a/ext/random/tests/03_randomizer/compatibility_mt.phpt b/ext/random/tests/03_randomizer/compatibility_mt.phpt deleted file mode 100644 index 9740a494d6fe6..0000000000000 --- a/ext/random/tests/03_randomizer/compatibility_mt.phpt +++ /dev/null @@ -1,24 +0,0 @@ ---TEST-- -Random: Randomizer: Compatibility: Mt19937 ---FILE-- -nextInt() !== \mt_rand()) { - die('failure'); - } -} - -$randomizer = new \Random\Randomizer(new \Random\Engine\Mt19937(1234, \MT_RAND_MT19937)); -\mt_srand(1234, \MT_RAND_MT19937); -for ($i = 0; $i < 1000; $i++) { - if ($randomizer->nextInt() !== \mt_rand()) { - die('failure'); - } -} - -die('success'); ---EXPECT-- -success diff --git a/ext/random/tests/03_randomizer/compatibility_mt_rand.phpt b/ext/random/tests/03_randomizer/compatibility_mt_rand.phpt new file mode 100644 index 0000000000000..a69c50d0cb622 --- /dev/null +++ b/ext/random/tests/03_randomizer/compatibility_mt_rand.phpt @@ -0,0 +1,49 @@ +--TEST-- +Random: Randomizer: The Mt19937 engine is a drop-in replacement for mt_rand() +--FILE-- +nextInt() !== mt_rand()) { + die("failure: state differs at {$i} for nextInt()"); + } +} + +for ($i = 0; $i < 10_000; $i++) { + if ($randomizer->getInt(0, $i) !== mt_rand(0, $i)) { + die("failure: state differs at {$i} for getInt()"); + } +} + +echo "MT_RAND_MT19937", PHP_EOL; + +$randomizer = new Randomizer(new Mt19937(1234, MT_RAND_MT19937)); +mt_srand(1234, MT_RAND_MT19937); + +for ($i = 0; $i < 10_000; $i++) { + if ($randomizer->nextInt() !== mt_rand()) { + die("failure: state differs at {$i} for nextInt()"); + } +} + +for ($i = 0; $i < 10_000; $i++) { + if ($randomizer->getInt(0, $i) !== mt_rand(0, $i)) { + die("failure: state differs at {$i} for getInt()"); + } +} + +die('success'); + +?> +--EXPECT-- +MT_RAND_PHP +MT_RAND_MT19937 +success diff --git a/ext/random/tests/03_randomizer/compatibility_user.phpt b/ext/random/tests/03_randomizer/compatibility_user.phpt index 8336e7d569bd0..a4601b55ab04a 100644 --- a/ext/random/tests/03_randomizer/compatibility_user.phpt +++ b/ext/random/tests/03_randomizer/compatibility_user.phpt @@ -1,80 +1,43 @@ --TEST-- -Random: Randomizer: Compatibility: user +Random: Randomizer: Native engines can be wrapped without changing their sequence --FILE-- engine->generate(); - } -}); -for ($i = 0; $i < 1000; $i++) { - $native = $native_randomizer->nextInt(); - $user = $user_randomizer->nextInt(); - if ($native !== $user) { - die("failure Mt19937 i: {$i} native: {$native} user: {$user}"); - } -} +require __DIR__ . "/../engines.inc"; -try { - $native_randomizer = new \Random\Randomizer(new \Random\Engine\PcgOneseq128XslRr64(1234)); - $user_randomizer = new \Random\Randomizer(new class () implements \Random\Engine { - public function __construct(private $engine = new \Random\Engine\PcgOneseq128XslRr64(1234)) - { - } +$engines = []; +$engines[] = new Mt19937(1234); +$engines[] = new PcgOneseq128XslRr64(1234); +$engines[] = new Xoshiro256StarStar(1234); - public function generate(): string - { - return $this->engine->generate(); - } - }); - - for ($i = 0; $i < 1000; $i++) { - $native = $native_randomizer->nextInt(); - $user = $user_randomizer->nextInt(); - if ($native !== $user) { - die("failure PcgOneseq128XslRr64 i: {$i} native: {$native} user: {$user}"); - } - } -} catch (\RuntimeException $e) { - if ($e->getMessage() !== 'Generated value exceeds size of int') { - throw $e; - } -} +foreach ($engines as $engine) { + echo $engine::class, PHP_EOL; -try { - $native_randomizer = new \Random\Randomizer(new \Random\Engine\Xoshiro256StarStar(1234)); - $user_randomizer = new \Random\Randomizer(new class () implements \Random\Engine { - public function __construct(private $engine = new \Random\Engine\Xoshiro256StarStar(1234)) - { - } + $native_randomizer = new Randomizer(clone $engine); + $user_randomizer = new Randomizer(new TestWrapperEngine(clone $engine)); + + for ($i = 0; $i < 10_000; $i++) { + $native = $native_randomizer->getInt(0, $i); + $user = $user_randomizer->getInt(0, $i); - public function generate(): string - { - return $this->engine->generate(); - } - }); - - for ($i = 0; $i < 1000; $i++) { - $native = $native_randomizer->nextInt(); - $user = $user_randomizer->nextInt(); if ($native !== $user) { - die("failure Xoshiro256StarStar i: {$i} native: {$native} user: {$user}"); + die("failure: state differs at {$i}"); } } -} catch (\RuntimeException $e) { - if ($e->getMessage() !== 'Generated value exceeds size of int') { - throw $e; - } } die('success'); + ?> --EXPECT-- +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar success diff --git a/ext/random/tests/03_randomizer/construct_twice.phpt b/ext/random/tests/03_randomizer/construct_twice.phpt index ed2a667e2af11..7128338ade973 100644 --- a/ext/random/tests/03_randomizer/construct_twice.phpt +++ b/ext/random/tests/03_randomizer/construct_twice.phpt @@ -1,46 +1,47 @@ --TEST-- -Random: Randomizer: Disallow manually calling __construct +Random: Randomizer: Calling __construct() fails due to readonly $engine property --FILE-- __construct(); -} catch (\Error $e) { - echo $e->getMessage() . PHP_EOL; + (new Randomizer())->__construct(); +} catch (Error $e) { + echo $e->getMessage(), PHP_EOL; } try { - $r = new \Random\Randomizer(new \Random\Engine\Xoshiro256StarStar()); - $r->__construct(new \Random\Engine\PcgOneseq128XslRr64()); -} catch (\Error $e) { - echo $e->getMessage() . PHP_EOL; + $randomizer = new Randomizer(new Xoshiro256StarStar()); + $randomizer->__construct(new PcgOneseq128XslRr64()); +} catch (Error $e) { + echo $e->getMessage(), PHP_EOL; } try { - $r = new \Random\Randomizer(new \UserEngine()); - $r->__construct(new \UserEngine()); -} catch (\Error $e) { - echo $e->getMessage() . PHP_EOL; + $randomizer = new Randomizer(new TestShaEngine("1234")); + $randomizer->__construct(new TestShaEngine("1234")); +} catch (Error $e) { + echo $e->getMessage(), PHP_EOL; } try { - $r = new \Random\Randomizer(new \Random\Engine\Xoshiro256StarStar()); - $r->__construct(new \UserEngine()); -} catch (\Error $e) { + $randomizer = new Randomizer(new Xoshiro256StarStar()); + $randomizer->__construct(new TestShaEngine("1234")); +} catch (Error $e) { echo $e->getMessage(), PHP_EOL; } -var_dump($r->engine::class); +var_dump($randomizer->engine::class); die('success'); + ?> --EXPECT-- Cannot modify readonly property Random\Randomizer::$engine diff --git a/ext/random/tests/03_randomizer/engine_unsafe_biased.phpt b/ext/random/tests/03_randomizer/engine_unsafe_biased.phpt new file mode 100644 index 0000000000000..09fbd85b54eb0 --- /dev/null +++ b/ext/random/tests/03_randomizer/engine_unsafe_biased.phpt @@ -0,0 +1,58 @@ +--TEST-- +Random: Randomizer: Heavily biased engines are detected and rejected +--FILE-- +getInt(0, 1234)); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->nextInt()); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(bin2hex(randomizer()->getBytes(1))); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->shuffleArray(range(1, 1234))); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->shuffleBytes('foobar')); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +?> +--EXPECTF-- +Failed to generate an acceptable random number in 50 attempts +int(%d) +string(2) "ff" +Failed to generate an acceptable random number in 50 attempts +Failed to generate an acceptable random number in 50 attempts diff --git a/ext/random/tests/03_randomizer/engine_unsafe_empty_string.phpt b/ext/random/tests/03_randomizer/engine_unsafe_empty_string.phpt new file mode 100644 index 0000000000000..01bd293bc0508 --- /dev/null +++ b/ext/random/tests/03_randomizer/engine_unsafe_empty_string.phpt @@ -0,0 +1,58 @@ +--TEST-- +Random: Randomizer: Engines returning an empty string are detected and rejected +--FILE-- +getInt(0, 1234)); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->nextInt()); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(bin2hex(randomizer()->getBytes(1))); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->shuffleArray(range(1, 1234))); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->shuffleBytes('foobar')); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +A random engine must return a non-empty string +A random engine must return a non-empty string +A random engine must return a non-empty string +A random engine must return a non-empty string +A random engine must return a non-empty string diff --git a/ext/random/tests/03_randomizer/engine_unsafe_exits.phpt b/ext/random/tests/03_randomizer/engine_unsafe_exits.phpt new file mode 100644 index 0000000000000..cb598872d9773 --- /dev/null +++ b/ext/random/tests/03_randomizer/engine_unsafe_exits.phpt @@ -0,0 +1,23 @@ +--TEST-- +Random: Randomizer: Engines calling exit() are gracefully handled +--FILE-- +getBytes(1)); + +?> +--EXPECT-- +Exit diff --git a/ext/random/tests/03_randomizer/engine_unsafe_throws.phpt b/ext/random/tests/03_randomizer/engine_unsafe_throws.phpt new file mode 100644 index 0000000000000..bfb679f81a201 --- /dev/null +++ b/ext/random/tests/03_randomizer/engine_unsafe_throws.phpt @@ -0,0 +1,28 @@ +--TEST-- +Random: Randomizer: Engines throwing an exception are gracefully handled +--FILE-- +getBytes(1)); + +?> +--EXPECTF-- +Fatal error: Uncaught Exception: Error in %s:%d +Stack trace: +#0 [internal function]: ThrowingEngine->generate() +#1 %s(%d): Random\Randomizer->getBytes(1) +#2 {main} + thrown in %s on line %d diff --git a/ext/random/tests/03_randomizer/get_bytes.phpt b/ext/random/tests/03_randomizer/get_bytes.phpt deleted file mode 100644 index c6b4a59475e72..0000000000000 --- a/ext/random/tests/03_randomizer/get_bytes.phpt +++ /dev/null @@ -1,40 +0,0 @@ ---TEST-- -Random: Randomizer: getBytes ---FILE-- -count > 5) { - die('overflow'); - } - - return match ($this->count++) { - 0 => 'H', - 1 => 'e', - 2 => 'll', - 3 => 'o', - 4 => 'abcdefghijklmnopqrstuvwxyz', // 208 bits - 5 => 'success', - default => \random_bytes(16), - }; - } - } -); - -echo $randomizer->getBytes(5) . PHP_EOL; // Hello - -echo $randomizer->getBytes(8) . PHP_EOL; // abcdefgh (64 bits) - -die($randomizer->getBytes(7)); - -?> ---EXPECTF-- -Hello -abcdefgh -success diff --git a/ext/random/tests/03_randomizer/get_int_user.phpt b/ext/random/tests/03_randomizer/get_int_user.phpt deleted file mode 100644 index d6c995314319c..0000000000000 --- a/ext/random/tests/03_randomizer/get_int_user.phpt +++ /dev/null @@ -1,22 +0,0 @@ ---TEST-- -Random: Randomizer: User Engine results are correctly expanded for getInt() ---FILE-- -count++]; - } - } -); - -var_dump(bin2hex(pack('V', $randomizer->getInt(0, 0xFFFFFF)))); - -?> ---EXPECT-- -string(8) "01020300" diff --git a/ext/random/tests/03_randomizer/gh_9186_unserialize.phpt b/ext/random/tests/03_randomizer/gh_9186_unserialize.phpt new file mode 100644 index 0000000000000..fe1acb2f74be4 --- /dev/null +++ b/ext/random/tests/03_randomizer/gh_9186_unserialize.phpt @@ -0,0 +1,14 @@ +--TEST-- +Fix GH-9186 @strict-properties can be bypassed using unserialization +--FILE-- +getMessage() . "\n"; +} + +?> +--EXPECT-- +Invalid serialization data for Random\Randomizer object diff --git a/ext/random/tests/03_randomizer/methods/getBytes.phpt b/ext/random/tests/03_randomizer/methods/getBytes.phpt new file mode 100644 index 0000000000000..a236e9746fa19 --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/getBytes.phpt @@ -0,0 +1,47 @@ +--TEST-- +Random: Randomizer: getBytes(): Basic functionality +--FILE-- +getBytes($i)) !== $i) { + die("failure: incorrect string length at {$i}"); + } + } +} + +die('success'); + +?> +--EXPECT-- +Random\Engine\Mt19937 +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar +Random\Engine\Secure +Random\Engine\Test\TestShaEngine +success diff --git a/ext/random/tests/03_randomizer/methods/getBytes_expansion.phpt b/ext/random/tests/03_randomizer/methods/getBytes_expansion.phpt new file mode 100644 index 0000000000000..750b7870e4001 --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/getBytes_expansion.phpt @@ -0,0 +1,43 @@ +--TEST-- +Random: Randomizer: getBytes(): Returned bytes are consistently expanded +--FILE-- +count++) { + 0 => 'H', + 1 => 'e', + 2 => 'll', + 3 => 'o', + 4 => 'abcdefghijklmnopqrstuvwxyz', + 5 => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', + 6 => 'success', + default => throw new \Exception('Unhandled'), + }; + } +} + +$randomizer = new Randomizer(new TestEngine()); + +// 0-3: "Hello" - Insufficient bytes are concatenated. +var_dump($randomizer->getBytes(5)); + +// 4-5: "abcdefghABC" - Returned values are truncated to 64-bits for technical reasons, thus dropping i-z. +var_dump($randomizer->getBytes(11)); + +// 6: "success" +var_dump($randomizer->getBytes(7)); + +?> +--EXPECT-- +string(5) "Hello" +string(11) "abcdefghABC" +string(7) "success" diff --git a/ext/random/tests/03_randomizer/methods/getInt.phpt b/ext/random/tests/03_randomizer/methods/getInt.phpt new file mode 100644 index 0000000000000..faa098ade1364 --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/getInt.phpt @@ -0,0 +1,54 @@ +--TEST-- +Random: Randomizer: getInt(): Basic functionality +--FILE-- +getInt(-$i, $i); + + if ($result > $i || $result < -$i) { + die("failure: out of range at {$i}"); + } + } + + // Test that extreme ranges do not throw. + for ($i = 0; $i < 10_000; $i++) { + $randomizer->getInt(PHP_INT_MIN, PHP_INT_MAX); + } +} + +die('success'); + +?> +--EXPECT-- +Random\Engine\Mt19937 +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar +Random\Engine\Secure +Random\Engine\Test\TestShaEngine +success diff --git a/ext/random/tests/03_randomizer/methods/getInt_expansion_32.phpt b/ext/random/tests/03_randomizer/methods/getInt_expansion_32.phpt new file mode 100644 index 0000000000000..6e93208138c5f --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/getInt_expansion_32.phpt @@ -0,0 +1,25 @@ +--TEST-- +Random: Randomizer: getInt(): Returned values with insufficient bits are correctly expanded +--FILE-- +count++]; + } +} + +$randomizer = new Randomizer(new ByteEngine()); + +var_dump(bin2hex(pack('V', $randomizer->getInt(0, 0x00FF_FFFF)))); + +?> +--EXPECT-- +string(8) "01020300" diff --git a/ext/random/tests/03_randomizer/methods/getInt_expansion_64.phpt b/ext/random/tests/03_randomizer/methods/getInt_expansion_64.phpt new file mode 100644 index 0000000000000..87c6bfeafeb85 --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/getInt_expansion_64.phpt @@ -0,0 +1,27 @@ +--TEST-- +Random: Randomizer: getInt(): Returned values with insufficient bits are correctly expanded (64 Bit) +--SKIPIF-- + +--FILE-- +count++]; + } +} + +$randomizer = new Randomizer(new ByteEngine()); + +var_dump(bin2hex(pack('P', $randomizer->getInt(0, 0x00FF_FFFF_FFFF_FFFF)))); + +?> +--EXPECT-- +string(16) "0102030405060700" diff --git a/ext/random/tests/03_randomizer/methods/getInt_gh9415.phpt b/ext/random/tests/03_randomizer/methods/getInt_gh9415.phpt new file mode 100644 index 0000000000000..c624cb785739f --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/getInt_gh9415.phpt @@ -0,0 +1,19 @@ +--TEST-- +GH-9415: Randomizer::getInt(0, 2**32 - 1) with Mt19937 always returns 1 +--FILE-- +getInt(-2147483648, 2147483647)); + +$randomizer = new Randomizer(new Mt19937(4321)); +var_dump($randomizer->getInt(-2147483648, 2147483647)); + +?> +--EXPECT-- +int(-1324913873) +int(-1843387587) diff --git a/ext/random/tests/03_randomizer/methods/nextInt.phpt b/ext/random/tests/03_randomizer/methods/nextInt.phpt new file mode 100644 index 0000000000000..fd4460cb811ce --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/nextInt.phpt @@ -0,0 +1,50 @@ +--TEST-- +Random: Randomizer: nextInt(): Basic functionality +--FILE-- +nextInt(); + } catch (\Random\RandomException $e) { + if ($e->getMessage() !== 'Generated value exceeds size of int' || PHP_INT_SIZE !== 4) { + throw $e; + } + } + } +} + +die('success'); + +?> +--EXPECT-- +Random\Engine\Mt19937 +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar +Random\Engine\Secure +Random\Engine\Test\TestShaEngine +success diff --git a/ext/random/tests/03_randomizer/methods/nextInt_64_engine_on_32_platform.phpt b/ext/random/tests/03_randomizer/methods/nextInt_64_engine_on_32_platform.phpt new file mode 100644 index 0000000000000..2a408e566e0b4 --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/nextInt_64_engine_on_32_platform.phpt @@ -0,0 +1,21 @@ +--TEST-- +Random: Randomizer: nextInt(): Throws for 64 bit engines on 32 bit platforms +--SKIPIF-- + +--FILE-- +nextInt()); +} catch (Random\RandomException $e) { + echo $e->getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +Generated value exceeds size of int diff --git a/ext/random/tests/03_randomizer/methods/pickArrayKeys.phpt b/ext/random/tests/03_randomizer/methods/pickArrayKeys.phpt new file mode 100644 index 0000000000000..4178455898df4 --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/pickArrayKeys.phpt @@ -0,0 +1,84 @@ +--TEST-- +Random: Randomizer: pickArrayKeys(): Basic functionality +--FILE-- +pickArrayKeys($array1, $i); + + if (array_unique($result) !== $result) { + die("failure: duplicates returned at {$i} for array1"); + } + + if (array_diff($result, array_keys($array1)) !== []) { + die("failure: non-keys returned at {$i} for array1"); + } + + $result = $randomizer->pickArrayKeys($array2, $i); + + if (array_unique($result) !== $result) { + die("failure: duplicates returned at {$i} for array2"); + } + + if (array_diff($result, array_keys($array2)) !== []) { + die("failure: non-keys returned at {$i} for array2"); + } + + $result = $randomizer->pickArrayKeys($array3, $i); + + if (array_unique($result) !== $result) { + die("failure: duplicates returned at {$i} for array3"); + } + + if (array_diff($result, array_keys($array3)) !== []) { + die("failure: non-keys returned at {$i} for array3"); + } + } +} + +die('success'); + +?> +--EXPECT-- +Random\Engine\Mt19937 +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar +Random\Engine\Secure +Random\Engine\Test\TestShaEngine +success diff --git a/ext/random/tests/03_randomizer/methods/pickArrayKeys_error.phpt b/ext/random/tests/03_randomizer/methods/pickArrayKeys_error.phpt new file mode 100644 index 0000000000000..15526327b095c --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/pickArrayKeys_error.phpt @@ -0,0 +1,49 @@ +--TEST-- +Random: Randomizer: pickArrayKeys(): Parameters are correctly validated +--FILE-- +pickArrayKeys("foo", 2)); +} catch (TypeError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->pickArrayKeys([], 0)); +} catch (ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->pickArrayKeys(range(1, 3), 0)); +} catch (ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->pickArrayKeys(range(1, 3), -1)); +} catch (ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->pickArrayKeys(range(1, 3), 10)); +} catch (ValueError $e) { + echo $e->getMessage(), PHP_EOL; +} + +?> +--EXPECTF-- +Random\Randomizer::pickArrayKeys(): Argument #1 ($array) must be of type array, string given +Random\Randomizer::pickArrayKeys(): Argument #1 ($array) cannot be empty +Random\Randomizer::pickArrayKeys(): Argument #2 ($num) must be between 1 and the number of elements in argument #1 ($array) +Random\Randomizer::pickArrayKeys(): Argument #2 ($num) must be between 1 and the number of elements in argument #1 ($array) +Random\Randomizer::pickArrayKeys(): Argument #2 ($num) must be between 1 and the number of elements in argument #1 ($array) diff --git a/ext/random/tests/03_randomizer/methods/shuffleArray.phpt b/ext/random/tests/03_randomizer/methods/shuffleArray.phpt new file mode 100644 index 0000000000000..c0f6d17fecddf --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/shuffleArray.phpt @@ -0,0 +1,53 @@ +--TEST-- +Random: Randomizer: shuffleArray(): Basic functionality +--FILE-- +shuffleArray($array); + + sort($result); + + if ($result !== $array) { + die("failure: not a permutation at {$i}"); + } + } +} + +die('success'); + +?> +--EXPECT-- +Random\Engine\Mt19937 +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar +Random\Engine\Secure +Random\Engine\Test\TestShaEngine +success diff --git a/ext/random/tests/03_randomizer/methods/shuffleBytes.phpt b/ext/random/tests/03_randomizer/methods/shuffleBytes.phpt new file mode 100644 index 0000000000000..d16168d32fe2d --- /dev/null +++ b/ext/random/tests/03_randomizer/methods/shuffleBytes.phpt @@ -0,0 +1,60 @@ +--TEST-- +Random: Randomizer: shuffleBytes(): Basic functionality +--FILE-- +shuffleBytes($bytes); + + $result = sort_bytes($result); + + if ($result !== $bytes) { + die("failure: not a permutation at {$i}"); + } + } +} + +die('success'); + +?> +--EXPECT-- +Random\Engine\Mt19937 +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar +Random\Engine\Secure +Random\Engine\Test\TestShaEngine +success diff --git a/ext/random/tests/03_randomizer/pick_array_keys_error.phpt b/ext/random/tests/03_randomizer/pick_array_keys_error.phpt deleted file mode 100644 index 98abc82a55018..0000000000000 --- a/ext/random/tests/03_randomizer/pick_array_keys_error.phpt +++ /dev/null @@ -1,52 +0,0 @@ ---TEST-- -Random: Randomizer: pickArrayKeys error pattern ---FILE-- -pickArrayKeys([], 0)); -} catch (\ValueError $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump((new \Random\Randomizer())->pickArrayKeys(range(1, 3), 0)); -} catch (\ValueError $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump((new \Random\Randomizer())->pickArrayKeys(range(1, 3), -1)); -} catch (\ValueError $e) { - echo $e->getMessage() . "\n"; -} - -try { - var_dump((new \Random\Randomizer())->pickArrayKeys(range(1, 3), 10)); -} catch (\ValueError $e) { - echo $e->getMessage() . "\n"; -} - -var_dump((new \Random\Randomizer())->pickArrayKeys(range(1, 3), 3)); -var_dump((new \Random\Randomizer())->pickArrayKeys(range(1, 3), 2)); - -?> ---EXPECTF-- -Random\Randomizer::pickArrayKeys(): Argument #1 ($array) cannot be empty -Random\Randomizer::pickArrayKeys(): Argument #2 ($num) must be between 1 and the number of elements in argument #1 ($array) -Random\Randomizer::pickArrayKeys(): Argument #2 ($num) must be between 1 and the number of elements in argument #1 ($array) -Random\Randomizer::pickArrayKeys(): Argument #2 ($num) must be between 1 and the number of elements in argument #1 ($array) -array(3) { - [0]=> - int(%d) - [1]=> - int(%d) - [2]=> - int(%d) -} -array(2) { - [0]=> - int(%d) - [1]=> - int(%d) -} diff --git a/ext/random/tests/03_randomizer/readonly.phpt b/ext/random/tests/03_randomizer/readonly.phpt index f1f4a461714e4..f5cf7cc0dd5b0 100644 --- a/ext/random/tests/03_randomizer/readonly.phpt +++ b/ext/random/tests/03_randomizer/readonly.phpt @@ -1,43 +1,30 @@ --TEST-- -Random: Randomizer: readonly engine +Random: Randomizer: The engine property must be readonly --FILE-- engine; -if ($one->engine->generate() !== $one_ng_clone->generate()) { - die('invalid result'); -} +$randomizer = new Randomizer(new PcgOneseq128XslRr64(1234)); +$referenceRandomizer = new Randomizer(new PcgOneseq128XslRr64(1234)); try { - $one->engine = $one_ng_clone; -} catch (\Throwable $e) { - echo $e->getMessage() . PHP_EOL; + $randomizer->engine = new Xoshiro256StarStar(1234); +} catch (Throwable $e) { + echo $e->getMessage(), PHP_EOL; } -$two = new \Random\Randomizer( - new \Random\Engine\Secure() -); - -try { - $two_ng_clone = clone $two->engine; -} catch (\Throwable $e) { - echo $e->getMessage() . PHP_EOL; +for ($i = 0; $i < 10_000; $i++) { + if ($randomizer->getInt(0, $i) !== $referenceRandomizer->getInt(0, $i)) { + die("failure: state differs at {$i}"); + } } -try { - $two->engine = $one_ng_clone; -} catch (\Throwable $e) { - echo $e->getMessage() . PHP_EOL; -} +die('success'); -die('success') ?> --EXPECT-- Cannot modify readonly property Random\Randomizer::$engine -Trying to clone an uncloneable object of class Random\Engine\Secure -Cannot modify readonly property Random\Randomizer::$engine success diff --git a/ext/random/tests/03_randomizer/serialize.phpt b/ext/random/tests/03_randomizer/serialize.phpt index 37841a0db106f..b02bb93c827b3 100644 --- a/ext/random/tests/03_randomizer/serialize.phpt +++ b/ext/random/tests/03_randomizer/serialize.phpt @@ -1,57 +1,50 @@ --TEST-- -Random: Randomizer: serialize +Random: Randomizer: Serialization of the Randomizer must preserve the sequence --FILE-- getInt(\PHP_INT_MIN, \PHP_INT_MAX); - try { - $randomizer2 = unserialize(serialize($randomizer)); - } catch (\Exception $e) { - echo $e->getMessage() . PHP_EOL; - continue; - } + echo $engine::class, PHP_EOL; + + $randomizer = new Randomizer($engine); - if ($randomizer->getInt(\PHP_INT_MIN, \PHP_INT_MAX) !== $randomizer2->getInt(\PHP_INT_MIN, \PHP_INT_MAX)) { - die($engine::class . ': failure.'); + for ($i = 0; $i < 10_000; $i++) { + $randomizer->getInt(0, $i); } - echo $engine::class . ': success' . PHP_EOL; + $randomizer2 = unserialize(serialize($randomizer)); + + for ($i = 0; $i < 10_000; $i++) { + if ($randomizer->getInt(0, $i) !== $randomizer2->getInt(0, $i)) { + $className = $engine::class; + + die("failure: state differs at {$i}"); + } + } } die('success'); ?> ---EXPECTF-- -Random\Engine\Mt19937: success -Random\Engine\Mt19937: success -Random\Engine\PcgOneseq128XslRr64: success -Random\Engine\Xoshiro256StarStar: success -Serialization of 'Random\Engine\Secure' is not allowed -Serialization of 'Random\Engine@anonymous' is not allowed -UserEngine: success +--EXPECT-- +Random\Engine\Mt19937 +Random\Engine\Mt19937 +Random\Engine\PcgOneseq128XslRr64 +Random\Engine\Xoshiro256StarStar +Random\Engine\Test\TestShaEngine success diff --git a/ext/random/tests/03_randomizer/serialize_disallowed.phpt b/ext/random/tests/03_randomizer/serialize_disallowed.phpt new file mode 100644 index 0000000000000..06f8ea2cb09ae --- /dev/null +++ b/ext/random/tests/03_randomizer/serialize_disallowed.phpt @@ -0,0 +1,17 @@ +--TEST-- +Random: Randomizer: Serialization of the Randomizer fails if the engine is not serializable +--FILE-- +getMessage(), PHP_EOL; +} + +?> +--EXPECT-- +Serialization of 'Random\Engine\Secure' is not allowed diff --git a/ext/random/tests/03_randomizer/user_exits.phpt b/ext/random/tests/03_randomizer/user_exits.phpt deleted file mode 100644 index 6d6f5636cbec4..0000000000000 --- a/ext/random/tests/03_randomizer/user_exits.phpt +++ /dev/null @@ -1,19 +0,0 @@ ---TEST-- -Random: Randomizer: User: Engine exits ---FILE-- -getBytes(1)); - -?> ---EXPECT-- -Exit diff --git a/ext/random/tests/03_randomizer/user_throws.phpt b/ext/random/tests/03_randomizer/user_throws.phpt deleted file mode 100644 index 41cd004b63879..0000000000000 --- a/ext/random/tests/03_randomizer/user_throws.phpt +++ /dev/null @@ -1,24 +0,0 @@ ---TEST-- -Random: Randomizer: User: Engine throws ---FILE-- -getBytes(1)); - -?> ---EXPECTF-- -Fatal error: Uncaught Exception: Error in %s:%d -Stack trace: -#0 [internal function]: Random\Engine@anonymous->generate() -#1 %s(%d): Random\Randomizer->getBytes(1) -#2 {main} - thrown in %s on line %d diff --git a/ext/random/tests/03_randomizer/user_unsafe.phpt b/ext/random/tests/03_randomizer/user_unsafe.phpt deleted file mode 100644 index 6e6a8151fdf11..0000000000000 --- a/ext/random/tests/03_randomizer/user_unsafe.phpt +++ /dev/null @@ -1,141 +0,0 @@ ---TEST-- -Random: Randomizer: User: Engine unsafe ---FILE-- -getInt(0, 123)); - } catch (Throwable $e) { - echo $e, PHP_EOL; - } - - echo PHP_EOL, "-------", PHP_EOL, PHP_EOL; - - try { - var_dump((new Randomizer(new $engine()))->nextInt()); - } catch (Throwable $e) { - echo $e, PHP_EOL; - } - - echo PHP_EOL, "-------", PHP_EOL, PHP_EOL; - - try { - var_dump(bin2hex((new Randomizer(new $engine()))->getBytes(1))); - } catch (Throwable $e) { - echo $e, PHP_EOL; - } - - echo PHP_EOL, "-------", PHP_EOL, PHP_EOL; - - try { - var_dump((new Randomizer(new $engine()))->shuffleArray(\range(1, 10))); - } catch (Throwable $e) { - echo $e, PHP_EOL; - } - - echo PHP_EOL, "-------", PHP_EOL, PHP_EOL; - - try { - var_dump((new Randomizer(new $engine()))->shuffleBytes('foobar')); - } catch (Throwable $e) { - echo $e, PHP_EOL; - } - - echo PHP_EOL, "=====================", PHP_EOL; -} - -?> ---EXPECTF-- -===================== -EmptyStringEngine -===================== - -Random\BrokenRandomEngineError: A random engine must return a non-empty string in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->getInt(0, 123) -#1 {main} - -------- - -Random\BrokenRandomEngineError: A random engine must return a non-empty string in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->nextInt() -#1 {main} - -------- - -Random\BrokenRandomEngineError: A random engine must return a non-empty string in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->getBytes(1) -#1 {main} - -------- - -Random\BrokenRandomEngineError: A random engine must return a non-empty string in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->shuffleArray(Array) -#1 {main} - -------- - -Random\BrokenRandomEngineError: A random engine must return a non-empty string in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->shuffleBytes('foobar') -#1 {main} - -===================== -HeavilyBiasedEngine -===================== - -Random\BrokenRandomEngineError: Failed to generate an acceptable random number in 50 attempts in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->getInt(0, 123) -#1 {main} - -------- - -int(%d) - -------- - -string(2) "ff" - -------- - -Random\BrokenRandomEngineError: Failed to generate an acceptable random number in 50 attempts in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->shuffleArray(Array) -#1 {main} - -------- - -Random\BrokenRandomEngineError: Failed to generate an acceptable random number in 50 attempts in %s:%d -Stack trace: -#0 %s(%d): Random\Randomizer->shuffleBytes('foobar') -#1 {main} - -===================== diff --git a/ext/random/tests/engines.inc b/ext/random/tests/engines.inc new file mode 100644 index 0000000000000..909f581d775a1 --- /dev/null +++ b/ext/random/tests/engines.inc @@ -0,0 +1,74 @@ +state = $state; + } else { + $this->state = random_bytes(20); + } + } + + public function generate(): string + { + $this->state = sha1($this->state, true); + + return substr($this->state, 0, 8); + } +} + +final class TestWrapperEngine implements Engine +{ + public function __construct(private readonly Engine $engine) + { + } + + public function generate(): string + { + return $this->engine->generate(); + } +} + +final class TestXoshiro128PlusPlusEngine implements Engine +{ + public function __construct( + private int $s0, + private int $s1, + private int $s2, + private int $s3 + ) { + } + + private static function rotl($x, $k) + { + return (($x << $k) | ($x >> (32 - $k))) & 0xFFFFFFFF; + } + + public function generate(): string + { + $result = (self::rotl(($this->s0 + $this->s3) & 0xFFFFFFFF, 7) + $this->s0) & 0xFFFFFFFF; + + $t = ($this->s1 << 9) & 0xFFFFFFFF; + + $this->s2 ^= $this->s0; + $this->s3 ^= $this->s1; + $this->s1 ^= $this->s2; + $this->s0 ^= $this->s3; + + $this->s2 ^= $t; + + $this->s3 = self::rotl($this->s3, 11); + + return pack('V', $result); + } +} + +?> diff --git a/ext/readline/readline_arginfo.h b/ext/readline/readline_arginfo.h index 4c64448d715c9..ca68dbf143c81 100644 --- a/ext/readline/readline_arginfo.h +++ b/ext/readline/readline_arginfo.h @@ -117,5 +117,5 @@ static const zend_function_entry ext_functions[] = { static void register_readline_symbols(int module_number) { - REGISTER_STRING_CONSTANT("READLINE_LIB", READLINE_LIB, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("READLINE_LIB", READLINE_LIB, CONST_PERSISTENT); } diff --git a/ext/readline/readline_cli.c b/ext/readline/readline_cli.c index 84b261db34283..4afe7be3f667c 100644 --- a/ext/readline/readline_cli.c +++ b/ext/readline/readline_cli.c @@ -800,7 +800,7 @@ PHP_MSHUTDOWN_FUNCTION(cli_readline) PHP_MINFO_FUNCTION(cli_readline) { php_info_print_table_start(); - php_info_print_table_header(2, "Readline Support", "enabled"); + php_info_print_table_row(2, "Readline Support", "enabled"); #ifdef PHP_WIN32 php_info_print_table_row(2, "Readline library", "WinEditLine"); #else diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index fef531292b564..4c28c087b618e 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -283,7 +283,6 @@ static zend_object *reflection_objects_new(zend_class_entry *class_type) /* {{{ zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); - intern->zo.handlers = &reflection_object_handlers; return &intern->zo; } /* }}} */ @@ -1702,6 +1701,28 @@ ZEND_METHOD(ReflectionFunctionAbstract, getClosureScopeClass) } /* }}} */ +/* {{{ Returns the called scope associated to the closure */ +ZEND_METHOD(ReflectionFunctionAbstract, getClosureCalledClass) +{ + reflection_object *intern; + + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + GET_REFLECTION_OBJECT(); + if (!Z_ISUNDEF(intern->obj)) { + zend_class_entry *called_scope; + zend_function *closure_func; + zend_object *object; + if (Z_OBJ_HANDLER(intern->obj, get_closure) + && Z_OBJ_HANDLER(intern->obj, get_closure)(Z_OBJ(intern->obj), &called_scope, &closure_func, &object, 1) == SUCCESS + && closure_func && (called_scope || closure_func->common.scope)) { + zend_reflection_class_factory(called_scope ? (zend_class_entry *) called_scope : closure_func->common.scope, return_value); + } + } +} +/* }}} */ + /* {{{ Returns an associative array containing the closures lexical scope variables */ ZEND_METHOD(ReflectionFunctionAbstract, getClosureUsedVariables) { @@ -7127,67 +7148,88 @@ PHP_MINIT_FUNCTION(reflection) /* {{{ */ reflector_ptr = register_class_Reflector(zend_ce_stringable); reflection_function_abstract_ptr = register_class_ReflectionFunctionAbstract(reflector_ptr); + reflection_function_abstract_ptr->default_object_handlers = &reflection_object_handlers; reflection_function_abstract_ptr->create_object = reflection_objects_new; reflection_function_ptr = register_class_ReflectionFunction(reflection_function_abstract_ptr); reflection_function_ptr->create_object = reflection_objects_new; + reflection_function_ptr->default_object_handlers = &reflection_object_handlers; reflection_generator_ptr = register_class_ReflectionGenerator(); reflection_generator_ptr->create_object = reflection_objects_new; + reflection_generator_ptr->default_object_handlers = &reflection_object_handlers; reflection_parameter_ptr = register_class_ReflectionParameter(reflector_ptr); reflection_parameter_ptr->create_object = reflection_objects_new; + reflection_parameter_ptr->default_object_handlers = &reflection_object_handlers; reflection_type_ptr = register_class_ReflectionType(zend_ce_stringable); reflection_type_ptr->create_object = reflection_objects_new; + reflection_type_ptr->default_object_handlers = &reflection_object_handlers; reflection_named_type_ptr = register_class_ReflectionNamedType(reflection_type_ptr); reflection_named_type_ptr->create_object = reflection_objects_new; + reflection_named_type_ptr->default_object_handlers = &reflection_object_handlers; reflection_union_type_ptr = register_class_ReflectionUnionType(reflection_type_ptr); reflection_union_type_ptr->create_object = reflection_objects_new; + reflection_union_type_ptr->default_object_handlers = &reflection_object_handlers; reflection_intersection_type_ptr = register_class_ReflectionIntersectionType(reflection_type_ptr); reflection_intersection_type_ptr->create_object = reflection_objects_new; + reflection_intersection_type_ptr->default_object_handlers = &reflection_object_handlers; reflection_method_ptr = register_class_ReflectionMethod(reflection_function_abstract_ptr); reflection_method_ptr->create_object = reflection_objects_new; + reflection_method_ptr->default_object_handlers = &reflection_object_handlers; reflection_class_ptr = register_class_ReflectionClass(reflector_ptr); reflection_class_ptr->create_object = reflection_objects_new; + reflection_class_ptr->default_object_handlers = &reflection_object_handlers; reflection_object_ptr = register_class_ReflectionObject(reflection_class_ptr); reflection_object_ptr->create_object = reflection_objects_new; + reflection_object_ptr->default_object_handlers = &reflection_object_handlers; reflection_property_ptr = register_class_ReflectionProperty(reflector_ptr); reflection_property_ptr->create_object = reflection_objects_new; + reflection_property_ptr->default_object_handlers = &reflection_object_handlers; reflection_class_constant_ptr = register_class_ReflectionClassConstant(reflector_ptr); reflection_class_constant_ptr->create_object = reflection_objects_new; + reflection_class_constant_ptr->default_object_handlers = &reflection_object_handlers; reflection_extension_ptr = register_class_ReflectionExtension(reflector_ptr); reflection_extension_ptr->create_object = reflection_objects_new; + reflection_extension_ptr->default_object_handlers = &reflection_object_handlers; reflection_zend_extension_ptr = register_class_ReflectionZendExtension(reflector_ptr); reflection_zend_extension_ptr->create_object = reflection_objects_new; + reflection_zend_extension_ptr->default_object_handlers = &reflection_object_handlers; reflection_reference_ptr = register_class_ReflectionReference(); reflection_reference_ptr->create_object = reflection_objects_new; + reflection_reference_ptr->default_object_handlers = &reflection_object_handlers; reflection_attribute_ptr = register_class_ReflectionAttribute(reflector_ptr); reflection_attribute_ptr->create_object = reflection_objects_new; + reflection_attribute_ptr->default_object_handlers = &reflection_object_handlers; reflection_enum_ptr = register_class_ReflectionEnum(reflection_class_ptr); reflection_enum_ptr->create_object = reflection_objects_new; + reflection_enum_ptr->default_object_handlers = &reflection_object_handlers; reflection_enum_unit_case_ptr = register_class_ReflectionEnumUnitCase(reflection_class_constant_ptr); reflection_enum_unit_case_ptr->create_object = reflection_objects_new; + reflection_enum_unit_case_ptr->default_object_handlers = &reflection_object_handlers; reflection_enum_backed_case_ptr = register_class_ReflectionEnumBackedCase(reflection_enum_unit_case_ptr); reflection_enum_backed_case_ptr->create_object = reflection_objects_new; + reflection_enum_backed_case_ptr->default_object_handlers = &reflection_object_handlers; reflection_fiber_ptr = register_class_ReflectionFiber(); reflection_fiber_ptr->create_object = reflection_objects_new; + reflection_fiber_ptr->default_object_handlers = &reflection_object_handlers; REFLECTION_G(key_initialized) = 0; diff --git a/ext/reflection/php_reflection.stub.php b/ext/reflection/php_reflection.stub.php index 73a71762dba39..22223bb0a1c3f 100644 --- a/ext/reflection/php_reflection.stub.php +++ b/ext/reflection/php_reflection.stub.php @@ -54,6 +54,9 @@ public function getClosureThis(): ?object {} /** @tentative-return-type */ public function getClosureScopeClass(): ?ReflectionClass {} + /** @tentative-return-type */ + public function getClosureCalledClass(): ?ReflectionClass {} + public function getClosureUsedVariables(): array {} /** @tentative-return-type */ diff --git a/ext/reflection/php_reflection_arginfo.h b/ext/reflection/php_reflection_arginfo.h index 81ef6b69f15d1..92f37a67510ef 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 the .stub.php file instead. - * Stub hash: 25b36d66ab7fb88b8d44d51e15e530ebff2e1e2c */ + * Stub hash: a531c9132b4ac3d3196570ae6dda52b8f6a4f488 */ ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_Reflection_getModifierNames, 0, 1, IS_ARRAY, 0) ZEND_ARG_TYPE_INFO(0, modifiers, IS_LONG, 0) @@ -31,6 +31,8 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(arginfo_class_ReflectionFunctionAbstract_getClosureScopeClass, 0, 0, ReflectionClass, 1) ZEND_END_ARG_INFO() +#define arginfo_class_ReflectionFunctionAbstract_getClosureCalledClass arginfo_class_ReflectionFunctionAbstract_getClosureScopeClass + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_ReflectionFunctionAbstract_getClosureUsedVariables, 0, 0, IS_ARRAY, 0) ZEND_END_ARG_INFO() @@ -615,6 +617,7 @@ ZEND_METHOD(ReflectionFunctionAbstract, isVariadic); ZEND_METHOD(ReflectionFunctionAbstract, isStatic); ZEND_METHOD(ReflectionFunctionAbstract, getClosureThis); ZEND_METHOD(ReflectionFunctionAbstract, getClosureScopeClass); +ZEND_METHOD(ReflectionFunctionAbstract, getClosureCalledClass); ZEND_METHOD(ReflectionFunctionAbstract, getClosureUsedVariables); ZEND_METHOD(ReflectionFunctionAbstract, getDocComment); ZEND_METHOD(ReflectionFunctionAbstract, getEndLine); @@ -861,6 +864,7 @@ static const zend_function_entry class_ReflectionFunctionAbstract_methods[] = { ZEND_ME(ReflectionFunctionAbstract, isStatic, arginfo_class_ReflectionFunctionAbstract_isStatic, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionFunctionAbstract, getClosureThis, arginfo_class_ReflectionFunctionAbstract_getClosureThis, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionFunctionAbstract, getClosureScopeClass, arginfo_class_ReflectionFunctionAbstract_getClosureScopeClass, ZEND_ACC_PUBLIC) + ZEND_ME(ReflectionFunctionAbstract, getClosureCalledClass, arginfo_class_ReflectionFunctionAbstract_getClosureCalledClass, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionFunctionAbstract, getClosureUsedVariables, arginfo_class_ReflectionFunctionAbstract_getClosureUsedVariables, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionFunctionAbstract, getDocComment, arginfo_class_ReflectionFunctionAbstract_getDocComment, ZEND_ACC_PUBLIC) ZEND_ME(ReflectionFunctionAbstract, getEndLine, arginfo_class_ReflectionFunctionAbstract_getEndLine, ZEND_ACC_PUBLIC) diff --git a/ext/reflection/tests/ReflectionFunction_getClosureCalledClass.phpt b/ext/reflection/tests/ReflectionFunction_getClosureCalledClass.phpt new file mode 100644 index 0000000000000..ab06a6472e0c1 --- /dev/null +++ b/ext/reflection/tests/ReflectionFunction_getClosureCalledClass.phpt @@ -0,0 +1,108 @@ +--TEST-- +GH-8932 (Provide a way to get the called-scope of closures) +--FILE-- +'.$name, "\n"; + } + + public static function b() { + echo static::class.'::b', "\n"; + } + + + public function c() { + echo static::class.'->c', "\n"; + } + + public function makeClosure() { + return function () { + echo static::class.'::{closure}'."\n"; + }; + } +} + +class B extends A {} + +$c = ['B', 'b']; +$d = \Closure::fromCallable($c); +$r = new \ReflectionFunction($d); +var_dump($r->getClosureCalledClass()); +$d(); + +$c = [new B(), 'c']; +$d = \Closure::fromCallable($c); +$r = new \ReflectionFunction($d); +var_dump($r->getClosureCalledClass()); +$d(); + +$c = ['B', 'd']; +$d = \Closure::fromCallable($c); +$r = new \ReflectionFunction($d); +var_dump($r->getClosureCalledClass()); +$d(); + +$c = [new B(), 'e']; +$d = \Closure::fromCallable($c); +$r = new \ReflectionFunction($d); +var_dump($r->getClosureCalledClass()); +$d(); + +$c = ['A', 'b']; +$d = \Closure::fromCallable($c); +$r = new \ReflectionFunction($d); +var_dump($r->getClosureCalledClass()); +$d(); + +$b = new B(); +$d = $b->makeClosure(); +$r = new \ReflectionFunction($d); +var_dump($r->getClosureCalledClass()); +$d(); + +$d = function () { + echo "{closure}\n"; +}; +$r = new \ReflectionFunction($d); +var_dump($r->getClosureCalledClass()); +$d(); + +?> +--EXPECTF-- +object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "B" +} +B::b +object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "B" +} +B->c +object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "B" +} +B::d +object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "B" +} +B->e +object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "A" +} +A::b +object(ReflectionClass)#%d (1) { + ["name"]=> + string(1) "B" +} +B::{closure} +NULL +{closure} diff --git a/ext/reflection/tests/gh9447.phpt b/ext/reflection/tests/gh9447.phpt new file mode 100644 index 0000000000000..9ee908329733a --- /dev/null +++ b/ext/reflection/tests/gh9447.phpt @@ -0,0 +1,39 @@ +--TEST-- +GH-9447: Invalid class FQN emitted by AST dump for new and class constants in constant expressions +--FILE-- +getParameters() as $p) { + echo $p, "\n"; +} + +?> +--EXPECT-- +Parameter #0 [ $a = \App\Bar::BAZ ] +Parameter #1 [ $b = new \App\Bar() ] +Parameter #2 [ $c = new parent() ] +Parameter #3 [ $d = new self() ] +Parameter #4 [ $e = new \App\Bar() ] +Parameter #5 [ $f = new \SomewhereElse\Qux() ] +Parameter #6 [ $g = new \App\Qux() ] +Parameter #7 [ $i = new \Qux() ] diff --git a/ext/session/php_session.h b/ext/session/php_session.h index aa4a8209507d4..31b96340e82d6 100644 --- a/ext/session/php_session.h +++ b/ext/session/php_session.h @@ -174,8 +174,8 @@ typedef struct _php_ps_globals { zval ps_update_timestamp; } name; } mod_user_names; - int mod_user_implemented; - int mod_user_is_open; + bool mod_user_implemented; + bool mod_user_is_open; zend_string *mod_user_class_name; const struct ps_serializer_struct *serializer; zval http_session_vars; @@ -186,8 +186,8 @@ typedef struct _php_ps_globals { zend_long sid_length; zend_long sid_bits_per_character; - int send_cookie; - int define_sid; + bool send_cookie; + bool define_sid; php_session_rfc1867_progress *rfc1867_progress; bool rfc1867_enabled; /* session.upload_progress.enabled */ diff --git a/ext/session/session.c b/ext/session/session.c index 505347186e9b8..e56c15dcbe37d 100644 --- a/ext/session/session.c +++ b/ext/session/session.c @@ -609,22 +609,6 @@ static PHP_INI_MH(OnUpdateSerializer) /* {{{ */ } /* }}} */ -static PHP_INI_MH(OnUpdateTransSid) /* {{{ */ -{ - SESSION_CHECK_ACTIVE_STATE; - SESSION_CHECK_OUTPUT_STATE; - - if (zend_string_equals_literal_ci(new_value, "on")) { - PS(use_trans_sid) = (bool) 1; - } else { - PS(use_trans_sid) = (bool) atoi(ZSTR_VAL(new_value)); - } - - return SUCCESS; -} -/* }}} */ - - static PHP_INI_MH(OnUpdateSaveDir) /* {{{ */ { SESSION_CHECK_ACTIVE_STATE; @@ -719,8 +703,8 @@ static PHP_INI_MH(OnUpdateSessionString) /* {{{ */ static PHP_INI_MH(OnUpdateSessionBool) /* {{{ */ { - SESSION_CHECK_OUTPUT_STATE; SESSION_CHECK_ACTIVE_STATE; + SESSION_CHECK_OUTPUT_STATE; return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage); } /* }}} */ @@ -731,8 +715,8 @@ static PHP_INI_MH(OnUpdateSidLength) /* {{{ */ zend_long val; char *endptr = NULL; - SESSION_CHECK_OUTPUT_STATE; SESSION_CHECK_ACTIVE_STATE; + SESSION_CHECK_OUTPUT_STATE; val = ZEND_STRTOL(ZSTR_VAL(new_value), &endptr, 10); if (endptr && (*endptr == '\0') && val >= 22 && val <= PS_MAX_SID_LENGTH) { @@ -751,8 +735,8 @@ static PHP_INI_MH(OnUpdateSidBits) /* {{{ */ zend_long val; char *endptr = NULL; - SESSION_CHECK_OUTPUT_STATE; SESSION_CHECK_ACTIVE_STATE; + SESSION_CHECK_OUTPUT_STATE; val = ZEND_STRTOL(ZSTR_VAL(new_value), &endptr, 10); if (endptr && (*endptr == '\0') && val >= 4 && val <=6) { @@ -766,17 +750,6 @@ static PHP_INI_MH(OnUpdateSidBits) /* {{{ */ } /* }}} */ - -static PHP_INI_MH(OnUpdateLazyWrite) /* {{{ */ -{ - SESSION_CHECK_ACTIVE_STATE; - SESSION_CHECK_OUTPUT_STATE; - return OnUpdateBool(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage); -} -/* }}} */ - - - static PHP_INI_MH(OnUpdateRfc1867Freq) /* {{{ */ { int tmp = ZEND_ATOL(ZSTR_VAL(new_value)); @@ -809,19 +782,19 @@ PHP_INI_BEGIN() STD_PHP_INI_ENTRY("session.cookie_lifetime", "0", PHP_INI_ALL, OnUpdateCookieLifetime,cookie_lifetime, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.cookie_path", "/", PHP_INI_ALL, OnUpdateSessionString, cookie_path, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.cookie_domain", "", PHP_INI_ALL, OnUpdateSessionString, cookie_domain, php_ps_globals, ps_globals) - STD_PHP_INI_ENTRY("session.cookie_secure", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_secure, php_ps_globals, ps_globals) - STD_PHP_INI_ENTRY("session.cookie_httponly", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_httponly, php_ps_globals, ps_globals) - STD_PHP_INI_ENTRY("session.cookie_samesite", "", PHP_INI_ALL, OnUpdateString, cookie_samesite, php_ps_globals, ps_globals) - STD_PHP_INI_ENTRY("session.use_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_cookies, php_ps_globals, ps_globals) - STD_PHP_INI_ENTRY("session.use_only_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_only_cookies, php_ps_globals, ps_globals) - STD_PHP_INI_ENTRY("session.use_strict_mode", "0", PHP_INI_ALL, OnUpdateSessionBool, use_strict_mode, php_ps_globals, ps_globals) + STD_PHP_INI_BOOLEAN("session.cookie_secure", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_secure, php_ps_globals, ps_globals) + STD_PHP_INI_BOOLEAN("session.cookie_httponly", "0", PHP_INI_ALL, OnUpdateSessionBool, cookie_httponly, php_ps_globals, ps_globals) + STD_PHP_INI_ENTRY("session.cookie_samesite", "", PHP_INI_ALL, OnUpdateSessionString, cookie_samesite, php_ps_globals, ps_globals) + STD_PHP_INI_BOOLEAN("session.use_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_cookies, php_ps_globals, ps_globals) + STD_PHP_INI_BOOLEAN("session.use_only_cookies", "1", PHP_INI_ALL, OnUpdateSessionBool, use_only_cookies, php_ps_globals, ps_globals) + STD_PHP_INI_BOOLEAN("session.use_strict_mode", "0", PHP_INI_ALL, OnUpdateSessionBool, use_strict_mode, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.referer_check", "", PHP_INI_ALL, OnUpdateSessionString, extern_referer_chk, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.cache_limiter", "nocache", PHP_INI_ALL, OnUpdateSessionString, cache_limiter, php_ps_globals, ps_globals) STD_PHP_INI_ENTRY("session.cache_expire", "180", PHP_INI_ALL, OnUpdateSessionLong, cache_expire, php_ps_globals, ps_globals) - PHP_INI_ENTRY("session.use_trans_sid", "0", PHP_INI_ALL, OnUpdateTransSid) + STD_PHP_INI_BOOLEAN("session.use_trans_sid", "0", PHP_INI_ALL, OnUpdateSessionBool, use_trans_sid, php_ps_globals, ps_globals) PHP_INI_ENTRY("session.sid_length", "32", PHP_INI_ALL, OnUpdateSidLength) PHP_INI_ENTRY("session.sid_bits_per_character", "4", PHP_INI_ALL, OnUpdateSidBits) - STD_PHP_INI_BOOLEAN("session.lazy_write", "1", PHP_INI_ALL, OnUpdateLazyWrite, lazy_write, php_ps_globals, ps_globals) + STD_PHP_INI_BOOLEAN("session.lazy_write", "1", PHP_INI_ALL, OnUpdateSessionBool, lazy_write, php_ps_globals, ps_globals) /* Upload progress */ STD_PHP_INI_BOOLEAN("session.upload_progress.enabled", @@ -1345,7 +1318,7 @@ static zend_result php_session_send_cookie(void) /* {{{ */ t = tv.tv_sec + PS(cookie_lifetime); if (t > 0) { - date_fmt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0); + date_fmt = php_format_date("D, d M Y H:i:s \\G\\M\\T", sizeof("D, d M Y H:i:s \\G\\M\\T")-1, t, 0); smart_str_appends(&ncookie, COOKIE_EXPIRES); smart_str_appendl(&ncookie, ZSTR_VAL(date_fmt), ZSTR_LEN(date_fmt)); zend_string_release_ex(date_fmt, 0); diff --git a/ext/session/session_arginfo.h b/ext/session/session_arginfo.h index 4627d9eaece89..f82530252f1f4 100644 --- a/ext/session/session_arginfo.h +++ b/ext/session/session_arginfo.h @@ -232,9 +232,9 @@ static const zend_function_entry class_SessionHandler_methods[] = { static void register_session_symbols(int module_number) { - REGISTER_LONG_CONSTANT("PHP_SESSION_DISABLED", php_session_disabled, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_SESSION_NONE", php_session_none, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_SESSION_ACTIVE", php_session_active, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_SESSION_DISABLED", php_session_disabled, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_SESSION_NONE", php_session_none, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_SESSION_ACTIVE", php_session_active, CONST_PERSISTENT); } static zend_class_entry *register_class_SessionHandlerInterface(void) diff --git a/ext/session/tests/003.phpt b/ext/session/tests/003.phpt index c0628e28abdd9..ab1739edf6b76 100644 --- a/ext/session/tests/003.phpt +++ b/ext/session/tests/003.phpt @@ -16,6 +16,7 @@ error_reporting(E_ALL); class foo { public $bar = "ok"; + public $yes; function method() { $this->yes++; } } diff --git a/ext/session/tests/004.phpt b/ext/session/tests/004.phpt index 0901286001808..d6b53072c1633 100644 --- a/ext/session/tests/004.phpt +++ b/ext/session/tests/004.phpt @@ -52,6 +52,7 @@ $hnd = new handler; class foo { public $bar = "ok"; + public $yes; function method() { $this->yes++; } } diff --git a/ext/session/tests/005.phpt b/ext/session/tests/005.phpt index 6c7f246a3630a..c4083557866e3 100644 --- a/ext/session/tests/005.phpt +++ b/ext/session/tests/005.phpt @@ -53,6 +53,7 @@ $hnd = new handler; class foo { public $bar = "ok"; + public $yes; function method() { $this->yes++; } } diff --git a/ext/session/tests/023.phpt b/ext/session/tests/023.phpt index 78f6e41c7e790..092f8db64b790 100644 --- a/ext/session/tests/023.phpt +++ b/ext/session/tests/023.phpt @@ -16,6 +16,7 @@ error_reporting(E_ALL); class foo { public $bar = "ok"; + public $yes; function method() { $this->yes++; } } diff --git a/ext/session/tests/024.phpt b/ext/session/tests/024.phpt index b0f819b9d0d2f..c307d79a6873b 100644 --- a/ext/session/tests/024.phpt +++ b/ext/session/tests/024.phpt @@ -53,6 +53,7 @@ $hnd = new handler; class foo { public $bar = "ok"; + public $yes; function method() { $this->yes++; } } diff --git a/ext/session/tests/025.phpt b/ext/session/tests/025.phpt index b18715af36651..5f9a5ad591c7d 100644 --- a/ext/session/tests/025.phpt +++ b/ext/session/tests/025.phpt @@ -54,6 +54,7 @@ $hnd = new handler; class foo { public $bar = "ok"; + public $yes; function method() { $this->yes++; } } diff --git a/ext/session/tests/gh9200.phpt b/ext/session/tests/gh9200.phpt new file mode 100644 index 0000000000000..fd6e28ab8b908 --- /dev/null +++ b/ext/session/tests/gh9200.phpt @@ -0,0 +1,23 @@ +--TEST-- +GH-9200: setcookie has an obsolete expires date format +--INI-- +session.cookie_lifetime=3600 +--EXTENSIONS-- +session +--CGI-- +--FILE-- + +--EXPECT-- +Success diff --git a/ext/session/tests/session_set_cookie_params_variation8.phpt b/ext/session/tests/session_set_cookie_params_variation8.phpt new file mode 100644 index 0000000000000..891133b5b01e9 --- /dev/null +++ b/ext/session/tests/session_set_cookie_params_variation8.phpt @@ -0,0 +1,31 @@ +--TEST-- +Test session_set_cookie_params() function : negative and 0 lifetime +--EXTENSIONS-- +session +--SKIPIF-- + +--FILE-- + 0])); +var_dump(ini_get("session.cookie_lifetime")); + +var_dump(ini_get("session.cookie_lifetime")); +var_dump(session_set_cookie_params(["lifetime" => -10])); +var_dump(ini_get("session.cookie_lifetime")); +echo "Done"; +ob_end_flush(); +?> +--EXPECTF-- +string(1) "0" +bool(true) +string(1) "0" +string(1) "0" + +Warning: session_set_cookie_params(): CookieLifetime cannot be negative in %s on line %d +bool(false) +string(1) "0" +Done diff --git a/ext/shmop/shmop.c b/ext/shmop/shmop.c index ce810a782391e..be4f57ad27162 100644 --- a/ext/shmop/shmop.c +++ b/ext/shmop/shmop.c @@ -84,7 +84,6 @@ static zend_object *shmop_create_object(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &shmop_object_handlers; return &intern->std; } @@ -109,6 +108,7 @@ PHP_MINIT_FUNCTION(shmop) { shmop_ce = register_class_Shmop(); shmop_ce->create_object = shmop_create_object; + shmop_ce->default_object_handlers = &shmop_object_handlers; memcpy(&shmop_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); shmop_object_handlers.offset = XtOffsetOf(php_shmop, std); diff --git a/ext/simplexml/simplexml.c b/ext/simplexml/simplexml.c index 763886730158b..20537989d0711 100644 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@ -2222,7 +2222,6 @@ static php_sxe_object* php_sxe_object_new(zend_class_entry *ce, zend_function *f zend_object_std_init(&intern->zo, ce); object_properties_init(&intern->zo, ce); - intern->zo.handlers = &sxe_object_handlers; return intern; } @@ -2673,6 +2672,7 @@ PHP_MINIT_FUNCTION(simplexml) { sxe_class_entry = register_class_SimpleXMLElement(zend_ce_stringable, zend_ce_countable, spl_ce_RecursiveIterator); sxe_class_entry->create_object = sxe_object_new; + sxe_class_entry->default_object_handlers = &sxe_object_handlers; sxe_class_entry->get_iterator = php_sxe_get_iterator; memcpy(&sxe_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); diff --git a/ext/skeleton/skeleton.c b/ext/skeleton/skeleton.c index a11914cdf5013..b08c9f09c55f7 100644 --- a/ext/skeleton/skeleton.c +++ b/ext/skeleton/skeleton.c @@ -58,7 +58,7 @@ PHP_RINIT_FUNCTION(%EXTNAME%) PHP_MINFO_FUNCTION(%EXTNAME%) { php_info_print_table_start(); - php_info_print_table_header(2, "%EXTNAME% support", "enabled"); + php_info_print_table_row(2, "%EXTNAME% support", "enabled"); php_info_print_table_end(); } /* }}} */ diff --git a/ext/snmp/snmp.c b/ext/snmp/snmp.c index 299d2d8fd08c8..6c7a6f42e968c 100644 --- a/ext/snmp/snmp.c +++ b/ext/snmp/snmp.c @@ -185,8 +185,6 @@ static zend_object *php_snmp_object_new(zend_class_entry *class_type) /* {{{ */ zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); - intern->zo.handlers = &php_snmp_object_handlers; - return &intern->zo; } @@ -2024,6 +2022,7 @@ PHP_MINIT_FUNCTION(snmp) /* Register SNMP Class */ php_snmp_ce = register_class_SNMP(); php_snmp_ce->create_object = php_snmp_object_new; + php_snmp_ce->default_object_handlers = &php_snmp_object_handlers; php_snmp_object_handlers.offset = XtOffsetOf(php_snmp_object, zo); php_snmp_object_handlers.clone_obj = NULL; php_snmp_object_handlers.free_obj = php_snmp_object_free_storage; diff --git a/ext/snmp/snmp_arginfo.h b/ext/snmp/snmp_arginfo.h index ac5140a6e2cc2..19974c85753e3 100644 --- a/ext/snmp/snmp_arginfo.h +++ b/ext/snmp/snmp_arginfo.h @@ -246,27 +246,27 @@ static const zend_function_entry class_SNMPException_methods[] = { static void register_snmp_symbols(int module_number) { - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_SUFFIX", NETSNMP_OID_OUTPUT_SUFFIX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_MODULE", NETSNMP_OID_OUTPUT_MODULE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_FULL", NETSNMP_OID_OUTPUT_FULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NUMERIC", NETSNMP_OID_OUTPUT_NUMERIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_UCD", NETSNMP_OID_OUTPUT_UCD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NONE", NETSNMP_OID_OUTPUT_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VALUE_LIBRARY", SNMP_VALUE_LIBRARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VALUE_PLAIN", SNMP_VALUE_PLAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_VALUE_OBJECT", SNMP_VALUE_OBJECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_BIT_STR", ASN_BIT_STR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OCTET_STR", ASN_OCTET_STR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OPAQUE", ASN_OPAQUE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_NULL", ASN_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_OBJECT_ID", ASN_OBJECT_ID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_IPADDRESS", ASN_IPADDRESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_COUNTER", ASN_GAUGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_UNSIGNED", ASN_UNSIGNED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_TIMETICKS", ASN_TIMETICKS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_UINTEGER", ASN_UINTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_INTEGER", ASN_INTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SNMP_COUNTER64", ASN_COUNTER64, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_SUFFIX", NETSNMP_OID_OUTPUT_SUFFIX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_MODULE", NETSNMP_OID_OUTPUT_MODULE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_FULL", NETSNMP_OID_OUTPUT_FULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NUMERIC", NETSNMP_OID_OUTPUT_NUMERIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_UCD", NETSNMP_OID_OUTPUT_UCD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NONE", NETSNMP_OID_OUTPUT_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VALUE_LIBRARY", SNMP_VALUE_LIBRARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VALUE_PLAIN", SNMP_VALUE_PLAIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_VALUE_OBJECT", SNMP_VALUE_OBJECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_BIT_STR", ASN_BIT_STR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OCTET_STR", ASN_OCTET_STR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OPAQUE", ASN_OPAQUE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_NULL", ASN_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_OBJECT_ID", ASN_OBJECT_ID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_IPADDRESS", ASN_IPADDRESS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_COUNTER", ASN_GAUGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_UNSIGNED", ASN_UNSIGNED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_TIMETICKS", ASN_TIMETICKS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_UINTEGER", ASN_UINTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_INTEGER", ASN_INTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SNMP_COUNTER64", ASN_COUNTER64, CONST_PERSISTENT); } static zend_class_entry *register_class_SNMP(void) diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 5d89825f91c30..a318ae896f4fd 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -194,7 +194,6 @@ static zend_object *soap_server_object_create(zend_class_entry *ce) soap_server_object *obj = zend_object_alloc(sizeof(soap_server_object), ce); zend_object_std_init(&obj->std, ce); object_properties_init(&obj->std, ce); - obj->std.handlers = &soap_server_object_handlers; return &obj->std; } @@ -407,6 +406,7 @@ PHP_MINIT_FUNCTION(soap) /* Register SoapServer class */ soap_server_class_entry = register_class_SoapServer(); soap_server_class_entry->create_object = soap_server_object_create; + soap_server_class_entry->default_object_handlers = &soap_server_object_handlers; memcpy(&soap_server_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); soap_server_object_handlers.offset = XtOffsetOf(soap_server_object, std); diff --git a/ext/soap/soap_arginfo.h b/ext/soap/soap_arginfo.h index e725f5d3ebce9..5305b6e9891b1 100644 --- a/ext/soap/soap_arginfo.h +++ b/ext/soap/soap_arginfo.h @@ -235,87 +235,87 @@ static const zend_function_entry class_SoapClient_methods[] = { static void register_soap_symbols(int module_number) { - REGISTER_LONG_CONSTANT("SOAP_1_1", SOAP_1_1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_1_2", SOAP_1_2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_PERSISTENCE_SESSION", SOAP_PERSISTENCE_SESSION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_PERSISTENCE_REQUEST", SOAP_PERSISTENCE_REQUEST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_FUNCTIONS_ALL", SOAP_FUNCTIONS_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_ENCODED", SOAP_ENCODED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_LITERAL", SOAP_LITERAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_RPC", SOAP_RPC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_DOCUMENT", SOAP_DOCUMENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_ACTOR_NEXT", SOAP_ACTOR_NEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_ACTOR_NONE", SOAP_ACTOR_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_ACTOR_UNLIMATERECEIVER", SOAP_ACTOR_UNLIMATERECEIVER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_ACCEPT", SOAP_COMPRESSION_ACCEPT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_GZIP", SOAP_COMPRESSION_GZIP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_DEFLATE", SOAP_COMPRESSION_DEFLATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_AUTHENTICATION_BASIC", SOAP_AUTHENTICATION_BASIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_AUTHENTICATION_DIGEST", SOAP_AUTHENTICATION_DIGEST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("UNKNOWN_TYPE", UNKNOWN_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_STRING", XSD_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_BOOLEAN", XSD_BOOLEAN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_DECIMAL", XSD_DECIMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_FLOAT", XSD_FLOAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_DOUBLE", XSD_DOUBLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_DURATION", XSD_DURATION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_DATETIME", XSD_DATETIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_TIME", XSD_TIME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_DATE", XSD_DATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_GYEARMONTH", XSD_GYEARMONTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_GYEAR", XSD_GYEAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_GMONTHDAY", XSD_GMONTHDAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_GDAY", XSD_GDAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_GMONTH", XSD_GMONTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_HEXBINARY", XSD_HEXBINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_BASE64BINARY", XSD_BASE64BINARY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_ANYURI", XSD_ANYURI, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_QNAME", XSD_QNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NOTATION", XSD_NOTATION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NORMALIZEDSTRING", XSD_NORMALIZEDSTRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_TOKEN", XSD_TOKEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_LANGUAGE", XSD_LANGUAGE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NMTOKEN", XSD_NMTOKEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NAME", XSD_NAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NCNAME", XSD_NCNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_ID", XSD_ID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_IDREF", XSD_IDREF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_IDREFS", XSD_IDREFS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_ENTITY", XSD_ENTITY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_ENTITIES", XSD_ENTITIES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_INTEGER", XSD_INTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NONPOSITIVEINTEGER", XSD_NONPOSITIVEINTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NEGATIVEINTEGER", XSD_NEGATIVEINTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_LONG", XSD_LONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_INT", XSD_INT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_SHORT", XSD_SHORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_BYTE", XSD_BYTE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NONNEGATIVEINTEGER", XSD_NONNEGATIVEINTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_UNSIGNEDLONG", XSD_UNSIGNEDLONG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_UNSIGNEDINT", XSD_UNSIGNEDINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_UNSIGNEDSHORT", XSD_UNSIGNEDSHORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_UNSIGNEDBYTE", XSD_UNSIGNEDBYTE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_POSITIVEINTEGER", XSD_POSITIVEINTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_NMTOKENS", XSD_NMTOKENS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_ANYTYPE", XSD_ANYTYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_ANYXML", XSD_ANYXML, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("APACHE_MAP", APACHE_MAP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_ENC_OBJECT", SOAP_ENC_OBJECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_ENC_ARRAY", SOAP_ENC_ARRAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSD_1999_TIMEINSTANT", XSD_1999_TIMEINSTANT, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("XSD_NAMESPACE", XSD_NAMESPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("XSD_1999_NAMESPACE", XSD_1999_NAMESPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_SINGLE_ELEMENT_ARRAYS", SOAP_SINGLE_ELEMENT_ARRAYS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_WAIT_ONE_WAY_CALLS", SOAP_WAIT_ONE_WAY_CALLS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_USE_XSI_ARRAY_TYPE", SOAP_USE_XSI_ARRAY_TYPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("WSDL_CACHE_NONE", WSDL_CACHE_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("WSDL_CACHE_DISK", WSDL_CACHE_DISK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("WSDL_CACHE_MEMORY", WSDL_CACHE_MEMORY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("WSDL_CACHE_BOTH", WSDL_CACHE_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_TLS", SOAP_SSL_METHOD_TLS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_SSLv2", SOAP_SSL_METHOD_SSLv2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_SSLv3", SOAP_SSL_METHOD_SSLv3, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_SSLv23", SOAP_SSL_METHOD_SSLv23, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_1_1", SOAP_1_1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_1_2", SOAP_1_2, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_PERSISTENCE_SESSION", SOAP_PERSISTENCE_SESSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_PERSISTENCE_REQUEST", SOAP_PERSISTENCE_REQUEST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_FUNCTIONS_ALL", SOAP_FUNCTIONS_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_ENCODED", SOAP_ENCODED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_LITERAL", SOAP_LITERAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_RPC", SOAP_RPC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_DOCUMENT", SOAP_DOCUMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_ACTOR_NEXT", SOAP_ACTOR_NEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_ACTOR_NONE", SOAP_ACTOR_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_ACTOR_UNLIMATERECEIVER", SOAP_ACTOR_UNLIMATERECEIVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_ACCEPT", SOAP_COMPRESSION_ACCEPT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_GZIP", SOAP_COMPRESSION_GZIP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_COMPRESSION_DEFLATE", SOAP_COMPRESSION_DEFLATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_AUTHENTICATION_BASIC", SOAP_AUTHENTICATION_BASIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_AUTHENTICATION_DIGEST", SOAP_AUTHENTICATION_DIGEST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("UNKNOWN_TYPE", UNKNOWN_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_STRING", XSD_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_BOOLEAN", XSD_BOOLEAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_DECIMAL", XSD_DECIMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_FLOAT", XSD_FLOAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_DOUBLE", XSD_DOUBLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_DURATION", XSD_DURATION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_DATETIME", XSD_DATETIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_TIME", XSD_TIME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_DATE", XSD_DATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_GYEARMONTH", XSD_GYEARMONTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_GYEAR", XSD_GYEAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_GMONTHDAY", XSD_GMONTHDAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_GDAY", XSD_GDAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_GMONTH", XSD_GMONTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_HEXBINARY", XSD_HEXBINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_BASE64BINARY", XSD_BASE64BINARY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_ANYURI", XSD_ANYURI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_QNAME", XSD_QNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NOTATION", XSD_NOTATION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NORMALIZEDSTRING", XSD_NORMALIZEDSTRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_TOKEN", XSD_TOKEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_LANGUAGE", XSD_LANGUAGE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NMTOKEN", XSD_NMTOKEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NAME", XSD_NAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NCNAME", XSD_NCNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_ID", XSD_ID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_IDREF", XSD_IDREF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_IDREFS", XSD_IDREFS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_ENTITY", XSD_ENTITY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_ENTITIES", XSD_ENTITIES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_INTEGER", XSD_INTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NONPOSITIVEINTEGER", XSD_NONPOSITIVEINTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NEGATIVEINTEGER", XSD_NEGATIVEINTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_LONG", XSD_LONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_INT", XSD_INT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_SHORT", XSD_SHORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_BYTE", XSD_BYTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NONNEGATIVEINTEGER", XSD_NONNEGATIVEINTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_UNSIGNEDLONG", XSD_UNSIGNEDLONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_UNSIGNEDINT", XSD_UNSIGNEDINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_UNSIGNEDSHORT", XSD_UNSIGNEDSHORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_UNSIGNEDBYTE", XSD_UNSIGNEDBYTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_POSITIVEINTEGER", XSD_POSITIVEINTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_NMTOKENS", XSD_NMTOKENS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_ANYTYPE", XSD_ANYTYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_ANYXML", XSD_ANYXML, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("APACHE_MAP", APACHE_MAP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_ENC_OBJECT", SOAP_ENC_OBJECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_ENC_ARRAY", SOAP_ENC_ARRAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSD_1999_TIMEINSTANT", XSD_1999_TIMEINSTANT, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("XSD_NAMESPACE", XSD_NAMESPACE, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("XSD_1999_NAMESPACE", XSD_1999_NAMESPACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_SINGLE_ELEMENT_ARRAYS", SOAP_SINGLE_ELEMENT_ARRAYS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_WAIT_ONE_WAY_CALLS", SOAP_WAIT_ONE_WAY_CALLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_USE_XSI_ARRAY_TYPE", SOAP_USE_XSI_ARRAY_TYPE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("WSDL_CACHE_NONE", WSDL_CACHE_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("WSDL_CACHE_DISK", WSDL_CACHE_DISK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("WSDL_CACHE_MEMORY", WSDL_CACHE_MEMORY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("WSDL_CACHE_BOTH", WSDL_CACHE_BOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_TLS", SOAP_SSL_METHOD_TLS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_SSLv2", SOAP_SSL_METHOD_SSLv2, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_SSLv3", SOAP_SSL_METHOD_SSLv3, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOAP_SSL_METHOD_SSLv23", SOAP_SSL_METHOD_SSLv23, CONST_PERSISTENT); } static zend_class_entry *register_class_SoapParam(void) diff --git a/ext/soap/tests/bug70388.phpt b/ext/soap/tests/bug70388.phpt index 87259bf45d50a..8f3e8be766ea1 100644 --- a/ext/soap/tests/bug70388.phpt +++ b/ext/soap/tests/bug70388.phpt @@ -4,6 +4,8 @@ Bug #70388 (SOAP serialize_function_call() type confusion / RCE) soap --FILE-- -#define IPV6_RECVPKTINFO IPV6_PKTINFO -#define IPV6_RECVHOPLIMIT IPV6_HOPLIMIT #define msghdr _WSAMSG static GUID WSARecvMsg_GUID = WSAID_WSARECVMSG; @@ -424,50 +422,6 @@ int php_do_getsockopt_ipv6_rfc3542(php_socket *php_sock, int level, int optname, void php_socket_sendrecvmsg_init(INIT_FUNC_ARGS) { - /* IPv6 ancillary data */ -#if defined(IPV6_RECVPKTINFO) && HAVE_IPV6 - REGISTER_LONG_CONSTANT("IPV6_RECVPKTINFO", IPV6_RECVPKTINFO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_PKTINFO", IPV6_PKTINFO, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(IPV6_RECVHOPLIMIT) && HAVE_IPV6 - REGISTER_LONG_CONSTANT("IPV6_RECVHOPLIMIT", IPV6_RECVHOPLIMIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_HOPLIMIT", IPV6_HOPLIMIT, CONST_CS | CONST_PERSISTENT); -#endif - /* would require some effort: - REGISTER_LONG_CONSTANT("IPV6_RECVRTHDR", IPV6_RECVRTHDR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_RECVHOPOPTS", IPV6_RECVHOPOPTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_RECVDSTOPTS", IPV6_RECVDSTOPTS, CONST_CS | CONST_PERSISTENT); - */ -#if defined(IPV6_RECVTCLASS) && HAVE_IPV6 - REGISTER_LONG_CONSTANT("IPV6_RECVTCLASS", IPV6_RECVTCLASS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_TCLASS", IPV6_TCLASS, CONST_CS | CONST_PERSISTENT); -#endif - - /* - REGISTER_LONG_CONSTANT("IPV6_RTHDR", IPV6_RTHDR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_HOPOPTS", IPV6_HOPOPTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_DSTOPTS", IPV6_DSTOPTS, CONST_CS | CONST_PERSISTENT); - */ - -#ifdef SCM_RIGHTS - REGISTER_LONG_CONSTANT("SCM_RIGHTS", SCM_RIGHTS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_PASSCRED -#ifdef SCM_CREDENTIALS - REGISTER_LONG_CONSTANT("SCM_CREDENTIALS", SCM_CREDENTIALS, CONST_CS | CONST_PERSISTENT); -#else - REGISTER_LONG_CONSTANT("SCM_CREDS", SCM_CREDS, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SO_PASSCRED", SO_PASSCRED, CONST_CS | CONST_PERSISTENT); -#endif -#if defined(LOCAL_CREDS_PERSISTENT) - REGISTER_LONG_CONSTANT("SCM_CREDS2", SCM_CREDS2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCAL_CREDS_PERSISTENT", LOCAL_CREDS_PERSISTENT, CONST_CS | CONST_PERSISTENT); -#elif defined(LOCAL_CREDS) - REGISTER_LONG_CONSTANT("SCM_CREDS", SCM_CREDS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCAL_CREDS", LOCAL_CREDS, CONST_CS | CONST_PERSISTENT); -#endif - #ifdef ZTS ancillary_mutex = tsrm_mutex_alloc(); #endif diff --git a/ext/sockets/sendrecvmsg.h b/ext/sockets/sendrecvmsg.h index 1d651458adb6e..fd68b178ce5c3 100644 --- a/ext/sockets/sendrecvmsg.h +++ b/ext/sockets/sendrecvmsg.h @@ -6,6 +6,11 @@ /* for sockets.c */ +#ifdef PHP_WIN32 +#define IPV6_RECVPKTINFO IPV6_PKTINFO +#define IPV6_RECVHOPLIMIT IPV6_HOPLIMIT +#endif + void php_socket_sendrecvmsg_init(INIT_FUNC_ARGS); void php_socket_sendrecvmsg_shutdown(SHUTDOWN_FUNC_ARGS); diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index 3b69e058ecc80..8dd8265d7341c 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -76,20 +76,6 @@ ZEND_DECLARE_MODULE_GLOBALS(sockets) -#ifndef MSG_WAITALL -#ifdef LINUX -#define MSG_WAITALL 0x00000100 -#else -#define MSG_WAITALL 0x00000000 -#endif -#endif - -#ifndef MSG_EOF -#ifdef MSG_FIN -#define MSG_EOF MSG_FIN -#endif -#endif - #ifndef SUN_LEN #define SUN_LEN(su) (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path)) #endif @@ -98,9 +84,6 @@ ZEND_DECLARE_MODULE_GLOBALS(sockets) #define PF_INET AF_INET #endif -#define PHP_NORMAL_READ 0x0001 -#define PHP_BINARY_READ 0x0002 - static PHP_GINIT_FUNCTION(sockets); static PHP_GSHUTDOWN_FUNCTION(sockets); static PHP_MINIT_FUNCTION(sockets); @@ -118,7 +101,6 @@ static zend_object *socket_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &socket_object_handlers; intern->bsd_socket = -1; /* invalid socket */ intern->type = PF_UNSPEC; @@ -180,7 +162,6 @@ static zend_object *address_info_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &address_info_object_handlers; return &intern->std; } @@ -445,6 +426,7 @@ static PHP_MINIT_FUNCTION(sockets) socket_ce = register_class_Socket(); socket_ce->create_object = socket_create_object; + socket_ce->default_object_handlers = &socket_object_handlers; memcpy(&socket_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); socket_object_handlers.offset = XtOffsetOf(php_socket, std); @@ -456,6 +438,7 @@ static PHP_MINIT_FUNCTION(sockets) address_info_ce = register_class_AddressInfo(); address_info_ce->create_object = address_info_create_object; + address_info_ce->default_object_handlers = &address_info_object_handlers; memcpy(&address_info_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); address_info_object_handlers.offset = XtOffsetOf(php_addrinfo, std); @@ -464,263 +447,7 @@ static PHP_MINIT_FUNCTION(sockets) address_info_object_handlers.clone_obj = NULL; address_info_object_handlers.compare = zend_objects_not_comparable; - REGISTER_LONG_CONSTANT("AF_UNIX", AF_UNIX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("AF_INET", AF_INET, CONST_CS | CONST_PERSISTENT); -#if HAVE_IPV6 - REGISTER_LONG_CONSTANT("AF_INET6", AF_INET6, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SOCK_STREAM", SOCK_STREAM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOCK_DGRAM", SOCK_DGRAM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOCK_RAW", SOCK_RAW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOCK_SEQPACKET",SOCK_SEQPACKET, CONST_CS | CONST_PERSISTENT); -#ifdef SOCK_RDM - REGISTER_LONG_CONSTANT("SOCK_RDM", SOCK_RDM, CONST_CS | CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("MSG_OOB", MSG_OOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_WAITALL", MSG_WAITALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_CTRUNC", MSG_CTRUNC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_TRUNC", MSG_TRUNC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_PEEK", MSG_PEEK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_DONTROUTE", MSG_DONTROUTE, CONST_CS | CONST_PERSISTENT); -#ifdef MSG_EOR - REGISTER_LONG_CONSTANT("MSG_EOR", MSG_EOR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_EOF - REGISTER_LONG_CONSTANT("MSG_EOF", MSG_EOF, CONST_CS | CONST_PERSISTENT); -#endif - -#ifdef MSG_CONFIRM - REGISTER_LONG_CONSTANT("MSG_CONFIRM", MSG_CONFIRM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_ERRQUEUE - REGISTER_LONG_CONSTANT("MSG_ERRQUEUE", MSG_ERRQUEUE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_NOSIGNAL - REGISTER_LONG_CONSTANT("MSG_NOSIGNAL", MSG_NOSIGNAL, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_DONTWAIT - REGISTER_LONG_CONSTANT("MSG_DONTWAIT", MSG_DONTWAIT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_MORE - REGISTER_LONG_CONSTANT("MSG_MORE", MSG_MORE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_WAITFORONE - REGISTER_LONG_CONSTANT("MSG_WAITFORONE",MSG_WAITFORONE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_CMSG_CLOEXEC - REGISTER_LONG_CONSTANT("MSG_CMSG_CLOEXEC",MSG_CMSG_CLOEXEC,CONST_CS | CONST_PERSISTENT); -#endif -#ifdef MSG_ZEROCOPY - REGISTER_LONG_CONSTANT("MSG_ZEROCOPY", MSG_ZEROCOPY, CONST_CS | CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("SO_DEBUG", SO_DEBUG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_REUSEADDR", SO_REUSEADDR, CONST_CS | CONST_PERSISTENT); -#ifdef SO_REUSEPORT - REGISTER_LONG_CONSTANT("SO_REUSEPORT", SO_REUSEPORT, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SO_KEEPALIVE", SO_KEEPALIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_DONTROUTE", SO_DONTROUTE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_LINGER", SO_LINGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_BROADCAST", SO_BROADCAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_OOBINLINE", SO_OOBINLINE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_SNDBUF", SO_SNDBUF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_RCVBUF", SO_RCVBUF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_SNDLOWAT", SO_SNDLOWAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_RCVLOWAT", SO_RCVLOWAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_SNDTIMEO", SO_SNDTIMEO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_RCVTIMEO", SO_RCVTIMEO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_TYPE", SO_TYPE, CONST_CS | CONST_PERSISTENT); -#ifdef SO_FAMILY - REGISTER_LONG_CONSTANT("SO_FAMILY", SO_FAMILY, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SO_ERROR", SO_ERROR, CONST_CS | CONST_PERSISTENT); -#ifdef SO_BINDTODEVICE - REGISTER_LONG_CONSTANT("SO_BINDTODEVICE", SO_BINDTODEVICE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_USER_COOKIE - REGISTER_LONG_CONSTANT("SO_LABEL", SO_LABEL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_PEERLABEL", SO_PEERLABEL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_LISTENQLIMIT", SO_LISTENQLIMIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_LISTENQLEN", SO_LISTENQLEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SO_USER_COOKIE", SO_USER_COOKIE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_SETFIB - REGISTER_LONG_CONSTANT("SO_SETFIB", SO_SETFIB, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_ACCEPTFILTER - REGISTER_LONG_CONSTANT("SO_ACCEPTFILTER", SO_ACCEPTFILTER, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SOL_FILTER - REGISTER_LONG_CONSTANT("SOL_FILTER", SOL_FILTER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FIL_ATTACH", FIL_ATTACH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FIL_DETACH", FIL_DETACH, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_DONTTRUNC - REGISTER_LONG_CONSTANT("SO_DONTTRUNC", SO_DONTTRUNC, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_WANTMORE - REGISTER_LONG_CONSTANT("SO_WANTMORE", SO_WANTMORE, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SOL_SOCKET", SOL_SOCKET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOMAXCONN", SOMAXCONN, CONST_CS | CONST_PERSISTENT); -#ifdef SO_MARK - REGISTER_LONG_CONSTANT("SO_MARK", SO_MARK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_RTABLE - REGISTER_LONG_CONSTANT("SO_RTABLE", SO_RTABLE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_INCOMING_CPU - REGISTER_LONG_CONSTANT("SO_INCOMING_CPU", SO_INCOMING_CPU, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_MEMINFO - REGISTER_LONG_CONSTANT("SO_MEMINFO", SO_MEMINFO, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_BPF_EXTENSIONS - REGISTER_LONG_CONSTANT("SO_BPF_EXTENSIONS", SO_BPF_EXTENSIONS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_OFF - REGISTER_LONG_CONSTANT("SKF_AD_OFF", SKF_AD_OFF, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_PROTOCOL - REGISTER_LONG_CONSTANT("SKF_AD_PROTOCOL", SKF_AD_PROTOCOL, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_PKTTYPE - REGISTER_LONG_CONSTANT("SKF_AD_PKTTYPE", SKF_AD_PKTTYPE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_IFINDEX - REGISTER_LONG_CONSTANT("SKF_AD_IFINDEX", SKF_AD_IFINDEX, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_NLATTR - REGISTER_LONG_CONSTANT("SKF_AD_NLATTR", SKF_AD_NLATTR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_NLATTR_NEST - REGISTER_LONG_CONSTANT("SKF_AD_NLATTR_NEST", SKF_AD_NLATTR_NEST, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_MARK - REGISTER_LONG_CONSTANT("SKF_AD_MARK", SKF_AD_MARK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_QUEUE - REGISTER_LONG_CONSTANT("SKF_AD_QUEUE", SKF_AD_QUEUE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_HATYPE - REGISTER_LONG_CONSTANT("SKF_AD_HATYPE", SKF_AD_HATYPE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_RXHASH - REGISTER_LONG_CONSTANT("SKF_AD_RXHASH", SKF_AD_RXHASH, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_CPU - REGISTER_LONG_CONSTANT("SKF_AD_CPU", SKF_AD_CPU, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_ALU_XOR_X - REGISTER_LONG_CONSTANT("SKF_AD_ALU_XOR_X", SKF_AD_ALU_XOR_X, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_VLAN_TAG - REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TAG", SKF_AD_VLAN_TAG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_VLAN_TAG_PRESENT - REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TAG_PRESENT", SKF_AD_VLAN_TAG_PRESENT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_PAY_OFFSET - REGISTER_LONG_CONSTANT("SKF_AD_PAY_OFFSET", SKF_AD_PAY_OFFSET, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_RANDOM - REGISTER_LONG_CONSTANT("SKF_AD_RANDOM", SKF_AD_RANDOM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_VLAN_TPID - REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TPID", SKF_AD_VLAN_TPID, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SKF_AD_MAX - REGISTER_LONG_CONSTANT("SKF_AD_MAX", SKF_AD_MAX, CONST_CS | CONST_PERSISTENT); -#endif - -#ifdef TCP_CONGESTION - REGISTER_LONG_CONSTANT("TCP_CONGESTION", TCP_CONGESTION, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SO_ZEROCOPY - REGISTER_LONG_CONSTANT("SO_ZEROCOPY", SO_ZEROCOPY, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef TCP_NODELAY - REGISTER_LONG_CONSTANT("TCP_NODELAY", TCP_NODELAY, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef TCP_NOTSENT_LOWAT - REGISTER_LONG_CONSTANT("TCP_NOTSENT_LOWAT", TCP_NOTSENT_LOWAT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef TCP_DEFER_ACCEPT - REGISTER_LONG_CONSTANT("TCP_DEFER_ACCEPT", TCP_DEFER_ACCEPT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef TCP_KEEPALIVE - REGISTER_LONG_CONSTANT("TCP_KEEPALIVE", TCP_KEEPALIVE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef TCP_KEEPIDLE - REGISTER_LONG_CONSTANT("TCP_KEEPIDLE", TCP_KEEPIDLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TCP_KEEPINTVL", TCP_KEEPINTVL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("TCP_KEEPCNT", TCP_KEEPCNT, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("PHP_NORMAL_READ", PHP_NORMAL_READ, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_BINARY_READ", PHP_BINARY_READ, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("MCAST_JOIN_GROUP", PHP_MCAST_JOIN_GROUP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MCAST_LEAVE_GROUP", PHP_MCAST_LEAVE_GROUP, CONST_CS | CONST_PERSISTENT); -#ifdef HAS_MCAST_EXT - REGISTER_LONG_CONSTANT("MCAST_BLOCK_SOURCE", PHP_MCAST_BLOCK_SOURCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MCAST_UNBLOCK_SOURCE", PHP_MCAST_UNBLOCK_SOURCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MCAST_JOIN_SOURCE_GROUP", PHP_MCAST_JOIN_SOURCE_GROUP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MCAST_LEAVE_SOURCE_GROUP", PHP_MCAST_LEAVE_SOURCE_GROUP, CONST_CS | CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("IP_MULTICAST_IF", IP_MULTICAST_IF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IP_MULTICAST_TTL", IP_MULTICAST_TTL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IP_MULTICAST_LOOP", IP_MULTICAST_LOOP, CONST_CS | CONST_PERSISTENT); -#if HAVE_IPV6 - REGISTER_LONG_CONSTANT("IPV6_MULTICAST_IF", IPV6_MULTICAST_IF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IPV6_MULTICAST_LOOP", IPV6_MULTICAST_LOOP, CONST_CS | CONST_PERSISTENT); -#endif - -#ifdef IPV6_V6ONLY - REGISTER_LONG_CONSTANT("IPV6_V6ONLY", IPV6_V6ONLY, CONST_CS | CONST_PERSISTENT); -#endif - -#ifndef WIN32 -# include "unix_socket_constants.h" -#else -# include "win32_socket_constants.h" -#endif - - REGISTER_LONG_CONSTANT("IPPROTO_IP", IPPROTO_IP, CONST_CS | CONST_PERSISTENT); -#if HAVE_IPV6 - REGISTER_LONG_CONSTANT("IPPROTO_IPV6", IPPROTO_IPV6, CONST_CS | CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("SOL_TCP", IPPROTO_TCP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SOL_UDP", IPPROTO_UDP, CONST_CS | CONST_PERSISTENT); - -#if HAVE_IPV6 - REGISTER_LONG_CONSTANT("IPV6_UNICAST_HOPS", IPV6_UNICAST_HOPS, CONST_CS | CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("AI_PASSIVE", AI_PASSIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("AI_CANONNAME", AI_CANONNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("AI_NUMERICHOST", AI_NUMERICHOST, CONST_CS | CONST_PERSISTENT); -#if HAVE_AI_V4MAPPED - REGISTER_LONG_CONSTANT("AI_V4MAPPED", AI_V4MAPPED, CONST_CS | CONST_PERSISTENT); -#endif -#if HAVE_AI_ALL - REGISTER_LONG_CONSTANT("AI_ALL", AI_ALL, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("AI_ADDRCONFIG", AI_ADDRCONFIG, CONST_CS | CONST_PERSISTENT); -#if HAVE_AI_IDN - REGISTER_LONG_CONSTANT("AI_IDN", AI_IDN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("AI_CANONIDN", AI_CANONIDN, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef AI_NUMERICSERV - REGISTER_LONG_CONSTANT("AI_NUMERICSERV", AI_NUMERICSERV, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef SOL_LOCAL - REGISTER_LONG_CONSTANT("SOL_LOCAL", SOL_LOCAL, CONST_CS | CONST_PERSISTENT); -#endif + register_sockets_symbols(module_number); php_socket_sendrecvmsg_init(INIT_FUNC_ARGS_PASSTHRU); diff --git a/ext/sockets/sockets.stub.php b/ext/sockets/sockets.stub.php index 188fdefa3e923..997d3eb2f7ec7 100644 --- a/ext/sockets/sockets.stub.php +++ b/ext/sockets/sockets.stub.php @@ -2,6 +2,1683 @@ /** @generate-class-entries */ +/** + * @var int + * @cvalue AF_UNIX + */ +const AF_UNIX = UNKNOWN; +/** + * @var int + * @cvalue AF_INET + */ +const AF_INET = UNKNOWN; +#if HAVE_IPV6 +/** + * @var int + * @cvalue AF_INET6 + */ +const AF_INET6 = UNKNOWN; +#endif +/** + * @var int + * @cvalue SOCK_STREAM + */ +const SOCK_STREAM = UNKNOWN; +/** + * @var int + * @cvalue SOCK_DGRAM + */ +const SOCK_DGRAM = UNKNOWN; +/** + * @var int + * @cvalue SOCK_RAW + */ +const SOCK_RAW = UNKNOWN; +/** + * @var int + * @cvalue SOCK_SEQPACKET + */ +const SOCK_SEQPACKET = UNKNOWN; +#ifdef SOCK_RDM +/** + * @var int + * @cvalue SOCK_RDM + */ +const SOCK_RDM = UNKNOWN; +#endif + +/** + * @var int + * @cvalue MSG_OOB + */ +const MSG_OOB = UNKNOWN; +/** + * @var int + * @cvalue MSG_WAITALL + */ +const MSG_WAITALL = UNKNOWN; +/** + * @var int + * @cvalue MSG_CTRUNC + */ +const MSG_CTRUNC = UNKNOWN; +/** + * @var int + * @cvalue MSG_TRUNC + */ +const MSG_TRUNC = UNKNOWN; +/** + * @var int + * @cvalue MSG_PEEK + */ +const MSG_PEEK = UNKNOWN; +/** + * @var int + * @cvalue MSG_DONTROUTE + */ +const MSG_DONTROUTE = UNKNOWN; +#ifdef MSG_EOR +/** + * @var int + * @cvalue MSG_EOR + */ +const MSG_EOR = UNKNOWN; +#endif +#ifdef MSG_EOF +/** + * @var int + * @cvalue MSG_EOF + */ +const MSG_EOF = UNKNOWN; +#endif + +#ifdef MSG_CONFIRM +/** + * @var int + * @cvalue MSG_CONFIRM + */ +const MSG_CONFIRM = UNKNOWN; +#endif +#ifdef MSG_ERRQUEUE +/** + * @var int + * @cvalue MSG_ERRQUEUE + */ +const MSG_ERRQUEUE = UNKNOWN; +#endif +#ifdef MSG_NOSIGNAL +/** + * @var int + * @cvalue MSG_NOSIGNAL + */ +const MSG_NOSIGNAL = UNKNOWN; +#endif +#ifdef MSG_DONTWAIT +/** + * @var int + * @cvalue MSG_DONTWAIT + */ +const MSG_DONTWAIT = UNKNOWN; +#endif +#ifdef MSG_MORE +/** + * @var int + * @cvalue MSG_MORE + */ +const MSG_MORE = UNKNOWN; +#endif +#ifdef MSG_WAITFORONE +/** + * @var int + * @cvalue MSG_WAITFORONE + */ +const MSG_WAITFORONE = UNKNOWN; +#endif +#ifdef MSG_CMSG_CLOEXEC +/** + * @var int + * @cvalue MSG_CMSG_CLOEXEC + */ +const MSG_CMSG_CLOEXEC = UNKNOWN; +#endif +#ifdef MSG_ZEROCOPY +/** + * @var int + * @cvalue MSG_ZEROCOPY + */ +const MSG_ZEROCOPY = UNKNOWN; +#endif + +/** + * @var int + * @cvalue SO_DEBUG + */ +const SO_DEBUG = UNKNOWN; +/** + * @var int + * @cvalue SO_REUSEADDR + */ +const SO_REUSEADDR = UNKNOWN; +#ifdef SO_REUSEPORT +/** + * @var int + * @cvalue SO_REUSEPORT + */ +const SO_REUSEPORT = UNKNOWN; +#endif +/** + * @var int + * @cvalue SO_KEEPALIVE + */ +const SO_KEEPALIVE = UNKNOWN; +/** + * @var int + * @cvalue SO_DONTROUTE + */ +const SO_DONTROUTE = UNKNOWN; +/** + * @var int + * @cvalue SO_LINGER + */ +const SO_LINGER = UNKNOWN; +/** + * @var int + * @cvalue SO_BROADCAST + */ +const SO_BROADCAST = UNKNOWN; +/** + * @var int + * @cvalue SO_OOBINLINE + */ +const SO_OOBINLINE = UNKNOWN; +/** + * @var int + * @cvalue SO_SNDBUF + */ +const SO_SNDBUF = UNKNOWN; +/** + * @var int + * @cvalue SO_RCVBUF + */ +const SO_RCVBUF = UNKNOWN; +/** + * @var int + * @cvalue SO_SNDLOWAT + */ +const SO_SNDLOWAT = UNKNOWN; +/** + * @var int + * @cvalue SO_RCVLOWAT + */ +const SO_RCVLOWAT = UNKNOWN; +/** + * @var int + * @cvalue SO_SNDTIMEO + */ +const SO_SNDTIMEO = UNKNOWN; +/** + * @var int + * @cvalue SO_RCVTIMEO + */ +const SO_RCVTIMEO = UNKNOWN; +/** + * @var int + * @cvalue SO_TYPE + */ +const SO_TYPE = UNKNOWN; +#ifdef SO_FAMILY +/** + * @var int + * @cvalue SO_FAMILY + */ +const SO_FAMILY = UNKNOWN; +#endif +/** + * @var int + * @cvalue SO_ERROR + */ +const SO_ERROR = UNKNOWN; +#ifdef SO_BINDTODEVICE +/** + * @var int + * @cvalue SO_BINDTODEVICE + */ +const SO_BINDTODEVICE = UNKNOWN; +#endif +#ifdef SO_USER_COOKIE +/** + * @var int + * @cvalue SO_LABEL + */ +const SO_LABEL = UNKNOWN; +/** + * @var int + * @cvalue SO_PEERLABEL + */ +const SO_PEERLABEL = UNKNOWN; +/** + * @var int + * @cvalue SO_LISTENQLIMIT + */ +const SO_LISTENQLIMIT = UNKNOWN; +/** + * @var int + * @cvalue SO_LISTENQLEN + */ +const SO_LISTENQLEN = UNKNOWN; +/** + * @var int + * @cvalue SO_USER_COOKIE + */ +const SO_USER_COOKIE = UNKNOWN; +#endif +#ifdef SO_SETFIB +/** + * @var int + * @cvalue SO_SETFIB + */ +const SO_SETFIB = UNKNOWN; +#endif +#ifdef SO_ACCEPTFILTER +/** + * @var int + * @cvalue SO_ACCEPTFILTER + */ +const SO_ACCEPTFILTER = UNKNOWN; +#endif +#ifdef SOL_FILTER +/** + * @var int + * @cvalue SOL_FILTER + */ +const SOL_FILTER = UNKNOWN; +/** + * @var int + * @cvalue FIL_ATTACH + */ +const FIL_ATTACH = UNKNOWN; +/** + * @var int + * @cvalue FIL_DETACH + */ +const FIL_DETACH = UNKNOWN; +#endif +#ifdef SO_DONTTRUNC +/** + * @var int + * @cvalue SO_DONTTRUNC + */ +const SO_DONTTRUNC = UNKNOWN; +#endif +#ifdef SO_WANTMORE +/** + * @var int + * @cvalue SO_WANTMORE + */ +const SO_WANTMORE = UNKNOWN; +#endif +/** + * @var int + * @cvalue SOL_SOCKET + */ +const SOL_SOCKET = UNKNOWN; +/** + * @var int + * @cvalue SOMAXCONN + */ +const SOMAXCONN = UNKNOWN; +#ifdef SO_MARK +/** + * @var int + * @cvalue SO_MARK + */ +const SO_MARK = UNKNOWN; +#endif +#ifdef SO_RTABLE +/** + * @var int + * @cvalue SO_RTABLE + */ +const SO_RTABLE = UNKNOWN; +#endif +#ifdef SO_INCOMING_CPU +/** + * @var int + * @cvalue SO_INCOMING_CPU + */ +const SO_INCOMING_CPU = UNKNOWN; +#endif +#ifdef SO_MEMINFO +/** + * @var int + * @cvalue SO_MEMINFO + */ +const SO_MEMINFO = UNKNOWN; +#endif +#ifdef SO_BPF_EXTENSIONS +/** + * @var int + * @cvalue SO_BPF_EXTENSIONS + */ +const SO_BPF_EXTENSIONS = UNKNOWN; +#endif +#ifdef SKF_AD_OFF +/** + * @var int + * @cvalue SKF_AD_OFF + */ +const SKF_AD_OFF = UNKNOWN; +#endif +#ifdef SKF_AD_PROTOCOL +/** + * @var int + * @cvalue SKF_AD_PROTOCOL + */ +const SKF_AD_PROTOCOL = UNKNOWN; +#endif +#ifdef SKF_AD_PKTTYPE +/** + * @var int + * @cvalue SKF_AD_PKTTYPE + */ +const SKF_AD_PKTTYPE = UNKNOWN; +#endif +#ifdef SKF_AD_IFINDEX +/** + * @var int + * @cvalue SKF_AD_IFINDEX + */ +const SKF_AD_IFINDEX = UNKNOWN; +#endif +#ifdef SKF_AD_NLATTR +/** + * @var int + * @cvalue SKF_AD_NLATTR + */ +const SKF_AD_NLATTR = UNKNOWN; +#endif +#ifdef SKF_AD_NLATTR_NEST +/** + * @var int + * @cvalue SKF_AD_NLATTR_NEST + */ +const SKF_AD_NLATTR_NEST = UNKNOWN; +#endif +#ifdef SKF_AD_MARK +/** + * @var int + * @cvalue SKF_AD_MARK + */ +const SKF_AD_MARK = UNKNOWN; +#endif +#ifdef SKF_AD_QUEUE +/** + * @var int + * @cvalue SKF_AD_QUEUE + */ +const SKF_AD_QUEUE = UNKNOWN; +#endif +#ifdef SKF_AD_HATYPE +/** + * @var int + * @cvalue SKF_AD_HATYPE + */ +const SKF_AD_HATYPE = UNKNOWN; +#endif +#ifdef SKF_AD_RXHASH +/** + * @var int + * @cvalue SKF_AD_RXHASH + */ +const SKF_AD_RXHASH = UNKNOWN; +#endif +#ifdef SKF_AD_CPU +/** + * @var int + * @cvalue SKF_AD_CPU + */ +const SKF_AD_CPU = UNKNOWN; +#endif +#ifdef SKF_AD_ALU_XOR_X +/** + * @var int + * @cvalue SKF_AD_ALU_XOR_X + */ +const SKF_AD_ALU_XOR_X = UNKNOWN; +#endif +#ifdef SKF_AD_VLAN_TAG +/** + * @var int + * @cvalue SKF_AD_VLAN_TAG + */ +const SKF_AD_VLAN_TAG = UNKNOWN; +#endif +#ifdef SKF_AD_VLAN_TAG_PRESENT +/** + * @var int + * @cvalue SKF_AD_VLAN_TAG_PRESENT + */ +const SKF_AD_VLAN_TAG_PRESENT = UNKNOWN; +#endif +#ifdef SKF_AD_PAY_OFFSET +/** + * @var int + * @cvalue SKF_AD_PAY_OFFSET + */ +const SKF_AD_PAY_OFFSET = UNKNOWN; +#endif +#ifdef SKF_AD_RANDOM +/** + * @var int + * @cvalue SKF_AD_RANDOM + */ +const SKF_AD_RANDOM = UNKNOWN; +#endif +#ifdef SKF_AD_VLAN_TPID +/** + * @var int + * @cvalue SKF_AD_VLAN_TPID + */ +const SKF_AD_VLAN_TPID = UNKNOWN; +#endif +#ifdef SKF_AD_MAX +/** + * @var int + * @cvalue SKF_AD_MAX + */ +const SKF_AD_MAX = UNKNOWN; +#endif + +#ifdef TCP_CONGESTION +/** + * @var int + * @cvalue TCP_CONGESTION + */ +const TCP_CONGESTION = UNKNOWN; +#endif +#ifdef SO_ZEROCOPY +/** + * @var int + * @cvalue SO_ZEROCOPY + */ +const SO_ZEROCOPY = UNKNOWN; +#endif +#ifdef TCP_NODELAY +/** + * @var int + * @cvalue TCP_NODELAY + */ +const TCP_NODELAY = UNKNOWN; +#endif +#ifdef TCP_NOTSENT_LOWAT +/** + * @var int + * @cvalue TCP_NOTSENT_LOWAT + */ +const TCP_NOTSENT_LOWAT = UNKNOWN; +#endif +#ifdef TCP_DEFER_ACCEPT +/** + * @var int + * @cvalue TCP_DEFER_ACCEPT + */ +const TCP_DEFER_ACCEPT = UNKNOWN; +#endif +#ifdef TCP_KEEPALIVE +/** + * @var int + * @cvalue TCP_KEEPALIVE + */ +const TCP_KEEPALIVE = UNKNOWN; +#endif +#ifdef TCP_KEEPIDLE +/** + * @var int + * @cvalue TCP_KEEPIDLE + */ +const TCP_KEEPIDLE = UNKNOWN; +/** + * @var int + * @cvalue TCP_KEEPINTVL + */ +const TCP_KEEPINTVL = UNKNOWN; +/** + * @var int + * @cvalue TCP_KEEPCNT + */ +const TCP_KEEPCNT = UNKNOWN; +#endif +/** + * @var int + * @cvalue PHP_NORMAL_READ + */ +const PHP_NORMAL_READ = UNKNOWN; +/** + * @var int + * @cvalue PHP_BINARY_READ + */ +const PHP_BINARY_READ = UNKNOWN; + +/** + * @var int + * @cvalue PHP_MCAST_JOIN_GROUP + */ +const MCAST_JOIN_GROUP = UNKNOWN; +/** + * @var int + * @cvalue PHP_MCAST_LEAVE_GROUP + */ +const MCAST_LEAVE_GROUP = UNKNOWN; +#ifdef HAS_MCAST_EXT +/** + * @var int + * @cvalue PHP_MCAST_BLOCK_SOURCE + */ +const MCAST_BLOCK_SOURCE = UNKNOWN; +/** + * @var int + * @cvalue PHP_MCAST_UNBLOCK_SOURCE + */ +const MCAST_UNBLOCK_SOURCE = UNKNOWN; +/** + * @var int + * @cvalue PHP_MCAST_JOIN_SOURCE_GROUP + */ +const MCAST_JOIN_SOURCE_GROUP = UNKNOWN; +/** + * @var int + * @cvalue PHP_MCAST_LEAVE_SOURCE_GROUP + */ +const MCAST_LEAVE_SOURCE_GROUP = UNKNOWN; +#endif + +/** + * @var int + * @cvalue IP_MULTICAST_IF + */ +const IP_MULTICAST_IF = UNKNOWN; +/** + * @var int + * @cvalue IP_MULTICAST_TTL + */ +const IP_MULTICAST_TTL = UNKNOWN; +/** + * @var int + * @cvalue IP_MULTICAST_LOOP + */ +const IP_MULTICAST_LOOP = UNKNOWN; +#if HAVE_IPV6 +/** + * @var int + * @cvalue IPV6_MULTICAST_IF + */ +const IPV6_MULTICAST_IF = UNKNOWN; +/** + * @var int + * @cvalue IPV6_MULTICAST_HOPS + */ +const IPV6_MULTICAST_HOPS = UNKNOWN; +/** + * @var int + * @cvalue IPV6_MULTICAST_LOOP + */ +const IPV6_MULTICAST_LOOP = UNKNOWN; +#endif + +#ifdef IPV6_V6ONLY +/** + * @var int + * @cvalue IPV6_V6ONLY + */ +const IPV6_V6ONLY = UNKNOWN; +#endif + +#ifdef EPERM +/** + * Operation not permitted + * @var int + * @cvalue EPERM + */ +const SOCKET_EPERM = UNKNOWN; +#endif +#ifdef ENOENT +/** + * No such file or directory + * @var int + * @cvalue ENOENT + */ +const SOCKET_ENOENT = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EINTR +/** + * Interrupted system call + * @var int + * @cvalue PHP_SOCKET_EINTR + */ +const SOCKET_EINTR = UNKNOWN; +#endif +#ifdef EIO +/** + * I/O error + * @var int + * @cvalue EIO + */ +const SOCKET_EIO = UNKNOWN; +#endif +#ifdef ENXIO +/** + * No such device or address + * @var int + * @cvalue ENXIO + */ +const SOCKET_ENXIO = UNKNOWN; +#endif +#ifdef E2BIG +/** + * Arg list too long + * @var int + * @cvalue E2BIG + */ +const SOCKET_E2BIG = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EBADF +/** + * Bad file number + * @var int + * @cvalue PHP_SOCKET_EBADF + */ +const SOCKET_EBADF = UNKNOWN; +#endif +#ifdef EAGAIN +/** + * Try again + * @var int + * @cvalue EAGAIN + */ +const SOCKET_EAGAIN = UNKNOWN; +#endif +#ifdef ENOMEM +/** + * Out of memory + * @var int + * @cvalue ENOMEM + */ +const SOCKET_ENOMEM = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EACCES +/** + * Permission denied + * @var int + * @cvalue PHP_SOCKET_EACCES + */ +const SOCKET_EACCES = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EFAULT +/** + * Bad address + * @var int + * @cvalue PHP_SOCKET_EFAULT + */ +const SOCKET_EFAULT = UNKNOWN; +#endif +#ifdef ENOTBLK +/** + * Block device required + * @var int + * @cvalue ENOTBLK + */ +const SOCKET_ENOTBLK = UNKNOWN; +#endif +#ifdef EBUSY +/** + * Device or resource busy + * @var int + * @cvalue EBUSY + */ +const SOCKET_EBUSY = UNKNOWN; +#endif +#ifdef EEXIST +/** + * File exists + * @var int + * @cvalue EEXIST + */ +const SOCKET_EEXIST = UNKNOWN; +#endif +#ifdef EXDEV +/** + * Cross-device link + * @var int + * @cvalue EXDEV + */ +const SOCKET_EXDEV = UNKNOWN; +#endif +#ifdef ENODEV +/** + * No such device + * @var int + * @cvalue ENODEV + */ +const SOCKET_ENODEV = UNKNOWN; +#endif +#ifdef ENOTDIR +/** + * Not a directory + * @var int + * @cvalue ENOTDIR + */ +const SOCKET_ENOTDIR = UNKNOWN; +#endif +#ifdef EISDIR +/** + * Is a directory + * @var int + * @cvalue EISDIR + */ +const SOCKET_EISDIR = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EINVAL +/** + * Invalid argument + * @var int + * @cvalue PHP_SOCKET_EINVAL + */ +const SOCKET_EINVAL = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENFILE +/** + * File table overflow + * @var int + * @cvalue PHP_SOCKET_ENFILE + */ +const SOCKET_ENFILE = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EMFILE +/** + * Too many open files + * @var int + * @cvalue PHP_SOCKET_EMFILE + */ +const SOCKET_EMFILE = UNKNOWN; +#endif +#ifdef ENOTTY +/** + * Not a typewriter + * @var int + * @cvalue ENOTTY + */ +const SOCKET_ENOTTY = UNKNOWN; +#endif +#ifdef ENOSPC +/** + * No space left on device + * @var int + * @cvalue ENOSPC + */ +const SOCKET_ENOSPC = UNKNOWN; +#endif +#ifdef ESPIPE +/** + * Illegal seek + * @var int + * @cvalue ESPIPE + */ +const SOCKET_ESPIPE = UNKNOWN; +#endif +#ifdef EROFS +/** + * Read-only file system + * @var int + * @cvalue EROFS + */ +const SOCKET_EROFS = UNKNOWN; +#endif +#ifdef EMLINK +/** + * Too many links + * @var int + * @cvalue EMLINK + */ +const SOCKET_EMLINK = UNKNOWN; +#endif +#ifdef EPIPE +/** + * Broken pipe + * @var int + * @cvalue EPIPE + */ +const SOCKET_EPIPE = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENAMETOOLONG +/** + * File name too long + * @var int + * @cvalue PHP_SOCKET_ENAMETOOLONG + */ +const SOCKET_ENAMETOOLONG = UNKNOWN; +#endif +#ifdef ENOLCK +/** + * No record locks available + * @var int + * @cvalue ENOLCK + */ +const SOCKET_ENOLCK = UNKNOWN; +#endif +#ifdef ENOSYS +/** + * Function not implemented + * @var int + * @cvalue ENOSYS + */ +const SOCKET_ENOSYS = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENOTEMPTY +/** + * Directory not empty + * @var int + * @cvalue PHP_SOCKET_ENOTEMPTY + */ +const SOCKET_ENOTEMPTY = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ELOOP +/** + * Too many symbolic links encountered + * @var int + * @cvalue PHP_SOCKET_ELOOP + */ +const SOCKET_ELOOP = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EWOULDBLOCK +/** + * Operation would block + * @var int + * @cvalue PHP_SOCKET_EWOULDBLOCK + */ +const SOCKET_EWOULDBLOCK = UNKNOWN; +#endif +#ifdef ENOMSG +/** + * No message of desired type + * @var int + * @cvalue ENOMSG + */ +const SOCKET_ENOMSG = UNKNOWN; +#endif +#ifdef EIDRM +/** + * Identifier removed + * @var int + * @cvalue EIDRM + */ +const SOCKET_EIDRM = UNKNOWN; +#endif +#ifdef ECHRNG +/** + * Channel number out of range + * @var int + * @cvalue ECHRNG + */ +const SOCKET_ECHRNG = UNKNOWN; +#endif +#ifdef EL2NSYNC +/** + * Level 2 not synchronized + * @var int + * @cvalue EL2NSYNC + */ +const SOCKET_EL2NSYNC = UNKNOWN; +#endif +#ifdef EL3HLT +/** + * Level 3 halted + * @var int + * @cvalue EL3HLT + */ +const SOCKET_EL3HLT = UNKNOWN; +#endif +#ifdef EL3RST +/** + * Level 3 reset + * @var int + * @cvalue EL3RST + */ +const SOCKET_EL3RST = UNKNOWN; +#endif +#ifdef ELNRNG +/** + * Link number out of range + * @var int + * @cvalue ELNRNG + */ +const SOCKET_ELNRNG = UNKNOWN; +#endif +#ifdef EUNATCH +/** + * Protocol driver not attached + * @var int + * @cvalue EUNATCH + */ +const SOCKET_EUNATCH = UNKNOWN; +#endif +#ifdef ENOCSI +/** + * No CSI structure available + * @var int + * @cvalue ENOCSI + */ +const SOCKET_ENOCSI = UNKNOWN; +#endif +#ifdef EL2HLT +/** + * Level 2 halted + * @var int + * @cvalue EL2HLT + */ +const SOCKET_EL2HLT = UNKNOWN; +#endif +#ifdef EBADE +/** + * Invalid exchange + * @var int + * @cvalue EBADE + */ +const SOCKET_EBADE = UNKNOWN; +#endif +#ifdef EBADR +/** + * Invalid request descriptor + * @var int + * @cvalue EBADR + */ +const SOCKET_EBADR = UNKNOWN; +#endif +#ifdef EXFULL +/** + * Exchange full + * @var int + * @cvalue EXFULL + */ +const SOCKET_EXFULL = UNKNOWN; +#endif +#ifdef ENOANO +/** + * No anode + * @var int + * @cvalue ENOANO + */ +const SOCKET_ENOANO = UNKNOWN; +#endif +#ifdef EBADRQC +/** + * Invalid request code + * @var int + * @cvalue EBADRQC + */ +const SOCKET_EBADRQC = UNKNOWN; +#endif +#ifdef EBADSLT +/** + * Invalid slot + * @var int + * @cvalue EBADSLT + */ +const SOCKET_EBADSLT = UNKNOWN; +#endif +#ifdef ENOSTR +/** + * Device not a stream + * @var int + * @cvalue ENOSTR + */ +const SOCKET_ENOSTR = UNKNOWN; +#endif +#ifdef ENODATA +/** + * No data available + * @var int + * @cvalue ENODATA + */ +const SOCKET_ENODATA = UNKNOWN; +#endif +#ifdef ETIME +/** + * Timer expired + * @var int + * @cvalue ETIME + */ +const SOCKET_ETIME = UNKNOWN; +#endif +#ifdef ENOSR +/** + * Out of streams resources + * @var int + * @cvalue ENOSR + */ +const SOCKET_ENOSR = UNKNOWN; +#endif +#ifdef ENONET +/** + * Machine is not on the network + * @var int + * @cvalue ENONET + */ +const SOCKET_ENONET = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EREMOTE +/** + * Object is remote + * @var int + * @cvalue PHP_SOCKET_EREMOTE + */ +const SOCKET_EREMOTE = UNKNOWN; +#endif +#ifdef ENOLINK +/** + * Link has been severed + * @var int + * @cvalue ENOLINK + */ +const SOCKET_ENOLINK = UNKNOWN; +#endif +#ifdef EADV +/** + * Advertise error + * @var int + * @cvalue EADV + */ +const SOCKET_EADV = UNKNOWN; +#endif +#ifdef ESRMNT +/** + * Srmount error + * @var int + * @cvalue ESRMNT + */ +const SOCKET_ESRMNT = UNKNOWN; +#endif +#ifdef ECOMM +/** + * Communication error on send + * @var int + * @cvalue ECOMM + */ +const SOCKET_ECOMM = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EPROTO +/** + * Protocol error + * @var int + * @cvalue PHP_SOCKET_EPROTO + */ +const SOCKET_EPROTO = UNKNOWN; +#endif +#ifdef EMULTIHOP +/** + * Multihop attempted + * @var int + * @cvalue EMULTIHOP + */ +const SOCKET_EMULTIHOP = UNKNOWN; +#endif +#ifdef EBADMSG +/** + * Not a data message + * @var int + * @cvalue EBADMSG + */ +const SOCKET_EBADMSG = UNKNOWN; +#endif +#ifdef ENOTUNIQ +/** + * Name not unique on network + * @var int + * @cvalue ENOTUNIQ + */ +const SOCKET_ENOTUNIQ = UNKNOWN; +#endif +#ifdef EBADFD +/** + * File descriptor in bad state + * @var int + * @cvalue EBADFD + */ +const SOCKET_EBADFD = UNKNOWN; +#endif +#ifdef EREMCHG +/** + * Remote address changed + * @var int + * @cvalue EREMCHG + */ +const SOCKET_EREMCHG = UNKNOWN; +#endif +#ifdef ERESTART +/** + * Interrupted system call should be restarted + * @var int + * @cvalue ERESTART + */ +const SOCKET_ERESTART = UNKNOWN; +#endif +#ifdef ESTRPIPE +/** + * Streams pipe error + * @var int + * @cvalue ESTRPIPE + */ +const SOCKET_ESTRPIPE = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EUSERS +/** + * Too many users + * @var int + * @cvalue PHP_SOCKET_EUSERS + */ +const SOCKET_EUSERS = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENOTSOCK +/** + * Socket operation on non-socket + * @var int + * @cvalue PHP_SOCKET_ENOTSOCK + */ +const SOCKET_ENOTSOCK = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EDESTADDRREQ +/** + * Destination address required + * @var int + * @cvalue PHP_SOCKET_EDESTADDRREQ + */ +const SOCKET_EDESTADDRREQ = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EMSGSIZE +/** + * Message too long + * @var int + * @cvalue PHP_SOCKET_EMSGSIZE + */ +const SOCKET_EMSGSIZE = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EPROTOTYPE +/** + * Protocol wrong type for socket + * @var int + * @cvalue PHP_SOCKET_EPROTOTYPE + */ +const SOCKET_EPROTOTYPE = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENOPROTOOPT +/** + * Protocol not available + * @var int + * @cvalue PHP_SOCKET_ENOPROTOOPT + */ +const SOCKET_ENOPROTOOPT = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EPROTONOSUPPORT +/** + * Protocol not supported + * @var int + * @cvalue PHP_SOCKET_EPROTONOSUPPORT + */ +const SOCKET_EPROTONOSUPPORT = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ESOCKTNOSUPPORT +/** + * Socket type not supported + * @var int + * @cvalue PHP_SOCKET_ESOCKTNOSUPPORT + */ +const SOCKET_ESOCKTNOSUPPORT = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EOPNOTSUPP +/** + * Operation not supported on transport endpoint + * @var int + * @cvalue PHP_SOCKET_EOPNOTSUPP + */ +const SOCKET_EOPNOTSUPP = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EPFNOSUPPORT +/** + * Protocol family not supported + * @var int + * @cvalue PHP_SOCKET_EPFNOSUPPORT + */ +const SOCKET_EPFNOSUPPORT = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EAFNOSUPPORT +/** + * Address family not supported by protocol + * @var int + * @cvalue PHP_SOCKET_EAFNOSUPPORT + */ +const SOCKET_EAFNOSUPPORT = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EADDRINUSE +/** + * Address already in use + * @var int + * @cvalue PHP_SOCKET_EADDRINUSE + */ +const SOCKET_EADDRINUSE = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EADDRNOTAVAIL +/** + * Cannot assign requested address + * @var int + * @cvalue PHP_SOCKET_EADDRNOTAVAIL + */ +const SOCKET_EADDRNOTAVAIL = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENETDOWN +/** + * Network is down + * @var int + * @cvalue PHP_SOCKET_ENETDOWN + */ +const SOCKET_ENETDOWN = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENETUNREACH +/** + * Network is unreachable + * @var int + * @cvalue PHP_SOCKET_ENETUNREACH + */ +const SOCKET_ENETUNREACH = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENETRESET +/** + * Network dropped connection because of reset + * @var int + * @cvalue PHP_SOCKET_ENETRESET + */ +const SOCKET_ENETRESET = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ECONNABORTED +/** + * Software caused connection abort + * @var int + * @cvalue PHP_SOCKET_ECONNABORTED + */ +const SOCKET_ECONNABORTED = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ECONNRESET +/** + * Connection reset by peer + * @var int + * @cvalue PHP_SOCKET_ECONNRESET + */ +const SOCKET_ECONNRESET = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENOBUFS +/** + * No buffer space available + * @var int + * @cvalue PHP_SOCKET_ENOBUFS + */ +const SOCKET_ENOBUFS = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EISCONN +/** + * Transport endpoint is already connected + * @var int + * @cvalue PHP_SOCKET_EISCONN + */ +const SOCKET_EISCONN = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ENOTCONN +/** + * Transport endpoint is not connected + * @var int + * @cvalue PHP_SOCKET_ENOTCONN + */ +const SOCKET_ENOTCONN = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ESHUTDOWN +/** + * Cannot send after transport endpoint shutdown + * @var int + * @cvalue PHP_SOCKET_ESHUTDOWN + */ +const SOCKET_ESHUTDOWN = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ETOOMANYREFS +/** + * Too many references: cannot splice + * @var int + * @cvalue PHP_SOCKET_ETOOMANYREFS + */ +const SOCKET_ETOOMANYREFS = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ETIMEDOUT +/** + * Connection timed out + * @var int + * @cvalue PHP_SOCKET_ETIMEDOUT + */ +const SOCKET_ETIMEDOUT = UNKNOWN; +#endif +#ifdef PHP_SOCKET_ECONNREFUSED +/** + * Connection refused + * @var int + * @cvalue PHP_SOCKET_ECONNREFUSED + */ +const SOCKET_ECONNREFUSED = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EHOSTDOWN +/** + * Host is down + * @var int + * @cvalue PHP_SOCKET_EHOSTDOWN + */ +const SOCKET_EHOSTDOWN = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EHOSTUNREACH +/** + * No route to host + * @var int + * @cvalue PHP_SOCKET_EHOSTUNREACH + */ +const SOCKET_EHOSTUNREACH = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EALREADY +/** + * Operation already in progress + * @var int + * @cvalue PHP_SOCKET_EALREADY + */ +const SOCKET_EALREADY = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EINPROGRESS +/** + * Operation now in progress + * @var int + * @cvalue PHP_SOCKET_EINPROGRESS + */ +const SOCKET_EINPROGRESS = UNKNOWN; +#endif +#ifdef EISNAM +/** + * Is a named type file + * @var int + * @cvalue EISNAM + */ +const SOCKET_EISNAM = UNKNOWN; +#endif +#ifdef EREMOTEIO +/** + * Remote I/O error + * @var int + * @cvalue EREMOTEIO + */ +const SOCKET_EREMOTEIO = UNKNOWN; +#endif +#ifdef PHP_SOCKET_EDQUOT +/** + * Quota exceeded + * @var int + * @cvalue PHP_SOCKET_EDQUOT + */ +const SOCKET_EDQUOT = UNKNOWN; +#endif +#ifdef ENOMEDIUM +/** + * No medium found + * @var int + * @cvalue ENOMEDIUM + */ +const SOCKET_ENOMEDIUM = UNKNOWN; +#endif +#ifdef EMEDIUMTYPE +/** + * Wrong medium type + * @var int + * @cvalue EMEDIUMTYPE + */ +const SOCKET_EMEDIUMTYPE = UNKNOWN; +#endif + +#ifdef WIN32 +/** + * @var int + * @cvalue WSAESTALE + */ +const SOCKET_ESTALE = UNKNOWN; +/** + * @var int + * @cvalue WSAEDISCON + */ +const SOCKET_EDISCON = UNKNOWN; +/** + * @var int + * @cvalue WSASYSNOTREADY + */ +const SOCKET_SYSNOTREADY = UNKNOWN; +/** + * @var int + * @cvalue WSAVERNOTSUPPORTED + */ +const SOCKET_VERNOTSUPPORTED = UNKNOWN; +/** + * @var int + * @cvalue WSANOTINITIALISED + */ +const SOCKET_NOTINITIALISED = UNKNOWN; +/** + * @var int + * @cvalue WSAHOST_NOT_FOUND + */ +const SOCKET_HOST_NOT_FOUND = UNKNOWN; +/** + * @var int + * @cvalue WSATRY_AGAIN + */ +const SOCKET_TRY_AGAIN = UNKNOWN; +/** + * @var int + * @cvalue WSANO_RECOVERY + */ +const SOCKET_NO_RECOVERY = UNKNOWN; +/** + * @var int + * @cvalue WSANO_DATA + */ +const SOCKET_NO_DATA = UNKNOWN; +/** + * @var int + * @cvalue WSANO_ADDRESS + */ +const SOCKET_NO_ADDRESS = UNKNOWN; +#endif + +/** + * @var int + * @cvalue IPPROTO_IP + */ +const IPPROTO_IP = UNKNOWN; +#if HAVE_IPV6 +/** + * @var int + * @cvalue IPPROTO_IPV6 + */ +const IPPROTO_IPV6 = UNKNOWN; +#endif + +/** + * @var int + * @cvalue IPPROTO_TCP + */ +const SOL_TCP = UNKNOWN; +/** + * @var int + * @cvalue IPPROTO_UDP + */ +const SOL_UDP = UNKNOWN; + +#if HAVE_IPV6 +/** + * @var int + * @cvalue IPV6_UNICAST_HOPS + */ +const IPV6_UNICAST_HOPS = UNKNOWN; +#endif + +/** + * @var int + * @cvalue AI_PASSIVE + */ +const AI_PASSIVE = UNKNOWN; +/** + * @var int + * @cvalue AI_CANONNAME + */ +const AI_CANONNAME = UNKNOWN; +/** + * @var int + * @cvalue AI_NUMERICHOST + */ +const AI_NUMERICHOST = UNKNOWN; +#if HAVE_AI_V4MAPPED +/** + * @var int + * @cvalue AI_V4MAPPED + */ +const AI_V4MAPPED = UNKNOWN; +#endif +#if HAVE_AI_ALL +/** + * @var int + * @cvalue AI_ALL + */ +const AI_ALL = UNKNOWN; +#endif +/** + * @var int + * @cvalue AI_ADDRCONFIG + */ +const AI_ADDRCONFIG = UNKNOWN; +#if HAVE_AI_IDN +/** + * @var int + * @cvalue AI_IDN + */ +const AI_IDN = UNKNOWN; +/** + * @var int + * @cvalue AI_CANONIDN + */ +const AI_CANONIDN = UNKNOWN; +#endif +#ifdef AI_NUMERICSERV +/** + * @var int + * @cvalue AI_NUMERICSERV + */ +const AI_NUMERICSERV = UNKNOWN; +#endif +#ifdef SOL_LOCAL +/** + * @var int + * @cvalue SOL_LOCAL + */ +const SOL_LOCAL = UNKNOWN; +#endif + +#if (defined(IPV6_RECVPKTINFO) && HAVE_IPV6) +/** + * IPv6 ancillary data + * @var int + * @cvalue IPV6_RECVPKTINFO + */ +const IPV6_RECVPKTINFO = UNKNOWN; +/** + * @var int + * @cvalue IPV6_PKTINFO + */ +const IPV6_PKTINFO = UNKNOWN; +#endif +#if (defined(IPV6_RECVHOPLIMIT) && HAVE_IPV6) +/** + * @var int + * @cvalue IPV6_RECVHOPLIMIT + */ +const IPV6_RECVHOPLIMIT = UNKNOWN; +/** + * @var int + * @cvalue IPV6_HOPLIMIT + */ +const IPV6_HOPLIMIT = UNKNOWN; +#endif + +#if (defined(IPV6_RECVTCLASS) && HAVE_IPV6) +/** + * @var int + * @cvalue IPV6_RECVTCLASS + */ +const IPV6_RECVTCLASS = UNKNOWN; +/** + * @var int + * @cvalue IPV6_TCLASS + */ +const IPV6_TCLASS = UNKNOWN; +#endif + +#ifdef SCM_RIGHTS +/** + * @var int + * @cvalue SCM_RIGHTS + */ +const SCM_RIGHTS = UNKNOWN; +#endif +#ifdef SO_PASSCRED +#ifdef SCM_CREDENTIALS +/** + * @var int + * @cvalue SCM_CREDENTIALS + */ +const SCM_CREDENTIALS = UNKNOWN; +#else +/** + * @var int + * @cvalue SCM_CREDS + */ +const SCM_CREDS = UNKNOWN; +#endif +/** + * @var int + * @cvalue SO_PASSCRED + */ +const SO_PASSCRED = UNKNOWN; +#endif +#if defined(LOCAL_CREDS_PERSISTENT) +/** + * @var int + * @cvalue SCM_CREDS2 + */ +const SCM_CREDS2 = UNKNOWN; +/** + * @var int + * @cvalue LOCAL_CREDS_PERSISTENT + */ +const LOCAL_CREDS_PERSISTENT = UNKNOWN; +#endif +#if (!defined(LOCAL_CREDS_PERSISTENT) && defined(LOCAL_CREDS)) +/** + * @var int + * @cvalue SCM_CREDS + */ +const SCM_CREDS = UNKNOWN; +/** + * @var int + * @cvalue LOCAL_CREDS + */ +const LOCAL_CREDS = UNKNOWN; +#endif + /** * @strict-properties * @not-serializable diff --git a/ext/sockets/sockets_arginfo.h b/ext/sockets/sockets_arginfo.h index 41ce30ec65299..ff76685e2ae88 100644 --- a/ext/sockets/sockets_arginfo.h +++ b/ext/sockets/sockets_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: bc0f8cd2cab1e077231ed74a9be15a88f5a08e4b */ + * Stub hash: c4fe33bd6d665f80be942c9cc9c0ce954d719c0d */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_socket_select, 0, 4, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(1, read, IS_ARRAY, 1) @@ -322,6 +322,653 @@ static const zend_function_entry class_AddressInfo_methods[] = { ZEND_FE_END }; +static void register_sockets_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("AF_UNIX", AF_UNIX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("AF_INET", AF_INET, CONST_PERSISTENT); +#if HAVE_IPV6 + REGISTER_LONG_CONSTANT("AF_INET6", AF_INET6, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SOCK_STREAM", SOCK_STREAM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOCK_DGRAM", SOCK_DGRAM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOCK_RAW", SOCK_RAW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOCK_SEQPACKET", SOCK_SEQPACKET, CONST_PERSISTENT); +#if defined(SOCK_RDM) + REGISTER_LONG_CONSTANT("SOCK_RDM", SOCK_RDM, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("MSG_OOB", MSG_OOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_WAITALL", MSG_WAITALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_CTRUNC", MSG_CTRUNC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_TRUNC", MSG_TRUNC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_PEEK", MSG_PEEK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_DONTROUTE", MSG_DONTROUTE, CONST_PERSISTENT); +#if defined(MSG_EOR) + REGISTER_LONG_CONSTANT("MSG_EOR", MSG_EOR, CONST_PERSISTENT); +#endif +#if defined(MSG_EOF) + REGISTER_LONG_CONSTANT("MSG_EOF", MSG_EOF, CONST_PERSISTENT); +#endif +#if defined(MSG_CONFIRM) + REGISTER_LONG_CONSTANT("MSG_CONFIRM", MSG_CONFIRM, CONST_PERSISTENT); +#endif +#if defined(MSG_ERRQUEUE) + REGISTER_LONG_CONSTANT("MSG_ERRQUEUE", MSG_ERRQUEUE, CONST_PERSISTENT); +#endif +#if defined(MSG_NOSIGNAL) + REGISTER_LONG_CONSTANT("MSG_NOSIGNAL", MSG_NOSIGNAL, CONST_PERSISTENT); +#endif +#if defined(MSG_DONTWAIT) + REGISTER_LONG_CONSTANT("MSG_DONTWAIT", MSG_DONTWAIT, CONST_PERSISTENT); +#endif +#if defined(MSG_MORE) + REGISTER_LONG_CONSTANT("MSG_MORE", MSG_MORE, CONST_PERSISTENT); +#endif +#if defined(MSG_WAITFORONE) + REGISTER_LONG_CONSTANT("MSG_WAITFORONE", MSG_WAITFORONE, CONST_PERSISTENT); +#endif +#if defined(MSG_CMSG_CLOEXEC) + REGISTER_LONG_CONSTANT("MSG_CMSG_CLOEXEC", MSG_CMSG_CLOEXEC, CONST_PERSISTENT); +#endif +#if defined(MSG_ZEROCOPY) + REGISTER_LONG_CONSTANT("MSG_ZEROCOPY", MSG_ZEROCOPY, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SO_DEBUG", SO_DEBUG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_REUSEADDR", SO_REUSEADDR, CONST_PERSISTENT); +#if defined(SO_REUSEPORT) + REGISTER_LONG_CONSTANT("SO_REUSEPORT", SO_REUSEPORT, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SO_KEEPALIVE", SO_KEEPALIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_DONTROUTE", SO_DONTROUTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_LINGER", SO_LINGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_BROADCAST", SO_BROADCAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_OOBINLINE", SO_OOBINLINE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_SNDBUF", SO_SNDBUF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_RCVBUF", SO_RCVBUF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_SNDLOWAT", SO_SNDLOWAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_RCVLOWAT", SO_RCVLOWAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_SNDTIMEO", SO_SNDTIMEO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_RCVTIMEO", SO_RCVTIMEO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SO_TYPE", SO_TYPE, CONST_PERSISTENT); +#if defined(SO_FAMILY) + REGISTER_LONG_CONSTANT("SO_FAMILY", SO_FAMILY, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SO_ERROR", SO_ERROR, CONST_PERSISTENT); +#if defined(SO_BINDTODEVICE) + REGISTER_LONG_CONSTANT("SO_BINDTODEVICE", SO_BINDTODEVICE, CONST_PERSISTENT); +#endif +#if defined(SO_USER_COOKIE) + REGISTER_LONG_CONSTANT("SO_LABEL", SO_LABEL, CONST_PERSISTENT); +#endif +#if defined(SO_USER_COOKIE) + REGISTER_LONG_CONSTANT("SO_PEERLABEL", SO_PEERLABEL, CONST_PERSISTENT); +#endif +#if defined(SO_USER_COOKIE) + REGISTER_LONG_CONSTANT("SO_LISTENQLIMIT", SO_LISTENQLIMIT, CONST_PERSISTENT); +#endif +#if defined(SO_USER_COOKIE) + REGISTER_LONG_CONSTANT("SO_LISTENQLEN", SO_LISTENQLEN, CONST_PERSISTENT); +#endif +#if defined(SO_USER_COOKIE) + REGISTER_LONG_CONSTANT("SO_USER_COOKIE", SO_USER_COOKIE, CONST_PERSISTENT); +#endif +#if defined(SO_SETFIB) + REGISTER_LONG_CONSTANT("SO_SETFIB", SO_SETFIB, CONST_PERSISTENT); +#endif +#if defined(SO_ACCEPTFILTER) + REGISTER_LONG_CONSTANT("SO_ACCEPTFILTER", SO_ACCEPTFILTER, CONST_PERSISTENT); +#endif +#if defined(SOL_FILTER) + REGISTER_LONG_CONSTANT("SOL_FILTER", SOL_FILTER, CONST_PERSISTENT); +#endif +#if defined(SOL_FILTER) + REGISTER_LONG_CONSTANT("FIL_ATTACH", FIL_ATTACH, CONST_PERSISTENT); +#endif +#if defined(SOL_FILTER) + REGISTER_LONG_CONSTANT("FIL_DETACH", FIL_DETACH, CONST_PERSISTENT); +#endif +#if defined(SO_DONTTRUNC) + REGISTER_LONG_CONSTANT("SO_DONTTRUNC", SO_DONTTRUNC, CONST_PERSISTENT); +#endif +#if defined(SO_WANTMORE) + REGISTER_LONG_CONSTANT("SO_WANTMORE", SO_WANTMORE, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SOL_SOCKET", SOL_SOCKET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOMAXCONN", SOMAXCONN, CONST_PERSISTENT); +#if defined(SO_MARK) + REGISTER_LONG_CONSTANT("SO_MARK", SO_MARK, CONST_PERSISTENT); +#endif +#if defined(SO_RTABLE) + REGISTER_LONG_CONSTANT("SO_RTABLE", SO_RTABLE, CONST_PERSISTENT); +#endif +#if defined(SO_INCOMING_CPU) + REGISTER_LONG_CONSTANT("SO_INCOMING_CPU", SO_INCOMING_CPU, CONST_PERSISTENT); +#endif +#if defined(SO_MEMINFO) + REGISTER_LONG_CONSTANT("SO_MEMINFO", SO_MEMINFO, CONST_PERSISTENT); +#endif +#if defined(SO_BPF_EXTENSIONS) + REGISTER_LONG_CONSTANT("SO_BPF_EXTENSIONS", SO_BPF_EXTENSIONS, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_OFF) + REGISTER_LONG_CONSTANT("SKF_AD_OFF", SKF_AD_OFF, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_PROTOCOL) + REGISTER_LONG_CONSTANT("SKF_AD_PROTOCOL", SKF_AD_PROTOCOL, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_PKTTYPE) + REGISTER_LONG_CONSTANT("SKF_AD_PKTTYPE", SKF_AD_PKTTYPE, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_IFINDEX) + REGISTER_LONG_CONSTANT("SKF_AD_IFINDEX", SKF_AD_IFINDEX, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_NLATTR) + REGISTER_LONG_CONSTANT("SKF_AD_NLATTR", SKF_AD_NLATTR, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_NLATTR_NEST) + REGISTER_LONG_CONSTANT("SKF_AD_NLATTR_NEST", SKF_AD_NLATTR_NEST, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_MARK) + REGISTER_LONG_CONSTANT("SKF_AD_MARK", SKF_AD_MARK, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_QUEUE) + REGISTER_LONG_CONSTANT("SKF_AD_QUEUE", SKF_AD_QUEUE, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_HATYPE) + REGISTER_LONG_CONSTANT("SKF_AD_HATYPE", SKF_AD_HATYPE, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_RXHASH) + REGISTER_LONG_CONSTANT("SKF_AD_RXHASH", SKF_AD_RXHASH, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_CPU) + REGISTER_LONG_CONSTANT("SKF_AD_CPU", SKF_AD_CPU, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_ALU_XOR_X) + REGISTER_LONG_CONSTANT("SKF_AD_ALU_XOR_X", SKF_AD_ALU_XOR_X, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_VLAN_TAG) + REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TAG", SKF_AD_VLAN_TAG, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_VLAN_TAG_PRESENT) + REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TAG_PRESENT", SKF_AD_VLAN_TAG_PRESENT, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_PAY_OFFSET) + REGISTER_LONG_CONSTANT("SKF_AD_PAY_OFFSET", SKF_AD_PAY_OFFSET, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_RANDOM) + REGISTER_LONG_CONSTANT("SKF_AD_RANDOM", SKF_AD_RANDOM, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_VLAN_TPID) + REGISTER_LONG_CONSTANT("SKF_AD_VLAN_TPID", SKF_AD_VLAN_TPID, CONST_PERSISTENT); +#endif +#if defined(SKF_AD_MAX) + REGISTER_LONG_CONSTANT("SKF_AD_MAX", SKF_AD_MAX, CONST_PERSISTENT); +#endif +#if defined(TCP_CONGESTION) + REGISTER_LONG_CONSTANT("TCP_CONGESTION", TCP_CONGESTION, CONST_PERSISTENT); +#endif +#if defined(SO_ZEROCOPY) + REGISTER_LONG_CONSTANT("SO_ZEROCOPY", SO_ZEROCOPY, CONST_PERSISTENT); +#endif +#if defined(TCP_NODELAY) + REGISTER_LONG_CONSTANT("TCP_NODELAY", TCP_NODELAY, CONST_PERSISTENT); +#endif +#if defined(TCP_NOTSENT_LOWAT) + REGISTER_LONG_CONSTANT("TCP_NOTSENT_LOWAT", TCP_NOTSENT_LOWAT, CONST_PERSISTENT); +#endif +#if defined(TCP_DEFER_ACCEPT) + REGISTER_LONG_CONSTANT("TCP_DEFER_ACCEPT", TCP_DEFER_ACCEPT, CONST_PERSISTENT); +#endif +#if defined(TCP_KEEPALIVE) + REGISTER_LONG_CONSTANT("TCP_KEEPALIVE", TCP_KEEPALIVE, CONST_PERSISTENT); +#endif +#if defined(TCP_KEEPIDLE) + REGISTER_LONG_CONSTANT("TCP_KEEPIDLE", TCP_KEEPIDLE, CONST_PERSISTENT); +#endif +#if defined(TCP_KEEPIDLE) + REGISTER_LONG_CONSTANT("TCP_KEEPINTVL", TCP_KEEPINTVL, CONST_PERSISTENT); +#endif +#if defined(TCP_KEEPIDLE) + REGISTER_LONG_CONSTANT("TCP_KEEPCNT", TCP_KEEPCNT, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("PHP_NORMAL_READ", PHP_NORMAL_READ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_BINARY_READ", PHP_BINARY_READ, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MCAST_JOIN_GROUP", PHP_MCAST_JOIN_GROUP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MCAST_LEAVE_GROUP", PHP_MCAST_LEAVE_GROUP, CONST_PERSISTENT); +#if defined(HAS_MCAST_EXT) + REGISTER_LONG_CONSTANT("MCAST_BLOCK_SOURCE", PHP_MCAST_BLOCK_SOURCE, CONST_PERSISTENT); +#endif +#if defined(HAS_MCAST_EXT) + REGISTER_LONG_CONSTANT("MCAST_UNBLOCK_SOURCE", PHP_MCAST_UNBLOCK_SOURCE, CONST_PERSISTENT); +#endif +#if defined(HAS_MCAST_EXT) + REGISTER_LONG_CONSTANT("MCAST_JOIN_SOURCE_GROUP", PHP_MCAST_JOIN_SOURCE_GROUP, CONST_PERSISTENT); +#endif +#if defined(HAS_MCAST_EXT) + REGISTER_LONG_CONSTANT("MCAST_LEAVE_SOURCE_GROUP", PHP_MCAST_LEAVE_SOURCE_GROUP, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IP_MULTICAST_IF", IP_MULTICAST_IF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IP_MULTICAST_TTL", IP_MULTICAST_TTL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IP_MULTICAST_LOOP", IP_MULTICAST_LOOP, CONST_PERSISTENT); +#if HAVE_IPV6 + REGISTER_LONG_CONSTANT("IPV6_MULTICAST_IF", IPV6_MULTICAST_IF, CONST_PERSISTENT); +#endif +#if HAVE_IPV6 + REGISTER_LONG_CONSTANT("IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS, CONST_PERSISTENT); +#endif +#if HAVE_IPV6 + REGISTER_LONG_CONSTANT("IPV6_MULTICAST_LOOP", IPV6_MULTICAST_LOOP, CONST_PERSISTENT); +#endif +#if defined(IPV6_V6ONLY) + REGISTER_LONG_CONSTANT("IPV6_V6ONLY", IPV6_V6ONLY, CONST_PERSISTENT); +#endif +#if defined(EPERM) + REGISTER_LONG_CONSTANT("SOCKET_EPERM", EPERM, CONST_PERSISTENT); +#endif +#if defined(ENOENT) + REGISTER_LONG_CONSTANT("SOCKET_ENOENT", ENOENT, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EINTR) + REGISTER_LONG_CONSTANT("SOCKET_EINTR", PHP_SOCKET_EINTR, CONST_PERSISTENT); +#endif +#if defined(EIO) + REGISTER_LONG_CONSTANT("SOCKET_EIO", EIO, CONST_PERSISTENT); +#endif +#if defined(ENXIO) + REGISTER_LONG_CONSTANT("SOCKET_ENXIO", ENXIO, CONST_PERSISTENT); +#endif +#if defined(E2BIG) + REGISTER_LONG_CONSTANT("SOCKET_E2BIG", E2BIG, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EBADF) + REGISTER_LONG_CONSTANT("SOCKET_EBADF", PHP_SOCKET_EBADF, CONST_PERSISTENT); +#endif +#if defined(EAGAIN) + REGISTER_LONG_CONSTANT("SOCKET_EAGAIN", EAGAIN, CONST_PERSISTENT); +#endif +#if defined(ENOMEM) + REGISTER_LONG_CONSTANT("SOCKET_ENOMEM", ENOMEM, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EACCES) + REGISTER_LONG_CONSTANT("SOCKET_EACCES", PHP_SOCKET_EACCES, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EFAULT) + REGISTER_LONG_CONSTANT("SOCKET_EFAULT", PHP_SOCKET_EFAULT, CONST_PERSISTENT); +#endif +#if defined(ENOTBLK) + REGISTER_LONG_CONSTANT("SOCKET_ENOTBLK", ENOTBLK, CONST_PERSISTENT); +#endif +#if defined(EBUSY) + REGISTER_LONG_CONSTANT("SOCKET_EBUSY", EBUSY, CONST_PERSISTENT); +#endif +#if defined(EEXIST) + REGISTER_LONG_CONSTANT("SOCKET_EEXIST", EEXIST, CONST_PERSISTENT); +#endif +#if defined(EXDEV) + REGISTER_LONG_CONSTANT("SOCKET_EXDEV", EXDEV, CONST_PERSISTENT); +#endif +#if defined(ENODEV) + REGISTER_LONG_CONSTANT("SOCKET_ENODEV", ENODEV, CONST_PERSISTENT); +#endif +#if defined(ENOTDIR) + REGISTER_LONG_CONSTANT("SOCKET_ENOTDIR", ENOTDIR, CONST_PERSISTENT); +#endif +#if defined(EISDIR) + REGISTER_LONG_CONSTANT("SOCKET_EISDIR", EISDIR, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EINVAL) + REGISTER_LONG_CONSTANT("SOCKET_EINVAL", PHP_SOCKET_EINVAL, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENFILE) + REGISTER_LONG_CONSTANT("SOCKET_ENFILE", PHP_SOCKET_ENFILE, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EMFILE) + REGISTER_LONG_CONSTANT("SOCKET_EMFILE", PHP_SOCKET_EMFILE, CONST_PERSISTENT); +#endif +#if defined(ENOTTY) + REGISTER_LONG_CONSTANT("SOCKET_ENOTTY", ENOTTY, CONST_PERSISTENT); +#endif +#if defined(ENOSPC) + REGISTER_LONG_CONSTANT("SOCKET_ENOSPC", ENOSPC, CONST_PERSISTENT); +#endif +#if defined(ESPIPE) + REGISTER_LONG_CONSTANT("SOCKET_ESPIPE", ESPIPE, CONST_PERSISTENT); +#endif +#if defined(EROFS) + REGISTER_LONG_CONSTANT("SOCKET_EROFS", EROFS, CONST_PERSISTENT); +#endif +#if defined(EMLINK) + REGISTER_LONG_CONSTANT("SOCKET_EMLINK", EMLINK, CONST_PERSISTENT); +#endif +#if defined(EPIPE) + REGISTER_LONG_CONSTANT("SOCKET_EPIPE", EPIPE, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENAMETOOLONG) + REGISTER_LONG_CONSTANT("SOCKET_ENAMETOOLONG", PHP_SOCKET_ENAMETOOLONG, CONST_PERSISTENT); +#endif +#if defined(ENOLCK) + REGISTER_LONG_CONSTANT("SOCKET_ENOLCK", ENOLCK, CONST_PERSISTENT); +#endif +#if defined(ENOSYS) + REGISTER_LONG_CONSTANT("SOCKET_ENOSYS", ENOSYS, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENOTEMPTY) + REGISTER_LONG_CONSTANT("SOCKET_ENOTEMPTY", PHP_SOCKET_ENOTEMPTY, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ELOOP) + REGISTER_LONG_CONSTANT("SOCKET_ELOOP", PHP_SOCKET_ELOOP, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EWOULDBLOCK) + REGISTER_LONG_CONSTANT("SOCKET_EWOULDBLOCK", PHP_SOCKET_EWOULDBLOCK, CONST_PERSISTENT); +#endif +#if defined(ENOMSG) + REGISTER_LONG_CONSTANT("SOCKET_ENOMSG", ENOMSG, CONST_PERSISTENT); +#endif +#if defined(EIDRM) + REGISTER_LONG_CONSTANT("SOCKET_EIDRM", EIDRM, CONST_PERSISTENT); +#endif +#if defined(ECHRNG) + REGISTER_LONG_CONSTANT("SOCKET_ECHRNG", ECHRNG, CONST_PERSISTENT); +#endif +#if defined(EL2NSYNC) + REGISTER_LONG_CONSTANT("SOCKET_EL2NSYNC", EL2NSYNC, CONST_PERSISTENT); +#endif +#if defined(EL3HLT) + REGISTER_LONG_CONSTANT("SOCKET_EL3HLT", EL3HLT, CONST_PERSISTENT); +#endif +#if defined(EL3RST) + REGISTER_LONG_CONSTANT("SOCKET_EL3RST", EL3RST, CONST_PERSISTENT); +#endif +#if defined(ELNRNG) + REGISTER_LONG_CONSTANT("SOCKET_ELNRNG", ELNRNG, CONST_PERSISTENT); +#endif +#if defined(EUNATCH) + REGISTER_LONG_CONSTANT("SOCKET_EUNATCH", EUNATCH, CONST_PERSISTENT); +#endif +#if defined(ENOCSI) + REGISTER_LONG_CONSTANT("SOCKET_ENOCSI", ENOCSI, CONST_PERSISTENT); +#endif +#if defined(EL2HLT) + REGISTER_LONG_CONSTANT("SOCKET_EL2HLT", EL2HLT, CONST_PERSISTENT); +#endif +#if defined(EBADE) + REGISTER_LONG_CONSTANT("SOCKET_EBADE", EBADE, CONST_PERSISTENT); +#endif +#if defined(EBADR) + REGISTER_LONG_CONSTANT("SOCKET_EBADR", EBADR, CONST_PERSISTENT); +#endif +#if defined(EXFULL) + REGISTER_LONG_CONSTANT("SOCKET_EXFULL", EXFULL, CONST_PERSISTENT); +#endif +#if defined(ENOANO) + REGISTER_LONG_CONSTANT("SOCKET_ENOANO", ENOANO, CONST_PERSISTENT); +#endif +#if defined(EBADRQC) + REGISTER_LONG_CONSTANT("SOCKET_EBADRQC", EBADRQC, CONST_PERSISTENT); +#endif +#if defined(EBADSLT) + REGISTER_LONG_CONSTANT("SOCKET_EBADSLT", EBADSLT, CONST_PERSISTENT); +#endif +#if defined(ENOSTR) + REGISTER_LONG_CONSTANT("SOCKET_ENOSTR", ENOSTR, CONST_PERSISTENT); +#endif +#if defined(ENODATA) + REGISTER_LONG_CONSTANT("SOCKET_ENODATA", ENODATA, CONST_PERSISTENT); +#endif +#if defined(ETIME) + REGISTER_LONG_CONSTANT("SOCKET_ETIME", ETIME, CONST_PERSISTENT); +#endif +#if defined(ENOSR) + REGISTER_LONG_CONSTANT("SOCKET_ENOSR", ENOSR, CONST_PERSISTENT); +#endif +#if defined(ENONET) + REGISTER_LONG_CONSTANT("SOCKET_ENONET", ENONET, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EREMOTE) + REGISTER_LONG_CONSTANT("SOCKET_EREMOTE", PHP_SOCKET_EREMOTE, CONST_PERSISTENT); +#endif +#if defined(ENOLINK) + REGISTER_LONG_CONSTANT("SOCKET_ENOLINK", ENOLINK, CONST_PERSISTENT); +#endif +#if defined(EADV) + REGISTER_LONG_CONSTANT("SOCKET_EADV", EADV, CONST_PERSISTENT); +#endif +#if defined(ESRMNT) + REGISTER_LONG_CONSTANT("SOCKET_ESRMNT", ESRMNT, CONST_PERSISTENT); +#endif +#if defined(ECOMM) + REGISTER_LONG_CONSTANT("SOCKET_ECOMM", ECOMM, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EPROTO) + REGISTER_LONG_CONSTANT("SOCKET_EPROTO", PHP_SOCKET_EPROTO, CONST_PERSISTENT); +#endif +#if defined(EMULTIHOP) + REGISTER_LONG_CONSTANT("SOCKET_EMULTIHOP", EMULTIHOP, CONST_PERSISTENT); +#endif +#if defined(EBADMSG) + REGISTER_LONG_CONSTANT("SOCKET_EBADMSG", EBADMSG, CONST_PERSISTENT); +#endif +#if defined(ENOTUNIQ) + REGISTER_LONG_CONSTANT("SOCKET_ENOTUNIQ", ENOTUNIQ, CONST_PERSISTENT); +#endif +#if defined(EBADFD) + REGISTER_LONG_CONSTANT("SOCKET_EBADFD", EBADFD, CONST_PERSISTENT); +#endif +#if defined(EREMCHG) + REGISTER_LONG_CONSTANT("SOCKET_EREMCHG", EREMCHG, CONST_PERSISTENT); +#endif +#if defined(ERESTART) + REGISTER_LONG_CONSTANT("SOCKET_ERESTART", ERESTART, CONST_PERSISTENT); +#endif +#if defined(ESTRPIPE) + REGISTER_LONG_CONSTANT("SOCKET_ESTRPIPE", ESTRPIPE, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EUSERS) + REGISTER_LONG_CONSTANT("SOCKET_EUSERS", PHP_SOCKET_EUSERS, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENOTSOCK) + REGISTER_LONG_CONSTANT("SOCKET_ENOTSOCK", PHP_SOCKET_ENOTSOCK, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EDESTADDRREQ) + REGISTER_LONG_CONSTANT("SOCKET_EDESTADDRREQ", PHP_SOCKET_EDESTADDRREQ, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EMSGSIZE) + REGISTER_LONG_CONSTANT("SOCKET_EMSGSIZE", PHP_SOCKET_EMSGSIZE, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EPROTOTYPE) + REGISTER_LONG_CONSTANT("SOCKET_EPROTOTYPE", PHP_SOCKET_EPROTOTYPE, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENOPROTOOPT) + REGISTER_LONG_CONSTANT("SOCKET_ENOPROTOOPT", PHP_SOCKET_ENOPROTOOPT, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EPROTONOSUPPORT) + REGISTER_LONG_CONSTANT("SOCKET_EPROTONOSUPPORT", PHP_SOCKET_EPROTONOSUPPORT, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ESOCKTNOSUPPORT) + REGISTER_LONG_CONSTANT("SOCKET_ESOCKTNOSUPPORT", PHP_SOCKET_ESOCKTNOSUPPORT, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EOPNOTSUPP) + REGISTER_LONG_CONSTANT("SOCKET_EOPNOTSUPP", PHP_SOCKET_EOPNOTSUPP, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EPFNOSUPPORT) + REGISTER_LONG_CONSTANT("SOCKET_EPFNOSUPPORT", PHP_SOCKET_EPFNOSUPPORT, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EAFNOSUPPORT) + REGISTER_LONG_CONSTANT("SOCKET_EAFNOSUPPORT", PHP_SOCKET_EAFNOSUPPORT, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EADDRINUSE) + REGISTER_LONG_CONSTANT("SOCKET_EADDRINUSE", PHP_SOCKET_EADDRINUSE, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EADDRNOTAVAIL) + REGISTER_LONG_CONSTANT("SOCKET_EADDRNOTAVAIL", PHP_SOCKET_EADDRNOTAVAIL, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENETDOWN) + REGISTER_LONG_CONSTANT("SOCKET_ENETDOWN", PHP_SOCKET_ENETDOWN, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENETUNREACH) + REGISTER_LONG_CONSTANT("SOCKET_ENETUNREACH", PHP_SOCKET_ENETUNREACH, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENETRESET) + REGISTER_LONG_CONSTANT("SOCKET_ENETRESET", PHP_SOCKET_ENETRESET, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ECONNABORTED) + REGISTER_LONG_CONSTANT("SOCKET_ECONNABORTED", PHP_SOCKET_ECONNABORTED, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ECONNRESET) + REGISTER_LONG_CONSTANT("SOCKET_ECONNRESET", PHP_SOCKET_ECONNRESET, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENOBUFS) + REGISTER_LONG_CONSTANT("SOCKET_ENOBUFS", PHP_SOCKET_ENOBUFS, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EISCONN) + REGISTER_LONG_CONSTANT("SOCKET_EISCONN", PHP_SOCKET_EISCONN, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ENOTCONN) + REGISTER_LONG_CONSTANT("SOCKET_ENOTCONN", PHP_SOCKET_ENOTCONN, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ESHUTDOWN) + REGISTER_LONG_CONSTANT("SOCKET_ESHUTDOWN", PHP_SOCKET_ESHUTDOWN, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ETOOMANYREFS) + REGISTER_LONG_CONSTANT("SOCKET_ETOOMANYREFS", PHP_SOCKET_ETOOMANYREFS, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ETIMEDOUT) + REGISTER_LONG_CONSTANT("SOCKET_ETIMEDOUT", PHP_SOCKET_ETIMEDOUT, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_ECONNREFUSED) + REGISTER_LONG_CONSTANT("SOCKET_ECONNREFUSED", PHP_SOCKET_ECONNREFUSED, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EHOSTDOWN) + REGISTER_LONG_CONSTANT("SOCKET_EHOSTDOWN", PHP_SOCKET_EHOSTDOWN, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EHOSTUNREACH) + REGISTER_LONG_CONSTANT("SOCKET_EHOSTUNREACH", PHP_SOCKET_EHOSTUNREACH, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EALREADY) + REGISTER_LONG_CONSTANT("SOCKET_EALREADY", PHP_SOCKET_EALREADY, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EINPROGRESS) + REGISTER_LONG_CONSTANT("SOCKET_EINPROGRESS", PHP_SOCKET_EINPROGRESS, CONST_PERSISTENT); +#endif +#if defined(EISNAM) + REGISTER_LONG_CONSTANT("SOCKET_EISNAM", EISNAM, CONST_PERSISTENT); +#endif +#if defined(EREMOTEIO) + REGISTER_LONG_CONSTANT("SOCKET_EREMOTEIO", EREMOTEIO, CONST_PERSISTENT); +#endif +#if defined(PHP_SOCKET_EDQUOT) + REGISTER_LONG_CONSTANT("SOCKET_EDQUOT", PHP_SOCKET_EDQUOT, CONST_PERSISTENT); +#endif +#if defined(ENOMEDIUM) + REGISTER_LONG_CONSTANT("SOCKET_ENOMEDIUM", ENOMEDIUM, CONST_PERSISTENT); +#endif +#if defined(EMEDIUMTYPE) + REGISTER_LONG_CONSTANT("SOCKET_EMEDIUMTYPE", EMEDIUMTYPE, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_ESTALE", WSAESTALE, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_EDISCON", WSAEDISCON, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_SYSNOTREADY", WSASYSNOTREADY, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_VERNOTSUPPORTED", WSAVERNOTSUPPORTED, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_NOTINITIALISED", WSANOTINITIALISED, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_HOST_NOT_FOUND", WSAHOST_NOT_FOUND, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_TRY_AGAIN", WSATRY_AGAIN, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_NO_RECOVERY", WSANO_RECOVERY, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_NO_DATA", WSANO_DATA, CONST_PERSISTENT); +#endif +#if defined(WIN32) + REGISTER_LONG_CONSTANT("SOCKET_NO_ADDRESS", WSANO_ADDRESS, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IPPROTO_IP", IPPROTO_IP, CONST_PERSISTENT); +#if HAVE_IPV6 + REGISTER_LONG_CONSTANT("IPPROTO_IPV6", IPPROTO_IPV6, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SOL_TCP", IPPROTO_TCP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SOL_UDP", IPPROTO_UDP, CONST_PERSISTENT); +#if HAVE_IPV6 + REGISTER_LONG_CONSTANT("IPV6_UNICAST_HOPS", IPV6_UNICAST_HOPS, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("AI_PASSIVE", AI_PASSIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("AI_CANONNAME", AI_CANONNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("AI_NUMERICHOST", AI_NUMERICHOST, CONST_PERSISTENT); +#if HAVE_AI_V4MAPPED + REGISTER_LONG_CONSTANT("AI_V4MAPPED", AI_V4MAPPED, CONST_PERSISTENT); +#endif +#if HAVE_AI_ALL + REGISTER_LONG_CONSTANT("AI_ALL", AI_ALL, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("AI_ADDRCONFIG", AI_ADDRCONFIG, CONST_PERSISTENT); +#if HAVE_AI_IDN + REGISTER_LONG_CONSTANT("AI_IDN", AI_IDN, CONST_PERSISTENT); +#endif +#if HAVE_AI_IDN + REGISTER_LONG_CONSTANT("AI_CANONIDN", AI_CANONIDN, CONST_PERSISTENT); +#endif +#if defined(AI_NUMERICSERV) + REGISTER_LONG_CONSTANT("AI_NUMERICSERV", AI_NUMERICSERV, CONST_PERSISTENT); +#endif +#if defined(SOL_LOCAL) + REGISTER_LONG_CONSTANT("SOL_LOCAL", SOL_LOCAL, CONST_PERSISTENT); +#endif +#if (defined(IPV6_RECVPKTINFO) && HAVE_IPV6) + REGISTER_LONG_CONSTANT("IPV6_RECVPKTINFO", IPV6_RECVPKTINFO, CONST_PERSISTENT); +#endif +#if (defined(IPV6_RECVPKTINFO) && HAVE_IPV6) + REGISTER_LONG_CONSTANT("IPV6_PKTINFO", IPV6_PKTINFO, CONST_PERSISTENT); +#endif +#if (defined(IPV6_RECVHOPLIMIT) && HAVE_IPV6) + REGISTER_LONG_CONSTANT("IPV6_RECVHOPLIMIT", IPV6_RECVHOPLIMIT, CONST_PERSISTENT); +#endif +#if (defined(IPV6_RECVHOPLIMIT) && HAVE_IPV6) + REGISTER_LONG_CONSTANT("IPV6_HOPLIMIT", IPV6_HOPLIMIT, CONST_PERSISTENT); +#endif +#if (defined(IPV6_RECVTCLASS) && HAVE_IPV6) + REGISTER_LONG_CONSTANT("IPV6_RECVTCLASS", IPV6_RECVTCLASS, CONST_PERSISTENT); +#endif +#if (defined(IPV6_RECVTCLASS) && HAVE_IPV6) + REGISTER_LONG_CONSTANT("IPV6_TCLASS", IPV6_TCLASS, CONST_PERSISTENT); +#endif +#if defined(SCM_RIGHTS) + REGISTER_LONG_CONSTANT("SCM_RIGHTS", SCM_RIGHTS, CONST_PERSISTENT); +#endif +#if defined(SO_PASSCRED) && defined(SCM_CREDENTIALS) + REGISTER_LONG_CONSTANT("SCM_CREDENTIALS", SCM_CREDENTIALS, CONST_PERSISTENT); +#endif +#if defined(SO_PASSCRED) && !(defined(SCM_CREDENTIALS)) + REGISTER_LONG_CONSTANT("SCM_CREDS", SCM_CREDS, CONST_PERSISTENT); +#endif +#if defined(SO_PASSCRED) + REGISTER_LONG_CONSTANT("SO_PASSCRED", SO_PASSCRED, CONST_PERSISTENT); +#endif +#if defined(LOCAL_CREDS_PERSISTENT) + REGISTER_LONG_CONSTANT("SCM_CREDS2", SCM_CREDS2, CONST_PERSISTENT); +#endif +#if defined(LOCAL_CREDS_PERSISTENT) + REGISTER_LONG_CONSTANT("LOCAL_CREDS_PERSISTENT", LOCAL_CREDS_PERSISTENT, CONST_PERSISTENT); +#endif +#if (!defined(LOCAL_CREDS_PERSISTENT) && defined(LOCAL_CREDS)) + REGISTER_LONG_CONSTANT("SCM_CREDS", SCM_CREDS, CONST_PERSISTENT); +#endif +#if (!defined(LOCAL_CREDS_PERSISTENT) && defined(LOCAL_CREDS)) + REGISTER_LONG_CONSTANT("LOCAL_CREDS", LOCAL_CREDS, CONST_PERSISTENT); +#endif +} + static zend_class_entry *register_class_Socket(void) { zend_class_entry ce, *class_entry; diff --git a/ext/sockets/unix_socket_constants.h b/ext/sockets/unix_socket_constants.h deleted file mode 100644 index 27b51ae0c3268..0000000000000 --- a/ext/sockets/unix_socket_constants.h +++ /dev/null @@ -1,422 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | 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. | - +----------------------------------------------------------------------+ - | Author: Jason Greene | - +----------------------------------------------------------------------+ -*/ - -/* This file is to be included by sockets.c */ - -#ifdef EPERM - /* Operation not permitted */ - REGISTER_LONG_CONSTANT("SOCKET_EPERM", EPERM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOENT - /* No such file or directory */ - REGISTER_LONG_CONSTANT("SOCKET_ENOENT", ENOENT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EINTR - /* Interrupted system call */ - REGISTER_LONG_CONSTANT("SOCKET_EINTR", EINTR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EIO - /* I/O error */ - REGISTER_LONG_CONSTANT("SOCKET_EIO", EIO, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENXIO - /* No such device or address */ - REGISTER_LONG_CONSTANT("SOCKET_ENXIO", ENXIO, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef E2BIG - /* Arg list too long */ - REGISTER_LONG_CONSTANT("SOCKET_E2BIG", E2BIG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBADF - /* Bad file number */ - REGISTER_LONG_CONSTANT("SOCKET_EBADF", EBADF, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EAGAIN - /* Try again */ - REGISTER_LONG_CONSTANT("SOCKET_EAGAIN", EAGAIN, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOMEM - /* Out of memory */ - REGISTER_LONG_CONSTANT("SOCKET_ENOMEM", ENOMEM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EACCES - /* Permission denied */ - REGISTER_LONG_CONSTANT("SOCKET_EACCES", EACCES, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EFAULT - /* Bad address */ - REGISTER_LONG_CONSTANT("SOCKET_EFAULT", EFAULT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOTBLK - /* Block device required */ - REGISTER_LONG_CONSTANT("SOCKET_ENOTBLK", ENOTBLK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBUSY - /* Device or resource busy */ - REGISTER_LONG_CONSTANT("SOCKET_EBUSY", EBUSY, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EEXIST - /* File exists */ - REGISTER_LONG_CONSTANT("SOCKET_EEXIST", EEXIST, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EXDEV - /* Cross-device link */ - REGISTER_LONG_CONSTANT("SOCKET_EXDEV", EXDEV, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENODEV - /* No such device */ - REGISTER_LONG_CONSTANT("SOCKET_ENODEV", ENODEV, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOTDIR - /* Not a directory */ - REGISTER_LONG_CONSTANT("SOCKET_ENOTDIR", ENOTDIR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EISDIR - /* Is a directory */ - REGISTER_LONG_CONSTANT("SOCKET_EISDIR", EISDIR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EINVAL - /* Invalid argument */ - REGISTER_LONG_CONSTANT("SOCKET_EINVAL", EINVAL, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENFILE - /* File table overflow */ - REGISTER_LONG_CONSTANT("SOCKET_ENFILE", ENFILE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EMFILE - /* Too many open files */ - REGISTER_LONG_CONSTANT("SOCKET_EMFILE", EMFILE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOTTY - /* Not a typewriter */ - REGISTER_LONG_CONSTANT("SOCKET_ENOTTY", ENOTTY, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOSPC - /* No space left on device */ - REGISTER_LONG_CONSTANT("SOCKET_ENOSPC", ENOSPC, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ESPIPE - /* Illegal seek */ - REGISTER_LONG_CONSTANT("SOCKET_ESPIPE", ESPIPE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EROFS - /* Read-only file system */ - REGISTER_LONG_CONSTANT("SOCKET_EROFS", EROFS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EMLINK - /* Too many links */ - REGISTER_LONG_CONSTANT("SOCKET_EMLINK", EMLINK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EPIPE - /* Broken pipe */ - REGISTER_LONG_CONSTANT("SOCKET_EPIPE", EPIPE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENAMETOOLONG - /* File name too long */ - REGISTER_LONG_CONSTANT("SOCKET_ENAMETOOLONG", ENAMETOOLONG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOLCK - /* No record locks available */ - REGISTER_LONG_CONSTANT("SOCKET_ENOLCK", ENOLCK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOSYS - /* Function not implemented */ - REGISTER_LONG_CONSTANT("SOCKET_ENOSYS", ENOSYS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOTEMPTY - /* Directory not empty */ - REGISTER_LONG_CONSTANT("SOCKET_ENOTEMPTY", ENOTEMPTY, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ELOOP - /* Too many symbolic links encountered */ - REGISTER_LONG_CONSTANT("SOCKET_ELOOP", ELOOP, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EWOULDBLOCK - /* Operation would block */ - REGISTER_LONG_CONSTANT("SOCKET_EWOULDBLOCK", EWOULDBLOCK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOMSG - /* No message of desired type */ - REGISTER_LONG_CONSTANT("SOCKET_ENOMSG", ENOMSG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EIDRM - /* Identifier removed */ - REGISTER_LONG_CONSTANT("SOCKET_EIDRM", EIDRM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ECHRNG - /* Channel number out of range */ - REGISTER_LONG_CONSTANT("SOCKET_ECHRNG", ECHRNG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EL2NSYNC - /* Level 2 not synchronized */ - REGISTER_LONG_CONSTANT("SOCKET_EL2NSYNC", EL2NSYNC, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EL3HLT - /* Level 3 halted */ - REGISTER_LONG_CONSTANT("SOCKET_EL3HLT", EL3HLT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EL3RST - /* Level 3 reset */ - REGISTER_LONG_CONSTANT("SOCKET_EL3RST", EL3RST, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ELNRNG - /* Link number out of range */ - REGISTER_LONG_CONSTANT("SOCKET_ELNRNG", ELNRNG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EUNATCH - /* Protocol driver not attached */ - REGISTER_LONG_CONSTANT("SOCKET_EUNATCH", EUNATCH, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOCSI - /* No CSI structure available */ - REGISTER_LONG_CONSTANT("SOCKET_ENOCSI", ENOCSI, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EL2HLT - /* Level 2 halted */ - REGISTER_LONG_CONSTANT("SOCKET_EL2HLT", EL2HLT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBADE - /* Invalid exchange */ - REGISTER_LONG_CONSTANT("SOCKET_EBADE", EBADE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBADR - /* Invalid request descriptor */ - REGISTER_LONG_CONSTANT("SOCKET_EBADR", EBADR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EXFULL - /* Exchange full */ - REGISTER_LONG_CONSTANT("SOCKET_EXFULL", EXFULL, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOANO - /* No anode */ - REGISTER_LONG_CONSTANT("SOCKET_ENOANO", ENOANO, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBADRQC - /* Invalid request code */ - REGISTER_LONG_CONSTANT("SOCKET_EBADRQC", EBADRQC, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBADSLT - /* Invalid slot */ - REGISTER_LONG_CONSTANT("SOCKET_EBADSLT", EBADSLT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOSTR - /* Device not a stream */ - REGISTER_LONG_CONSTANT("SOCKET_ENOSTR", ENOSTR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENODATA - /* No data available */ - REGISTER_LONG_CONSTANT("SOCKET_ENODATA", ENODATA, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ETIME - /* Timer expired */ - REGISTER_LONG_CONSTANT("SOCKET_ETIME", ETIME, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOSR - /* Out of streams resources */ - REGISTER_LONG_CONSTANT("SOCKET_ENOSR", ENOSR, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENONET - /* Machine is not on the network */ - REGISTER_LONG_CONSTANT("SOCKET_ENONET", ENONET, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EREMOTE - /* Object is remote */ - REGISTER_LONG_CONSTANT("SOCKET_EREMOTE", EREMOTE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOLINK - /* Link has been severed */ - REGISTER_LONG_CONSTANT("SOCKET_ENOLINK", ENOLINK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EADV - /* Advertise error */ - REGISTER_LONG_CONSTANT("SOCKET_EADV", EADV, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ESRMNT - /* Srmount error */ - REGISTER_LONG_CONSTANT("SOCKET_ESRMNT", ESRMNT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ECOMM - /* Communication error on send */ - REGISTER_LONG_CONSTANT("SOCKET_ECOMM", ECOMM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EPROTO - /* Protocol error */ - REGISTER_LONG_CONSTANT("SOCKET_EPROTO", EPROTO, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EMULTIHOP - /* Multihop attempted */ - REGISTER_LONG_CONSTANT("SOCKET_EMULTIHOP", EMULTIHOP, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBADMSG - /* Not a data message */ - REGISTER_LONG_CONSTANT("SOCKET_EBADMSG", EBADMSG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOTUNIQ - /* Name not unique on network */ - REGISTER_LONG_CONSTANT("SOCKET_ENOTUNIQ", ENOTUNIQ, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EBADFD - /* File descriptor in bad state */ - REGISTER_LONG_CONSTANT("SOCKET_EBADFD", EBADFD, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EREMCHG - /* Remote address changed */ - REGISTER_LONG_CONSTANT("SOCKET_EREMCHG", EREMCHG, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ERESTART - /* Interrupted system call should be restarted */ - REGISTER_LONG_CONSTANT("SOCKET_ERESTART", ERESTART, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ESTRPIPE - /* Streams pipe error */ - REGISTER_LONG_CONSTANT("SOCKET_ESTRPIPE", ESTRPIPE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EUSERS - /* Too many users */ - REGISTER_LONG_CONSTANT("SOCKET_EUSERS", EUSERS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOTSOCK - /* Socket operation on non-socket */ - REGISTER_LONG_CONSTANT("SOCKET_ENOTSOCK", ENOTSOCK, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EDESTADDRREQ - /* Destination address required */ - REGISTER_LONG_CONSTANT("SOCKET_EDESTADDRREQ", EDESTADDRREQ, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EMSGSIZE - /* Message too long */ - REGISTER_LONG_CONSTANT("SOCKET_EMSGSIZE", EMSGSIZE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EPROTOTYPE - /* Protocol wrong type for socket */ - REGISTER_LONG_CONSTANT("SOCKET_EPROTOTYPE", EPROTOTYPE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOPROTOOPT - /* Protocol not available */ - REGISTER_LONG_CONSTANT("SOCKET_ENOPROTOOPT", ENOPROTOOPT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EPROTONOSUPPORT - /* Protocol not supported */ - REGISTER_LONG_CONSTANT("SOCKET_EPROTONOSUPPORT", EPROTONOSUPPORT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ESOCKTNOSUPPORT - /* Socket type not supported */ - REGISTER_LONG_CONSTANT("SOCKET_ESOCKTNOSUPPORT", ESOCKTNOSUPPORT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EOPNOTSUPP - /* Operation not supported on transport endpoint */ - REGISTER_LONG_CONSTANT("SOCKET_EOPNOTSUPP", EOPNOTSUPP, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EPFNOSUPPORT - /* Protocol family not supported */ - REGISTER_LONG_CONSTANT("SOCKET_EPFNOSUPPORT", EPFNOSUPPORT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EAFNOSUPPORT - /* Address family not supported by protocol */ - REGISTER_LONG_CONSTANT("SOCKET_EAFNOSUPPORT", EAFNOSUPPORT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EADDRINUSE - /* Address already in use */ - REGISTER_LONG_CONSTANT("SOCKET_EADDRINUSE", EADDRINUSE, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EADDRNOTAVAIL - /* Cannot assign requested address */ - REGISTER_LONG_CONSTANT("SOCKET_EADDRNOTAVAIL", EADDRNOTAVAIL, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENETDOWN - /* Network is down */ - REGISTER_LONG_CONSTANT("SOCKET_ENETDOWN", ENETDOWN, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENETUNREACH - /* Network is unreachable */ - REGISTER_LONG_CONSTANT("SOCKET_ENETUNREACH", ENETUNREACH, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENETRESET - /* Network dropped connection because of reset */ - REGISTER_LONG_CONSTANT("SOCKET_ENETRESET", ENETRESET, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ECONNABORTED - /* Software caused connection abort */ - REGISTER_LONG_CONSTANT("SOCKET_ECONNABORTED", ECONNABORTED, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ECONNRESET - /* Connection reset by peer */ - REGISTER_LONG_CONSTANT("SOCKET_ECONNRESET", ECONNRESET, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOBUFS - /* No buffer space available */ - REGISTER_LONG_CONSTANT("SOCKET_ENOBUFS", ENOBUFS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EISCONN - /* Transport endpoint is already connected */ - REGISTER_LONG_CONSTANT("SOCKET_EISCONN", EISCONN, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOTCONN - /* Transport endpoint is not connected */ - REGISTER_LONG_CONSTANT("SOCKET_ENOTCONN", ENOTCONN, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ESHUTDOWN - /* Cannot send after transport endpoint shutdown */ - REGISTER_LONG_CONSTANT("SOCKET_ESHUTDOWN", ESHUTDOWN, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ETOOMANYREFS - /* Too many references: cannot splice */ - REGISTER_LONG_CONSTANT("SOCKET_ETOOMANYREFS", ETOOMANYREFS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ETIMEDOUT - /* Connection timed out */ - REGISTER_LONG_CONSTANT("SOCKET_ETIMEDOUT", ETIMEDOUT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ECONNREFUSED - /* Connection refused */ - REGISTER_LONG_CONSTANT("SOCKET_ECONNREFUSED", ECONNREFUSED, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EHOSTDOWN - /* Host is down */ - REGISTER_LONG_CONSTANT("SOCKET_EHOSTDOWN", EHOSTDOWN, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EHOSTUNREACH - /* No route to host */ - REGISTER_LONG_CONSTANT("SOCKET_EHOSTUNREACH", EHOSTUNREACH, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EALREADY - /* Operation already in progress */ - REGISTER_LONG_CONSTANT("SOCKET_EALREADY", EALREADY, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EINPROGRESS - /* Operation now in progress */ - REGISTER_LONG_CONSTANT("SOCKET_EINPROGRESS", EINPROGRESS, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EISNAM - /* Is a named type file */ - REGISTER_LONG_CONSTANT("SOCKET_EISNAM", EISNAM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EREMOTEIO - /* Remote I/O error */ - REGISTER_LONG_CONSTANT("SOCKET_EREMOTEIO", EREMOTEIO, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EDQUOT - /* Quota exceeded */ - REGISTER_LONG_CONSTANT("SOCKET_EDQUOT", EDQUOT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef ENOMEDIUM - /* No medium found */ - REGISTER_LONG_CONSTANT("SOCKET_ENOMEDIUM", ENOMEDIUM, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef EMEDIUMTYPE - /* Wrong medium type */ - REGISTER_LONG_CONSTANT("SOCKET_EMEDIUMTYPE", EMEDIUMTYPE, CONST_CS | CONST_PERSISTENT); -#endif diff --git a/ext/sockets/win32_socket_constants.h b/ext/sockets/win32_socket_constants.h deleted file mode 100644 index bb8a10713e0f4..0000000000000 --- a/ext/sockets/win32_socket_constants.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - +----------------------------------------------------------------------+ - | 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. | - +----------------------------------------------------------------------+ - | Author: Jason Greene | - +----------------------------------------------------------------------+ -*/ - -/* This file is to be included by sockets.c */ - -REGISTER_LONG_CONSTANT("SOCKET_EINTR", WSAEINTR, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EBADF", WSAEBADF, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EACCES", WSAEACCES, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EFAULT", WSAEFAULT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EINVAL", WSAEINVAL, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EMFILE", WSAEMFILE, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EWOULDBLOCK", WSAEWOULDBLOCK, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EINPROGRESS", WSAEINPROGRESS, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EALREADY", WSAEALREADY, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENOTSOCK", WSAENOTSOCK, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EDESTADDRREQ", WSAEDESTADDRREQ, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EMSGSIZE", WSAEMSGSIZE, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EPROTOTYPE", WSAEPROTOTYPE, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENOPROTOOPT", WSAENOPROTOOPT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EPROTONOSUPPORT", WSAEPROTONOSUPPORT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ESOCKTNOSUPPORT", WSAESOCKTNOSUPPORT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EOPNOTSUPP", WSAEOPNOTSUPP, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EPFNOSUPPORT", WSAEPFNOSUPPORT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EAFNOSUPPORT", WSAEAFNOSUPPORT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EADDRINUSE", WSAEADDRINUSE, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EADDRNOTAVAIL", WSAEADDRNOTAVAIL, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENETDOWN", WSAENETDOWN, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENETUNREACH", WSAENETUNREACH, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENETRESET", WSAENETRESET, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ECONNABORTED", WSAECONNABORTED, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ECONNRESET", WSAECONNRESET, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENOBUFS", WSAENOBUFS, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EISCONN", WSAEISCONN, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENOTCONN", WSAENOTCONN, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ESHUTDOWN", WSAESHUTDOWN, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ETOOMANYREFS", WSAETOOMANYREFS, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ETIMEDOUT", WSAETIMEDOUT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ECONNREFUSED", WSAECONNREFUSED, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ELOOP", WSAELOOP, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENAMETOOLONG", WSAENAMETOOLONG, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EHOSTDOWN", WSAEHOSTDOWN, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EHOSTUNREACH", WSAEHOSTUNREACH, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ENOTEMPTY", WSAENOTEMPTY, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EPROCLIM", WSAEPROCLIM, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EUSERS", WSAEUSERS, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EDQUOT", WSAEDQUOT, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_ESTALE", WSAESTALE, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EREMOTE", WSAEREMOTE, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_EDISCON", WSAEDISCON, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_SYSNOTREADY", WSASYSNOTREADY, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_VERNOTSUPPORTED", WSAVERNOTSUPPORTED, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_NOTINITIALISED", WSANOTINITIALISED, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_HOST_NOT_FOUND", WSAHOST_NOT_FOUND, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_TRY_AGAIN", WSATRY_AGAIN, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_NO_RECOVERY", WSANO_RECOVERY, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_NO_DATA", WSANO_DATA, CONST_CS | CONST_PERSISTENT); -REGISTER_LONG_CONSTANT("SOCKET_NO_ADDRESS", WSANO_ADDRESS, CONST_CS | CONST_PERSISTENT); diff --git a/ext/sodium/libsodium.c b/ext/sodium/libsodium.c index 944ef28fc3a43..6eb10f7571358 100644 --- a/ext/sodium/libsodium.c +++ b/ext/sodium/libsodium.c @@ -184,7 +184,7 @@ PHP_MSHUTDOWN_FUNCTION(sodium) PHP_MINFO_FUNCTION(sodium) { php_info_print_table_start(); - php_info_print_table_header(2, "sodium support", "enabled"); + php_info_print_table_row(2, "sodium support", "enabled"); php_info_print_table_row(2, "libsodium headers version", SODIUM_VERSION_STRING); php_info_print_table_row(2, "libsodium library version", sodium_version_string()); php_info_print_table_end(); diff --git a/ext/sodium/libsodium_arginfo.h b/ext/sodium/libsodium_arginfo.h index f571b79e3a4d9..8fb0b9a32ac53 100644 --- a/ext/sodium/libsodium_arginfo.h +++ b/ext/sodium/libsodium_arginfo.h @@ -886,189 +886,189 @@ static const zend_function_entry class_SodiumException_methods[] = { static void register_libsodium_symbols(int module_number) { - REGISTER_STRING_CONSTANT("SODIUM_LIBRARY_VERSION", SODIUM_LIBRARY_VERSION(), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_LIBRARY_MAJOR_VERSION", sodium_library_version_major(), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_LIBRARY_MINOR_VERSION", sodium_library_version_minor(), CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("SODIUM_LIBRARY_VERSION", SODIUM_LIBRARY_VERSION(), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_LIBRARY_MAJOR_VERSION", sodium_library_version_major(), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_LIBRARY_MINOR_VERSION", sodium_library_version_minor(), CONST_PERSISTENT); #if defined(HAVE_AESGCM) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES", crypto_aead_aes256gcm_KEYBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_KEYBYTES", crypto_aead_aes256gcm_KEYBYTES, CONST_PERSISTENT); #endif #if defined(HAVE_AESGCM) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES", crypto_aead_aes256gcm_NSECBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_NSECBYTES", crypto_aead_aes256gcm_NSECBYTES, CONST_PERSISTENT); #endif #if defined(HAVE_AESGCM) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES", crypto_aead_aes256gcm_NPUBBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_NPUBBYTES", crypto_aead_aes256gcm_NPUBBYTES, CONST_PERSISTENT); #endif #if defined(HAVE_AESGCM) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES", crypto_aead_aes256gcm_ABYTES, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES", crypto_aead_chacha20poly1305_KEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES", crypto_aead_chacha20poly1305_NSECBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES", crypto_aead_chacha20poly1305_NPUBBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES", crypto_aead_chacha20poly1305_ABYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES", crypto_aead_chacha20poly1305_IETF_KEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES", crypto_aead_chacha20poly1305_IETF_NSECBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES", crypto_aead_chacha20poly1305_IETF_NPUBBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES", crypto_aead_chacha20poly1305_IETF_ABYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_AES256GCM_ABYTES", crypto_aead_aes256gcm_ABYTES, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_KEYBYTES", crypto_aead_chacha20poly1305_KEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NSECBYTES", crypto_aead_chacha20poly1305_NSECBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_NPUBBYTES", crypto_aead_chacha20poly1305_NPUBBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_ABYTES", crypto_aead_chacha20poly1305_ABYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_KEYBYTES", crypto_aead_chacha20poly1305_IETF_KEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NSECBYTES", crypto_aead_chacha20poly1305_IETF_NSECBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_NPUBBYTES", crypto_aead_chacha20poly1305_IETF_NPUBBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_CHACHA20POLY1305_IETF_ABYTES", crypto_aead_chacha20poly1305_IETF_ABYTES, CONST_PERSISTENT); #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES", crypto_aead_xchacha20poly1305_IETF_KEYBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_KEYBYTES", crypto_aead_xchacha20poly1305_IETF_KEYBYTES, CONST_PERSISTENT); #endif #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES", crypto_aead_xchacha20poly1305_IETF_NSECBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NSECBYTES", crypto_aead_xchacha20poly1305_IETF_NSECBYTES, CONST_PERSISTENT); #endif #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES", crypto_aead_xchacha20poly1305_IETF_NPUBBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES", crypto_aead_xchacha20poly1305_IETF_NPUBBYTES, CONST_PERSISTENT); #endif #if defined(crypto_aead_xchacha20poly1305_IETF_NPUBBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES", crypto_aead_xchacha20poly1305_IETF_ABYTES, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AUTH_BYTES", crypto_auth_BYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AUTH_KEYBYTES", crypto_auth_KEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SEALBYTES", crypto_box_SEALBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SECRETKEYBYTES", crypto_box_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_PUBLICKEYBYTES", crypto_box_PUBLICKEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_KEYPAIRBYTES", SODIUM_CRYPTO_BOX_KEYPAIRBYTES(), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_MACBYTES", crypto_box_MACBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_NONCEBYTES", crypto_box_NONCEBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SEEDBYTES", crypto_box_SEEDBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_BYTES_MIN", crypto_kdf_BYTES_MIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_BYTES_MAX", crypto_kdf_BYTES_MAX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_CONTEXTBYTES", crypto_kdf_CONTEXTBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_KEYBYTES", crypto_kdf_KEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SEEDBYTES", crypto_kx_SEEDBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SESSIONKEYBYTES", crypto_kx_SESSIONKEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_PUBLICKEYBYTES", crypto_kx_PUBLICKEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SECRETKEYBYTES", crypto_kx_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_KEYPAIRBYTES", SODIUM_CRYPTO_KX_KEYPAIRBYTES(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_ABYTES", crypto_aead_xchacha20poly1305_IETF_ABYTES, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AUTH_BYTES", crypto_auth_BYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_AUTH_KEYBYTES", crypto_auth_KEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SEALBYTES", crypto_box_SEALBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SECRETKEYBYTES", crypto_box_SECRETKEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_PUBLICKEYBYTES", crypto_box_PUBLICKEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_KEYPAIRBYTES", SODIUM_CRYPTO_BOX_KEYPAIRBYTES(), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_MACBYTES", crypto_box_MACBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_NONCEBYTES", crypto_box_NONCEBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_BOX_SEEDBYTES", crypto_box_SEEDBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_BYTES_MIN", crypto_kdf_BYTES_MIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_BYTES_MAX", crypto_kdf_BYTES_MAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_CONTEXTBYTES", crypto_kdf_CONTEXTBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KDF_KEYBYTES", crypto_kdf_KEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SEEDBYTES", crypto_kx_SEEDBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SESSIONKEYBYTES", crypto_kx_SESSIONKEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_PUBLICKEYBYTES", crypto_kx_PUBLICKEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_SECRETKEYBYTES", crypto_kx_SECRETKEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_KX_KEYPAIRBYTES", SODIUM_CRYPTO_KX_KEYPAIRBYTES(), CONST_PERSISTENT); #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES", crypto_secretstream_xchacha20poly1305_ABYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_ABYTES", crypto_secretstream_xchacha20poly1305_ABYTES, CONST_PERSISTENT); #endif #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES", crypto_secretstream_xchacha20poly1305_HEADERBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_HEADERBYTES", crypto_secretstream_xchacha20poly1305_HEADERBYTES, CONST_PERSISTENT); #endif #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES", crypto_secretstream_xchacha20poly1305_KEYBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_KEYBYTES", crypto_secretstream_xchacha20poly1305_KEYBYTES, CONST_PERSISTENT); #endif #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX", crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX", crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX, CONST_PERSISTENT); #endif #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE", crypto_secretstream_xchacha20poly1305_TAG_MESSAGE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_MESSAGE", crypto_secretstream_xchacha20poly1305_TAG_MESSAGE, CONST_PERSISTENT); #endif #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH", crypto_secretstream_xchacha20poly1305_TAG_PUSH, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_PUSH", crypto_secretstream_xchacha20poly1305_TAG_PUSH, CONST_PERSISTENT); #endif #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY", crypto_secretstream_xchacha20poly1305_TAG_REKEY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_REKEY", crypto_secretstream_xchacha20poly1305_TAG_REKEY, CONST_PERSISTENT); #endif #if defined(crypto_secretstream_xchacha20poly1305_ABYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL", crypto_secretstream_xchacha20poly1305_TAG_FINAL, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES", crypto_generichash_BYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES_MIN", crypto_generichash_BYTES_MIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES_MAX", crypto_generichash_BYTES_MAX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES", crypto_generichash_KEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN", crypto_generichash_KEYBYTES_MIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX", crypto_generichash_KEYBYTES_MAX, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_TAG_FINAL", crypto_secretstream_xchacha20poly1305_TAG_FINAL, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES", crypto_generichash_BYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES_MIN", crypto_generichash_BYTES_MIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_BYTES_MAX", crypto_generichash_BYTES_MAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES", crypto_generichash_KEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MIN", crypto_generichash_KEYBYTES_MIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_GENERICHASH_KEYBYTES_MAX", crypto_generichash_KEYBYTES_MAX, CONST_PERSISTENT); #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13", crypto_pwhash_ALG_ARGON2I13, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_ARGON2I13", crypto_pwhash_ALG_ARGON2I13, CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) && defined(crypto_pwhash_ALG_ARGON2ID13) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13", crypto_pwhash_ALG_ARGON2ID13, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_ARGON2ID13", crypto_pwhash_ALG_ARGON2ID13, CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_DEFAULT", crypto_pwhash_ALG_DEFAULT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_ALG_DEFAULT", crypto_pwhash_ALG_DEFAULT, CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SALTBYTES", crypto_pwhash_SALTBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SALTBYTES", crypto_pwhash_SALTBYTES, CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_STRING_CONSTANT("SODIUM_CRYPTO_PWHASH_STRPREFIX", crypto_pwhash_STRPREFIX, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("SODIUM_CRYPTO_PWHASH_STRPREFIX", crypto_pwhash_STRPREFIX, CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE", crypto_pwhash_opslimit_interactive(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE", crypto_pwhash_opslimit_interactive(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE", crypto_pwhash_memlimit_interactive(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE", crypto_pwhash_memlimit_interactive(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE", crypto_pwhash_opslimit_moderate(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_MODERATE", crypto_pwhash_opslimit_moderate(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE", crypto_pwhash_memlimit_moderate(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE", crypto_pwhash_memlimit_moderate(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE", crypto_pwhash_opslimit_sensitive(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_OPSLIMIT_SENSITIVE", crypto_pwhash_opslimit_sensitive(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE", crypto_pwhash_memlimit_sensitive(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_MEMLIMIT_SENSITIVE", crypto_pwhash_memlimit_sensitive(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES", crypto_pwhash_scryptsalsa208sha256_SALTBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_SALTBYTES", crypto_pwhash_scryptsalsa208sha256_SALTBYTES, CONST_PERSISTENT); #endif #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES) - REGISTER_STRING_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX", crypto_pwhash_scryptsalsa208sha256_STRPREFIX, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX", crypto_pwhash_scryptsalsa208sha256_STRPREFIX, CONST_PERSISTENT); #endif #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE", crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE", crypto_pwhash_scryptsalsa208sha256_opslimit_interactive(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE", crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE", crypto_pwhash_scryptsalsa208sha256_memlimit_interactive(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE", crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(), CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE", crypto_pwhash_scryptsalsa208sha256_opslimit_sensitive(), CONST_PERSISTENT); #endif #if defined(crypto_pwhash_scryptsalsa208sha256_SALTBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE", crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(), CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_BYTES", crypto_scalarmult_BYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_SCALARBYTES", crypto_scalarmult_SCALARBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SHORTHASH_BYTES", crypto_shorthash_BYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SHORTHASH_KEYBYTES", crypto_shorthash_KEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_KEYBYTES", crypto_secretbox_KEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_MACBYTES", crypto_secretbox_MACBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_NONCEBYTES", crypto_secretbox_NONCEBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_BYTES", crypto_sign_BYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_SEEDBYTES", crypto_sign_SEEDBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES", crypto_sign_PUBLICKEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_SECRETKEYBYTES", crypto_sign_SECRETKEYBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_KEYPAIRBYTES", SODIUM_CRYPTO_SIGN_KEYPAIRBYTES(), CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_NONCEBYTES", crypto_stream_NONCEBYTES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_KEYBYTES", crypto_stream_KEYBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE", crypto_pwhash_scryptsalsa208sha256_memlimit_sensitive(), CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_BYTES", crypto_scalarmult_BYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_SCALARBYTES", crypto_scalarmult_SCALARBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SHORTHASH_BYTES", crypto_shorthash_BYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SHORTHASH_KEYBYTES", crypto_shorthash_KEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_KEYBYTES", crypto_secretbox_KEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_MACBYTES", crypto_secretbox_MACBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SECRETBOX_NONCEBYTES", crypto_secretbox_NONCEBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_BYTES", crypto_sign_BYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_SEEDBYTES", crypto_sign_SEEDBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_PUBLICKEYBYTES", crypto_sign_PUBLICKEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_SECRETKEYBYTES", crypto_sign_SECRETKEYBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SIGN_KEYPAIRBYTES", SODIUM_CRYPTO_SIGN_KEYPAIRBYTES(), CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_NONCEBYTES", crypto_stream_NONCEBYTES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_KEYBYTES", crypto_stream_KEYBYTES, CONST_PERSISTENT); #if defined(crypto_stream_xchacha20_KEYBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES", crypto_stream_xchacha20_NONCEBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES", crypto_stream_xchacha20_NONCEBYTES, CONST_PERSISTENT); #endif #if defined(crypto_stream_xchacha20_KEYBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES", crypto_stream_xchacha20_KEYBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES", crypto_stream_xchacha20_KEYBYTES, CONST_PERSISTENT); #endif #if defined(sodium_base64_VARIANT_ORIGINAL) - REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_ORIGINAL", sodium_base64_VARIANT_ORIGINAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_ORIGINAL", sodium_base64_VARIANT_ORIGINAL, CONST_PERSISTENT); #endif #if defined(sodium_base64_VARIANT_ORIGINAL) - REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING", sodium_base64_VARIANT_ORIGINAL_NO_PADDING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING", sodium_base64_VARIANT_ORIGINAL_NO_PADDING, CONST_PERSISTENT); #endif #if defined(sodium_base64_VARIANT_ORIGINAL) - REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_URLSAFE", sodium_base64_VARIANT_URLSAFE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_URLSAFE", sodium_base64_VARIANT_URLSAFE, CONST_PERSISTENT); #endif #if defined(sodium_base64_VARIANT_ORIGINAL) - REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING", sodium_base64_VARIANT_URLSAFE_NO_PADDING, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_BASE64_VARIANT_URLSAFE_NO_PADDING", sodium_base64_VARIANT_URLSAFE_NO_PADDING, CONST_PERSISTENT); #endif #if defined(crypto_core_ristretto255_HASHBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES", crypto_scalarmult_ristretto255_BYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES", crypto_scalarmult_ristretto255_BYTES, CONST_PERSISTENT); #endif #if defined(crypto_core_ristretto255_HASHBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES", crypto_scalarmult_ristretto255_SCALARBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES", crypto_scalarmult_ristretto255_SCALARBYTES, CONST_PERSISTENT); #endif #if defined(crypto_core_ristretto255_HASHBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES", crypto_core_ristretto255_BYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES", crypto_core_ristretto255_BYTES, CONST_PERSISTENT); #endif #if defined(crypto_core_ristretto255_HASHBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES", crypto_core_ristretto255_HASHBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES", crypto_core_ristretto255_HASHBYTES, CONST_PERSISTENT); #endif #if defined(crypto_core_ristretto255_HASHBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES", crypto_core_ristretto255_SCALARBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES", crypto_core_ristretto255_SCALARBYTES, CONST_PERSISTENT); #endif #if defined(crypto_core_ristretto255_HASHBYTES) - REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES", crypto_core_ristretto255_NONREDUCEDSCALARBYTES, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES", crypto_core_ristretto255_NONREDUCEDSCALARBYTES, CONST_PERSISTENT); #endif #if defined(HAVE_AESGCM) diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index f0eb927cf10e6..3268273e28931 100644 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -670,7 +670,7 @@ PHP_MINFO_FUNCTION(spl) char *strg; php_info_print_table_start(); - php_info_print_table_header(2, "SPL support", "enabled"); + php_info_print_table_row(2, "SPL support", "enabled"); array_init(&list); SPL_LIST_CLASSES(&list, 0, 1, ZEND_ACC_INTERFACE) diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index 64721ab42effd..4098382c61c17 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -177,11 +177,7 @@ static zend_object *spl_array_object_new_ex(zend_class_entry *class_type, zend_o } while (parent) { - if (parent == spl_ce_ArrayIterator || parent == spl_ce_RecursiveArrayIterator) { - intern->std.handlers = &spl_handler_ArrayIterator; - break; - } else if (parent == spl_ce_ArrayObject) { - intern->std.handlers = &spl_handler_ArrayObject; + if (parent == spl_ce_ArrayIterator || parent == spl_ce_RecursiveArrayIterator || parent == spl_ce_ArrayObject) { break; } parent = parent->parent; @@ -1740,6 +1736,9 @@ PHP_METHOD(ArrayObject, __unserialize) } object_properties_load(&intern->std, Z_ARRVAL_P(members_zv)); + if (EG(exception)) { + RETURN_THROWS(); + } if (iterator_class_zv && Z_TYPE_P(iterator_class_zv) == IS_STRING) { zend_class_entry *ce = zend_lookup_class(Z_STR_P(iterator_class_zv)); @@ -1778,6 +1777,7 @@ PHP_MINIT_FUNCTION(spl_array) { spl_ce_ArrayObject = register_class_ArrayObject(zend_ce_aggregate, zend_ce_arrayaccess, zend_ce_serializable, zend_ce_countable); spl_ce_ArrayObject->create_object = spl_array_object_new; + spl_ce_ArrayObject->default_object_handlers = &spl_handler_ArrayObject; memcpy(&spl_handler_ArrayObject, &std_object_handlers, sizeof(zend_object_handlers)); @@ -1803,6 +1803,7 @@ PHP_MINIT_FUNCTION(spl_array) spl_ce_ArrayIterator = register_class_ArrayIterator(spl_ce_SeekableIterator, zend_ce_arrayaccess, zend_ce_serializable, zend_ce_countable); spl_ce_ArrayIterator->create_object = spl_array_object_new; + spl_ce_ArrayIterator->default_object_handlers = &spl_handler_ArrayIterator; spl_ce_ArrayIterator->get_iterator = spl_array_get_iterator; memcpy(&spl_handler_ArrayIterator, &spl_handler_ArrayObject, sizeof(zend_object_handlers)); diff --git a/ext/spl/spl_directory.c b/ext/spl/spl_directory.c index c8cd8f684d406..ff840e6ad3619 100644 --- a/ext/spl/spl_directory.c +++ b/ext/spl/spl_directory.c @@ -199,7 +199,6 @@ static zend_object *spl_filesystem_object_new_ex(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &spl_filesystem_object_handlers; return &intern->std; } @@ -213,15 +212,6 @@ static zend_object *spl_filesystem_object_new(zend_class_entry *class_type) } /* }}} */ -/* {{{ spl_filesystem_object_new_check */ -static zend_object *spl_filesystem_object_new_check(zend_class_entry *class_type) -{ - spl_filesystem_object *ret = spl_filesystem_from_obj(spl_filesystem_object_new_ex(class_type)); - ret->std.handlers = &spl_filesystem_object_check_handlers; - return &ret->std; -} -/* }}} */ - PHPAPI zend_string *spl_filesystem_object_get_path(spl_filesystem_object *intern) /* {{{ */ { #ifdef HAVE_GLOB @@ -2756,6 +2746,7 @@ PHP_MINIT_FUNCTION(spl_directory) { spl_ce_SplFileInfo = register_class_SplFileInfo(zend_ce_stringable); spl_ce_SplFileInfo->create_object = spl_filesystem_object_new; + spl_ce_SplFileInfo->default_object_handlers = &spl_filesystem_object_handlers; memcpy(&spl_filesystem_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); spl_filesystem_object_handlers.offset = XtOffsetOf(spl_filesystem_object, std); @@ -2781,14 +2772,16 @@ PHP_MINIT_FUNCTION(spl_directory) #ifdef HAVE_GLOB spl_ce_GlobIterator = register_class_GlobIterator(spl_ce_FilesystemIterator, zend_ce_countable); - spl_ce_GlobIterator->create_object = spl_filesystem_object_new_check; + spl_ce_GlobIterator->create_object = spl_filesystem_object_new; + spl_ce_GlobIterator->default_object_handlers = &spl_filesystem_object_check_handlers; #endif spl_ce_SplFileObject = register_class_SplFileObject(spl_ce_SplFileInfo, spl_ce_RecursiveIterator, spl_ce_SeekableIterator); - spl_ce_SplFileObject->create_object = spl_filesystem_object_new_check; + spl_ce_SplFileObject->default_object_handlers = &spl_filesystem_object_check_handlers; + spl_ce_SplFileObject->create_object = spl_filesystem_object_new; spl_ce_SplTempFileObject = register_class_SplTempFileObject(spl_ce_SplFileObject); - spl_ce_SplTempFileObject->create_object = spl_filesystem_object_new_check; + spl_ce_SplTempFileObject->create_object = spl_filesystem_object_new; return SUCCESS; } diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index 186b9a34c7efa..a3c17d59668c0 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -344,14 +344,11 @@ static zend_object *spl_dllist_object_new_ex(zend_class_entry *class_type, zend_ while (parent) { if (parent == spl_ce_SplStack) { intern->flags |= (SPL_DLLIST_IT_FIX | SPL_DLLIST_IT_LIFO); - intern->std.handlers = &spl_handler_SplDoublyLinkedList; } else if (parent == spl_ce_SplQueue) { intern->flags |= SPL_DLLIST_IT_FIX; - intern->std.handlers = &spl_handler_SplDoublyLinkedList; } if (parent == spl_ce_SplDoublyLinkedList) { - intern->std.handlers = &spl_handler_SplDoublyLinkedList; break; } @@ -1257,6 +1254,7 @@ PHP_MINIT_FUNCTION(spl_dllist) /* {{{ */ zend_ce_iterator, zend_ce_countable, zend_ce_arrayaccess, zend_ce_serializable ); spl_ce_SplDoublyLinkedList->create_object = spl_dllist_object_new; + spl_ce_SplDoublyLinkedList->default_object_handlers = &spl_handler_SplDoublyLinkedList; spl_ce_SplDoublyLinkedList->get_iterator = spl_dllist_get_iterator; memcpy(&spl_handler_SplDoublyLinkedList, &std_object_handlers, sizeof(zend_object_handlers)); diff --git a/ext/spl/spl_fixedarray.c b/ext/spl/spl_fixedarray.c index fd18c3d86c378..5c013408ea9f2 100644 --- a/ext/spl/spl_fixedarray.c +++ b/ext/spl/spl_fixedarray.c @@ -102,13 +102,18 @@ static void spl_fixedarray_init_elems(spl_fixedarray *array, zend_long from, zen } } +static void spl_fixedarray_init_non_empty_struct(spl_fixedarray *array, zend_long size) +{ + array->size = 0; /* reset size in case ecalloc() fails */ + array->elements = size ? safe_emalloc(size, sizeof(zval), 0) : NULL; + array->size = size; + array->should_rebuild_properties = true; +} + static void spl_fixedarray_init(spl_fixedarray *array, zend_long size) { if (size > 0) { - array->size = 0; /* reset size in case ecalloc() fails */ - array->elements = safe_emalloc(size, sizeof(zval), 0); - array->size = size; - array->should_rebuild_properties = true; + spl_fixedarray_init_non_empty_struct(array, size); spl_fixedarray_init_elems(array, 0, size); } else { spl_fixedarray_default_ctor(array); @@ -277,7 +282,6 @@ static zend_object *spl_fixedarray_object_new_ex(zend_class_entry *class_type, z while (parent) { if (parent == spl_ce_SplFixedArray) { - intern->std.handlers = &spl_handler_SplFixedArray; break; } @@ -582,6 +586,78 @@ PHP_METHOD(SplFixedArray, __wakeup) } } +PHP_METHOD(SplFixedArray, __serialize) +{ + spl_fixedarray_object *intern = Z_SPLFIXEDARRAY_P(ZEND_THIS); + zval *current; + zend_string *key; + + if (zend_parse_parameters_none() == FAILURE) { + RETURN_THROWS(); + } + + uint32_t property_num = zend_hash_num_elements(intern->std.properties); + array_init_size(return_value, intern->array.size + property_num); + + /* elements */ + for (zend_long i = 0; i < intern->array.size; i++) { + current = &intern->array.elements[i]; + zend_hash_next_index_insert(Z_ARRVAL_P(return_value), current); + Z_TRY_ADDREF_P(current); + } + + /* members */ + ZEND_HASH_FOREACH_STR_KEY_VAL(intern->std.properties, key, current) { + zend_hash_add(Z_ARRVAL_P(return_value), key, current); + Z_TRY_ADDREF_P(current); + } ZEND_HASH_FOREACH_END(); +} + +PHP_METHOD(SplFixedArray, __unserialize) +{ + spl_fixedarray_object *intern = Z_SPLFIXEDARRAY_P(ZEND_THIS); + HashTable *data; + zval members_zv, *elem; + zend_string *key; + zend_long size; + + if (zend_parse_parameters(ZEND_NUM_ARGS(), "h", &data) == FAILURE) { + RETURN_THROWS(); + } + + if (intern->array.size == 0) { + size = zend_hash_num_elements(data); + spl_fixedarray_init_non_empty_struct(&intern->array, size); + if (!size) { + return; + } + array_init(&members_zv); + + intern->array.size = 0; + ZEND_HASH_FOREACH_STR_KEY_VAL(data, key, elem) { + if (key == NULL) { + ZVAL_COPY(&intern->array.elements[intern->array.size], elem); + intern->array.size++; + } else { + Z_TRY_ADDREF_P(elem); + zend_hash_add(Z_ARRVAL(members_zv), key, elem); + } + } ZEND_HASH_FOREACH_END(); + + if (intern->array.size != size) { + if (intern->array.size) { + intern->array.elements = erealloc(intern->array.elements, sizeof(zval) * intern->array.size); + } else { + efree(intern->array.elements); + intern->array.elements = NULL; + } + } + + object_properties_load(&intern->std, Z_ARRVAL(members_zv)); + zval_ptr_dtor(&members_zv); + } +} + PHP_METHOD(SplFixedArray, count) { zval *object = ZEND_THIS; @@ -882,6 +958,7 @@ PHP_MINIT_FUNCTION(spl_fixedarray) spl_ce_SplFixedArray = register_class_SplFixedArray( zend_ce_aggregate, zend_ce_arrayaccess, zend_ce_countable, php_json_serializable_ce); spl_ce_SplFixedArray->create_object = spl_fixedarray_new; + spl_ce_SplFixedArray->default_object_handlers = &spl_handler_SplFixedArray; spl_ce_SplFixedArray->get_iterator = spl_fixedarray_get_iterator; memcpy(&spl_handler_SplFixedArray, &std_object_handlers, sizeof(zend_object_handlers)); diff --git a/ext/spl/spl_fixedarray.stub.php b/ext/spl/spl_fixedarray.stub.php index 7fa9b2730cf59..13f29b7a109db 100644 --- a/ext/spl/spl_fixedarray.stub.php +++ b/ext/spl/spl_fixedarray.stub.php @@ -9,6 +9,10 @@ public function __construct(int $size = 0) {} /** @tentative-return-type */ public function __wakeup(): void {} + public function __serialize(): array {} + + public function __unserialize(array $data): void {} + /** @tentative-return-type */ public function count(): int {} diff --git a/ext/spl/spl_fixedarray_arginfo.h b/ext/spl/spl_fixedarray_arginfo.h index 10c3fdb29c3bc..11ea1fdb30164 100644 --- a/ext/spl/spl_fixedarray_arginfo.h +++ b/ext/spl/spl_fixedarray_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 79a13a549d91f0e79c78a125de65fbac4795339f */ + * Stub hash: 0b508ad6499b70c92bf25960b30fefa913532a3c */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_SplFixedArray___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, size, IS_LONG, 0, "0") @@ -8,6 +8,13 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SplFixedArray___wakeup, 0, 0, IS_VOID, 0) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SplFixedArray___serialize, 0, 0, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SplFixedArray___unserialize, 0, 1, IS_VOID, 0) + ZEND_ARG_TYPE_INFO(0, data, IS_ARRAY, 0) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(arginfo_class_SplFixedArray_count, 0, 0, IS_LONG, 0) ZEND_END_ARG_INFO() @@ -45,12 +52,13 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class_SplFixedArray_getIterator, 0, 0, Iterator, 0) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_SplFixedArray_jsonSerialize, 0, 0, IS_ARRAY, 0) -ZEND_END_ARG_INFO() +#define arginfo_class_SplFixedArray_jsonSerialize arginfo_class_SplFixedArray___serialize ZEND_METHOD(SplFixedArray, __construct); ZEND_METHOD(SplFixedArray, __wakeup); +ZEND_METHOD(SplFixedArray, __serialize); +ZEND_METHOD(SplFixedArray, __unserialize); ZEND_METHOD(SplFixedArray, count); ZEND_METHOD(SplFixedArray, toArray); ZEND_METHOD(SplFixedArray, fromArray); @@ -67,6 +75,8 @@ ZEND_METHOD(SplFixedArray, jsonSerialize); static const zend_function_entry class_SplFixedArray_methods[] = { ZEND_ME(SplFixedArray, __construct, arginfo_class_SplFixedArray___construct, ZEND_ACC_PUBLIC) ZEND_ME(SplFixedArray, __wakeup, arginfo_class_SplFixedArray___wakeup, ZEND_ACC_PUBLIC) + ZEND_ME(SplFixedArray, __serialize, arginfo_class_SplFixedArray___serialize, ZEND_ACC_PUBLIC) + ZEND_ME(SplFixedArray, __unserialize, arginfo_class_SplFixedArray___unserialize, ZEND_ACC_PUBLIC) ZEND_ME(SplFixedArray, count, arginfo_class_SplFixedArray_count, ZEND_ACC_PUBLIC) ZEND_ME(SplFixedArray, toArray, arginfo_class_SplFixedArray_toArray, ZEND_ACC_PUBLIC) ZEND_ME(SplFixedArray, fromArray, arginfo_class_SplFixedArray_fromArray, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c index db35511f08d2d..64fe962ee2de3 100644 --- a/ext/spl/spl_heap.c +++ b/ext/spl/spl_heap.c @@ -428,7 +428,6 @@ static zend_object *spl_heap_object_new_ex(zend_class_entry *class_type, zend_ob while (parent) { if (parent == spl_ce_SplPriorityQueue) { intern->heap = spl_ptr_heap_init(spl_ptr_pqueue_elem_cmp, spl_ptr_heap_pqueue_elem_ctor, spl_ptr_heap_pqueue_elem_dtor, sizeof(spl_pqueue_elem)); - intern->std.handlers = &spl_handler_SplPriorityQueue; intern->flags = SPL_PQUEUE_EXTR_DATA; break; } @@ -438,7 +437,6 @@ static zend_object *spl_heap_object_new_ex(zend_class_entry *class_type, zend_ob intern->heap = spl_ptr_heap_init( parent == spl_ce_SplMinHeap ? spl_ptr_heap_zval_min_cmp : spl_ptr_heap_zval_max_cmp, spl_ptr_heap_zval_ctor, spl_ptr_heap_zval_dtor, sizeof(zval)); - intern->std.handlers = &spl_handler_SplHeap; break; } @@ -1129,6 +1127,7 @@ PHP_MINIT_FUNCTION(spl_heap) /* {{{ */ { spl_ce_SplHeap = register_class_SplHeap(zend_ce_iterator, zend_ce_countable); spl_ce_SplHeap->create_object = spl_heap_object_new; + spl_ce_SplHeap->default_object_handlers = &spl_handler_SplHeap; spl_ce_SplHeap->get_iterator = spl_heap_get_iterator; memcpy(&spl_handler_SplHeap, &std_object_handlers, sizeof(zend_object_handlers)); @@ -1149,6 +1148,7 @@ PHP_MINIT_FUNCTION(spl_heap) /* {{{ */ spl_ce_SplPriorityQueue = register_class_SplPriorityQueue(zend_ce_iterator, zend_ce_countable); spl_ce_SplPriorityQueue->create_object = spl_heap_object_new; + spl_ce_SplPriorityQueue->default_object_handlers = &spl_handler_SplPriorityQueue; spl_ce_SplPriorityQueue->get_iterator = spl_pqueue_get_iterator; memcpy(&spl_handler_SplPriorityQueue, &std_object_handlers, sizeof(zend_object_handlers)); diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index ccbb871269b12..b468a0a5468f4 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -1019,7 +1019,6 @@ static zend_object *spl_RecursiveIteratorIterator_new_ex(zend_class_entry *class zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &spl_handlers_rec_it_it; return &intern->std; } /* }}} */ @@ -2206,7 +2205,6 @@ static zend_object *spl_dual_it_new(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &spl_handlers_dual_it; return &intern->std; } /* }}} */ @@ -3261,6 +3259,7 @@ PHP_MINIT_FUNCTION(spl_iterators) spl_ce_RecursiveIteratorIterator = register_class_RecursiveIteratorIterator(spl_ce_OuterIterator); spl_ce_RecursiveIteratorIterator->create_object = spl_RecursiveIteratorIterator_new; + spl_ce_RecursiveIteratorIterator->default_object_handlers = &spl_handlers_rec_it_it; spl_ce_RecursiveIteratorIterator->get_iterator = spl_recursive_it_get_iterator; memcpy(&spl_handlers_rec_it_it, &std_object_handlers, sizeof(zend_object_handlers)); @@ -3279,6 +3278,7 @@ PHP_MINIT_FUNCTION(spl_iterators) spl_ce_IteratorIterator = register_class_IteratorIterator(spl_ce_OuterIterator); spl_ce_IteratorIterator->create_object = spl_dual_it_new; + spl_ce_IteratorIterator->default_object_handlers = &spl_handlers_dual_it; spl_ce_FilterIterator = register_class_FilterIterator(spl_ce_IteratorIterator); spl_ce_FilterIterator->create_object = spl_dual_it_new; diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c index 6d74329f4500e..ce7852618f875 100644 --- a/ext/spl/spl_observer.c +++ b/ext/spl/spl_observer.c @@ -265,8 +265,6 @@ static zend_object *spl_object_storage_new_ex(zend_class_entry *class_type, zend zend_hash_init(&intern->storage, 0, NULL, spl_object_storage_dtor, 0); - intern->std.handlers = &spl_handler_SplObjectStorage; - while (parent) { if (parent == spl_ce_SplObjectStorage) { /* Possible optimization: Cache these results with a map from class entry to IS_NULL/IS_PTR. @@ -645,13 +643,13 @@ PHP_METHOD(SplObjectStorage, contains) PHP_METHOD(SplObjectStorage, count) { spl_SplObjectStorage *intern = Z_SPLOBJSTORAGE_P(ZEND_THIS); - zend_long mode = COUNT_NORMAL; + zend_long mode = PHP_COUNT_NORMAL; if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &mode) == FAILURE) { RETURN_THROWS(); } - if (mode == COUNT_RECURSIVE) { + if (mode == PHP_COUNT_RECURSIVE) { RETURN_LONG(php_count_recursive(&intern->storage)); } @@ -1329,6 +1327,7 @@ PHP_MINIT_FUNCTION(spl_observer) spl_ce_SplObjectStorage = register_class_SplObjectStorage(zend_ce_countable, zend_ce_iterator, zend_ce_serializable, zend_ce_arrayaccess); spl_ce_SplObjectStorage->create_object = spl_SplObjectStorage_new; + spl_ce_SplObjectStorage->default_object_handlers = &spl_handler_SplObjectStorage; memcpy(&spl_handler_SplObjectStorage, &std_object_handlers, sizeof(zend_object_handlers)); @@ -1344,6 +1343,7 @@ PHP_MINIT_FUNCTION(spl_observer) spl_ce_MultipleIterator = register_class_MultipleIterator(zend_ce_iterator); spl_ce_MultipleIterator->create_object = spl_SplObjectStorage_new; + spl_ce_MultipleIterator->default_object_handlers = &spl_handler_SplObjectStorage; return SUCCESS; } diff --git a/ext/spl/tests/SplFileInfo_getExtension_basic-win32.phpt b/ext/spl/tests/SplFileInfo_getExtension_basic-win32.phpt new file mode 100644 index 0000000000000..5b1e2ed8ad8be --- /dev/null +++ b/ext/spl/tests/SplFileInfo_getExtension_basic-win32.phpt @@ -0,0 +1,33 @@ +--TEST-- +SPL: SplFileInfo::getExtension() basic test +--SKIPIF-- + +--FILE-- +getExtension(), pathinfo($file . $ext, PATHINFO_EXTENSION)); +} +?> +--CLEAN-- + +--EXPECT-- +string(3) "txt" +string(3) "txt" +string(9) "extension" +string(9) "extension" +string(0) "" +string(0) "" +string(0) "" +string(0) "" diff --git a/ext/spl/tests/SplFileInfo_getExtension_basic.phpt b/ext/spl/tests/SplFileInfo_getExtension_basic.phpt index 370257495b872..c75e0ed48ffb3 100644 --- a/ext/spl/tests/SplFileInfo_getExtension_basic.phpt +++ b/ext/spl/tests/SplFileInfo_getExtension_basic.phpt @@ -1,5 +1,9 @@ --TEST-- SPL: SplFileInfo::getExtension() basic test +--SKIPIF-- + --FILE-- foo = "bar"; + $ser = serialize($array); echo "$ser\n"; $unser = unserialize($ser); @@ -24,10 +26,24 @@ var_dump($unser[0], $unser[1], $unser[2], $unser[3], $unser[4]); $unser[4] = 'quux'; var_dump($unser[4]); +var_dump($unser->foo); + +// __unserialize is a no-op on a non-empty SplFixedArray +$array = new SplFixedArray(1); +$array->__unserialize([ + [1], + [ + "foo" => "bar", + ], +]); +var_dump($array); ?> ---EXPECT-- -O:13:"SplFixedArray":5:{i:0;s:3:"foo";i:1;N;i:2;i:42;i:3;O:8:"stdClass":1:{s:4:"prop";s:5:"value";}i:4;a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;}} +--EXPECTF-- +Deprecated: Creation of dynamic property SplFixedArray::$foo is deprecated in %s on line %d +O:13:"SplFixedArray":6:{i:0;s:3:"foo";i:1;N;i:2;i:42;i:3;O:8:"stdClass":1:{s:4:"prop";s:5:"value";}i:4;a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;i:5;}s:3:"foo";s:3:"bar";} + +Deprecated: Creation of dynamic property SplFixedArray::$foo is deprecated in %s on line %d count: 5 getSize(): 5 string(3) "foo" @@ -50,3 +66,8 @@ array(5) { int(5) } string(4) "quux" +string(3) "bar" +object(SplFixedArray)#5 (1) { + [0]=> + NULL +} diff --git a/ext/spl/tests/bug70155.phpt b/ext/spl/tests/bug70155.phpt index 0aa246cc2388f..a609205aca279 100644 --- a/ext/spl/tests/bug70155.phpt +++ b/ext/spl/tests/bug70155.phpt @@ -9,6 +9,8 @@ $data = unserialize($exploit); var_dump($data); ?> --EXPECTF-- +Deprecated: Creation of dynamic property ArrayObject::$0 is deprecated in %s on line %d + Fatal error: Uncaught InvalidArgumentException: Overloaded object of type DateInterval is not compatible with ArrayObject in %s Stack trace: %s diff --git a/ext/spl/tests/bug74669.phpt b/ext/spl/tests/bug74669.phpt index 0966a4cf27e15..597e694296d26 100644 --- a/ext/spl/tests/bug74669.phpt +++ b/ext/spl/tests/bug74669.phpt @@ -105,6 +105,8 @@ object(SelfArray)#9 (1) { string(3) "bar" } string(77) "O:9:"SelfArray":4:{i:0;i:16777216;i:1;N;i:2;a:1:{s:3:"foo";s:3:"bar";}i:3;N;}" + +Deprecated: Creation of dynamic property SelfArray::$foo is deprecated in %s on line %d object(SelfArray)#9 (1) { ["foo"]=> string(3) "bar" diff --git a/ext/spl/tests/gh8044.phpt b/ext/spl/tests/gh8044.phpt new file mode 100644 index 0000000000000..3567646954634 --- /dev/null +++ b/ext/spl/tests/gh8044.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug GH-8044 (var_export/debug_zval_dump HT_ASSERT_RC1 debug failure for SplFixedArray) +--FILE-- + +--EXPECTF-- +Warning: var_export does not handle circular references in %s on line 5 +\SplFixedArray::__set_state(array( + 0 => NULL, +)) +object(SplFixedArray)#2 (1) refcount(4){ + [0]=> + *RECURSION* +} diff --git a/ext/sqlite3/sqlite3.c b/ext/sqlite3/sqlite3.c index 4b9119d79cd35..1d00bc758ff0e 100644 --- a/ext/sqlite3/sqlite3.c +++ b/ext/sqlite3/sqlite3.c @@ -2298,8 +2298,6 @@ static zend_object *php_sqlite3_object_new(zend_class_entry *class_type) /* {{{ zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); - intern->zo.handlers = &sqlite3_object_handlers; - return &intern->zo; } /* }}} */ @@ -2314,8 +2312,6 @@ static zend_object *php_sqlite3_stmt_object_new(zend_class_entry *class_type) /* zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); - intern->zo.handlers = &sqlite3_stmt_object_handlers; - return &intern->zo; } /* }}} */ @@ -2330,8 +2326,6 @@ static zend_object *php_sqlite3_result_object_new(zend_class_entry *class_type) zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); - intern->zo.handlers = &sqlite3_result_object_handlers; - return &intern->zo; } /* }}} */ @@ -2373,6 +2367,7 @@ PHP_MINIT_FUNCTION(sqlite3) sqlite3_object_handlers.free_obj = php_sqlite3_object_free_storage; php_sqlite3_sc_entry = register_class_SQLite3(); php_sqlite3_sc_entry->create_object = php_sqlite3_object_new; + php_sqlite3_sc_entry->default_object_handlers = &sqlite3_object_handlers; /* Register SQLite 3 Prepared Statement Class */ sqlite3_stmt_object_handlers.offset = XtOffsetOf(php_sqlite3_stmt, zo); @@ -2380,6 +2375,7 @@ PHP_MINIT_FUNCTION(sqlite3) sqlite3_stmt_object_handlers.free_obj = php_sqlite3_stmt_object_free_storage; php_sqlite3_stmt_entry = register_class_SQLite3Stmt(); php_sqlite3_stmt_entry->create_object = php_sqlite3_stmt_object_new; + php_sqlite3_stmt_entry->default_object_handlers = &sqlite3_stmt_object_handlers; /* Register SQLite 3 Result Class */ sqlite3_result_object_handlers.offset = XtOffsetOf(php_sqlite3_result, zo); @@ -2387,6 +2383,7 @@ PHP_MINIT_FUNCTION(sqlite3) sqlite3_result_object_handlers.free_obj = php_sqlite3_result_object_free_storage; php_sqlite3_result_entry = register_class_SQLite3Result(); php_sqlite3_result_entry->create_object = php_sqlite3_result_object_new; + php_sqlite3_result_entry->default_object_handlers = &sqlite3_result_object_handlers; REGISTER_INI_ENTRIES(); @@ -2409,7 +2406,7 @@ PHP_MSHUTDOWN_FUNCTION(sqlite3) PHP_MINFO_FUNCTION(sqlite3) { php_info_print_table_start(); - php_info_print_table_header(2, "SQLite3 support", "enabled"); + php_info_print_table_row(2, "SQLite3 support", "enabled"); php_info_print_table_row(2, "SQLite Library", sqlite3_libversion()); php_info_print_table_end(); diff --git a/ext/sqlite3/sqlite3_arginfo.h b/ext/sqlite3/sqlite3_arginfo.h index 78c31ca581a8f..4091374dee78c 100644 --- a/ext/sqlite3/sqlite3_arginfo.h +++ b/ext/sqlite3/sqlite3_arginfo.h @@ -272,19 +272,19 @@ static const zend_function_entry class_SQLite3Result_methods[] = { static void register_sqlite3_symbols(int module_number) { - REGISTER_LONG_CONSTANT("SQLITE3_ASSOC", PHP_SQLITE3_ASSOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_NUM", PHP_SQLITE3_NUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_BOTH", PHP_SQLITE3_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_INTEGER", SQLITE_INTEGER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_FLOAT", SQLITE_FLOAT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_TEXT", SQLITE3_TEXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_BLOB", SQLITE_BLOB, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_NULL", SQLITE_NULL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_OPEN_READONLY", SQLITE_OPEN_READONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_OPEN_READWRITE", SQLITE_OPEN_READWRITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SQLITE3_OPEN_CREATE", SQLITE_OPEN_CREATE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_ASSOC", PHP_SQLITE3_ASSOC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_NUM", PHP_SQLITE3_NUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_BOTH", PHP_SQLITE3_BOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_INTEGER", SQLITE_INTEGER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_FLOAT", SQLITE_FLOAT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_TEXT", SQLITE3_TEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_BLOB", SQLITE_BLOB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_NULL", SQLITE_NULL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_OPEN_READONLY", SQLITE_OPEN_READONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_OPEN_READWRITE", SQLITE_OPEN_READWRITE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_OPEN_CREATE", SQLITE_OPEN_CREATE, CONST_PERSISTENT); #if defined(SQLITE_DETERMINISTIC) - REGISTER_LONG_CONSTANT("SQLITE3_DETERMINISTIC", SQLITE_DETERMINISTIC, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SQLITE3_DETERMINISTIC", SQLITE_DETERMINISTIC, CONST_PERSISTENT); #endif } diff --git a/ext/standard/array.c b/ext/standard/array.c index cf34085e14b7f..b03bea691ede6 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -44,18 +44,6 @@ #include "ext/random/php_random.h" /* {{{ defines */ -#define EXTR_OVERWRITE 0 -#define EXTR_SKIP 1 -#define EXTR_PREFIX_SAME 2 -#define EXTR_PREFIX_ALL 3 -#define EXTR_PREFIX_INVALID 4 -#define EXTR_PREFIX_IF_EXISTS 5 -#define EXTR_IF_EXISTS 6 - -#define EXTR_REFS 0x100 - -#define CASE_LOWER 0 -#define CASE_UPPER 1 #define DIFF_NORMAL 1 #define DIFF_KEY 2 @@ -89,34 +77,6 @@ PHP_MINIT_FUNCTION(array) /* {{{ */ { ZEND_INIT_MODULE_GLOBALS(array, php_array_init_globals, NULL); - REGISTER_LONG_CONSTANT("EXTR_OVERWRITE", EXTR_OVERWRITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("EXTR_SKIP", EXTR_SKIP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("EXTR_PREFIX_SAME", EXTR_PREFIX_SAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("EXTR_PREFIX_ALL", EXTR_PREFIX_ALL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("EXTR_PREFIX_INVALID", EXTR_PREFIX_INVALID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("EXTR_PREFIX_IF_EXISTS", EXTR_PREFIX_IF_EXISTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("EXTR_IF_EXISTS", EXTR_IF_EXISTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("EXTR_REFS", EXTR_REFS, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("SORT_ASC", PHP_SORT_ASC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORT_DESC", PHP_SORT_DESC, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("SORT_REGULAR", PHP_SORT_REGULAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORT_NUMERIC", PHP_SORT_NUMERIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORT_STRING", PHP_SORT_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORT_LOCALE_STRING", PHP_SORT_LOCALE_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORT_NATURAL", PHP_SORT_NATURAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SORT_FLAG_CASE", PHP_SORT_FLAG_CASE, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("CASE_LOWER", CASE_LOWER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CASE_UPPER", CASE_UPPER, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("COUNT_NORMAL", COUNT_NORMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("COUNT_RECURSIVE", COUNT_RECURSIVE, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_BOTH", ARRAY_FILTER_USE_BOTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_KEY", ARRAY_FILTER_USE_KEY, CONST_CS | CONST_PERSISTENT); - return SUCCESS; } /* }}} */ @@ -166,40 +126,25 @@ static zend_never_inline ZEND_COLD int stable_sort_fallback(Bucket *a, Bucket *b static zend_always_inline int php_array_key_compare_unstable_i(Bucket *f, Bucket *s) /* {{{ */ { - zend_uchar t; - zend_long l1, l2; - double d; + zval first; + zval second; - if (f->key == NULL) { - if (s->key == NULL) { - return (zend_long)f->h > (zend_long)s->h ? 1 : -1; - } else { - l1 = (zend_long)f->h; - t = is_numeric_string(s->key->val, s->key->len, &l2, &d, 1); - if (t == IS_LONG) { - /* pass */ - } else if (t == IS_DOUBLE) { - return ZEND_NORMALIZE_BOOL((double)l1 - d); - } else { - l2 = 0; - } - } - } else { - if (s->key) { - return zendi_smart_strcmp(f->key, s->key); - } else { - l2 = (zend_long)s->h; - t = is_numeric_string(f->key->val, f->key->len, &l1, &d, 1); - if (t == IS_LONG) { - /* pass */ - } else if (t == IS_DOUBLE) { - return ZEND_NORMALIZE_BOOL(d - (double)l2); - } else { - l1 = 0; - } - } - } - return ZEND_NORMALIZE_BOOL(l1 - l2); + if (f->key == NULL && s->key == NULL) { + return (zend_long)f->h > (zend_long)s->h ? 1 : -1; + } else if (f->key && s->key) { + return zendi_smart_strcmp(f->key, s->key); + } + if (f->key) { + ZVAL_STR(&first, f->key); + } else { + ZVAL_LONG(&first, f->h); + } + if (s->key) { + ZVAL_STR(&second, s->key); + } else { + ZVAL_LONG(&second, s->h); + } + return zend_compare(&first, &second); } /* }}} */ @@ -676,7 +621,7 @@ PHPAPI zend_long php_count_recursive(HashTable *ht) /* {{{ */ PHP_FUNCTION(count) { zval *array; - zend_long mode = COUNT_NORMAL; + zend_long mode = PHP_COUNT_NORMAL; zend_long cnt; ZEND_PARSE_PARAMETERS_START(1, 2) @@ -685,14 +630,14 @@ PHP_FUNCTION(count) Z_PARAM_LONG(mode) ZEND_PARSE_PARAMETERS_END(); - if (mode != COUNT_NORMAL && mode != COUNT_RECURSIVE) { + if (mode != PHP_COUNT_NORMAL && mode != PHP_COUNT_RECURSIVE) { zend_argument_value_error(2, "must be either COUNT_NORMAL or COUNT_RECURSIVE"); RETURN_THROWS(); } switch (Z_TYPE_P(array)) { case IS_ARRAY: - if (mode != COUNT_RECURSIVE) { + if (mode != PHP_COUNT_RECURSIVE) { cnt = zend_hash_num_elements(Z_ARRVAL_P(array)); } else { cnt = php_count_recursive(Z_ARRVAL_P(array)); @@ -2412,7 +2357,7 @@ PHP_FUNCTION(extract) { zval *var_array_param; zend_long extract_refs; - zend_long extract_type = EXTR_OVERWRITE; + zend_long extract_type = PHP_EXTR_OVERWRITE; zend_string *prefix = NULL; zend_long count; zend_array *symbol_table; @@ -2424,18 +2369,18 @@ PHP_FUNCTION(extract) Z_PARAM_STR(prefix) ZEND_PARSE_PARAMETERS_END(); - extract_refs = (extract_type & EXTR_REFS); + extract_refs = (extract_type & PHP_EXTR_REFS); if (extract_refs) { SEPARATE_ARRAY(var_array_param); } extract_type &= 0xff; - if (extract_type < EXTR_OVERWRITE || extract_type > EXTR_IF_EXISTS) { + if (extract_type < PHP_EXTR_OVERWRITE || extract_type > PHP_EXTR_IF_EXISTS) { zend_argument_value_error(2, "must be a valid extract type"); RETURN_THROWS(); } - if (extract_type > EXTR_SKIP && extract_type <= EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) { + if (extract_type > PHP_EXTR_SKIP && extract_type <= PHP_EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) { zend_argument_value_error(3, "is required when using this extract type"); RETURN_THROWS(); } @@ -2456,22 +2401,22 @@ PHP_FUNCTION(extract) if (extract_refs) { switch (extract_type) { - case EXTR_IF_EXISTS: + case PHP_EXTR_IF_EXISTS: count = php_extract_ref_if_exists(Z_ARRVAL_P(var_array_param), symbol_table); break; - case EXTR_OVERWRITE: + case PHP_EXTR_OVERWRITE: count = php_extract_ref_overwrite(Z_ARRVAL_P(var_array_param), symbol_table); break; - case EXTR_PREFIX_IF_EXISTS: + case PHP_EXTR_PREFIX_IF_EXISTS: count = php_extract_ref_prefix_if_exists(Z_ARRVAL_P(var_array_param), symbol_table, prefix); break; - case EXTR_PREFIX_SAME: + case PHP_EXTR_PREFIX_SAME: count = php_extract_ref_prefix_same(Z_ARRVAL_P(var_array_param), symbol_table, prefix); break; - case EXTR_PREFIX_ALL: + case PHP_EXTR_PREFIX_ALL: count = php_extract_ref_prefix_all(Z_ARRVAL_P(var_array_param), symbol_table, prefix); break; - case EXTR_PREFIX_INVALID: + case PHP_EXTR_PREFIX_INVALID: count = php_extract_ref_prefix_invalid(Z_ARRVAL_P(var_array_param), symbol_table, prefix); break; default: @@ -2483,22 +2428,22 @@ PHP_FUNCTION(extract) zval array_copy; ZVAL_COPY(&array_copy, var_array_param); switch (extract_type) { - case EXTR_IF_EXISTS: + case PHP_EXTR_IF_EXISTS: count = php_extract_if_exists(Z_ARRVAL(array_copy), symbol_table); break; - case EXTR_OVERWRITE: + case PHP_EXTR_OVERWRITE: count = php_extract_overwrite(Z_ARRVAL(array_copy), symbol_table); break; - case EXTR_PREFIX_IF_EXISTS: + case PHP_EXTR_PREFIX_IF_EXISTS: count = php_extract_prefix_if_exists(Z_ARRVAL(array_copy), symbol_table, prefix); break; - case EXTR_PREFIX_SAME: + case PHP_EXTR_PREFIX_SAME: count = php_extract_prefix_same(Z_ARRVAL(array_copy), symbol_table, prefix); break; - case EXTR_PREFIX_ALL: + case PHP_EXTR_PREFIX_ALL: count = php_extract_prefix_all(Z_ARRVAL(array_copy), symbol_table, prefix); break; - case EXTR_PREFIX_INVALID: + case PHP_EXTR_PREFIX_INVALID: count = php_extract_prefix_invalid(Z_ARRVAL(array_copy), symbol_table, prefix); break; default: @@ -5718,7 +5663,7 @@ PHP_FUNCTION(array_multisort) /* Make sure the arrays are of the same size. */ array_size = zend_hash_num_elements(Z_ARRVAL_P(arrays[0])); - for (i = 0; i < num_arrays; i++) { + for (i = 1; i < num_arrays; i++) { if (zend_hash_num_elements(Z_ARRVAL_P(arrays[i])) != (uint32_t)array_size) { zend_value_error("Array sizes are inconsistent"); MULTISORT_ABORT; @@ -5791,6 +5736,8 @@ PHP_FUNCTION(array_multisort) } if (repack) { zend_hash_to_packed(hash); + } else { + zend_hash_rehash(hash); } } } diff --git a/ext/standard/base64.c b/ext/standard/base64.c index 7a237d09ecc2e..3893438839aee 100644 --- a/ext/standard/base64.c +++ b/ext/standard/base64.c @@ -51,7 +51,7 @@ static const short base64_reverse_table[256] = { }; /* }}} */ -#ifdef __aarch64__ +#if defined(__aarch64__) || defined(_M_ARM64) #include static zend_always_inline uint8x16_t encode_toascii(const uint8x16_t input, const uint8x16x2_t shift_LUT) @@ -118,11 +118,11 @@ static zend_always_inline unsigned char *neon_base64_encode(const unsigned char *left = inl; return out; } -#endif /* __aarch64__ */ +#endif /* defined(__aarch64__) || defined(_M_ARM64) */ static zend_always_inline unsigned char *php_base64_encode_impl(const unsigned char *in, size_t inl, unsigned char *out) /* {{{ */ { -#ifdef __aarch64__ +#if defined(__aarch64__) || defined(_M_ARM64) if (inl >= 16 * 3) { size_t left = 0; out = neon_base64_encode(in, inl, out, &left); @@ -161,7 +161,7 @@ static zend_always_inline unsigned char *php_base64_encode_impl(const unsigned c } /* }}} */ -#ifdef __aarch64__ +#if defined(__aarch64__) || defined(_M_ARM64) static zend_always_inline uint8x16_t decode_fromascii(const uint8x16_t input, uint8x16_t *error, const uint8x16x2_t shiftLUT, const uint8x16x2_t maskLUT, const uint8x16x2_t bitposLUT) { const uint8x16_t higher_nibble = vshrq_n_u8(input, 4); const uint8x16_t lower_nibble = vandq_u8(input, vdupq_n_u8(0x0f)); @@ -241,14 +241,14 @@ static zend_always_inline size_t neon_base64_decode(const unsigned char *in, siz *left = inl; return out - out_orig; } -#endif /* __aarch64__ */ +#endif /* defined(__aarch64__) || defined(_M_ARM64) */ static zend_always_inline int php_base64_decode_impl(const unsigned char *in, size_t inl, unsigned char *out, size_t *outl, bool strict) /* {{{ */ { int ch; size_t i = 0, padding = 0, j = *outl; -#ifdef __aarch64__ +#if defined(__aarch64__) || defined(_M_ARM64) if (inl >= 16 * 4) { size_t left = 0; j += neon_base64_decode(in, inl, out, &left); diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 826c635e6dbfc..713af33e0674f 100755 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -21,11 +21,13 @@ #include "php_globals.h" #include "php_variables.h" #include "php_ini.h" +#include "php_image.h" #include "php_standard.h" #include "php_math.h" #include "php_http.h" #include "php_incomplete_class.h" #include "php_getopt.h" +#include "php_ext_syslog.h" #include "ext/standard/info.h" #include "ext/session/php_session.h" #include "zend_exceptions.h" @@ -296,55 +298,6 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ assertion_error_ce = register_class_AssertionError(zend_ce_error); - REGISTER_LONG_CONSTANT("CONNECTION_ABORTED", PHP_CONNECTION_ABORTED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CONNECTION_NORMAL", PHP_CONNECTION_NORMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("CONNECTION_TIMEOUT", PHP_CONNECTION_TIMEOUT, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("INI_USER", ZEND_INI_USER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INI_PERDIR", ZEND_INI_PERDIR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INI_SYSTEM", ZEND_INI_SYSTEM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INI_ALL", ZEND_INI_ALL, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("INI_SCANNER_NORMAL", ZEND_INI_SCANNER_NORMAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INI_SCANNER_RAW", ZEND_INI_SCANNER_RAW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("INI_SCANNER_TYPED", ZEND_INI_SCANNER_TYPED, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("PHP_URL_SCHEME", PHP_URL_SCHEME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_URL_HOST", PHP_URL_HOST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_URL_PORT", PHP_URL_PORT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_URL_USER", PHP_URL_USER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_URL_PASS", PHP_URL_PASS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_URL_PATH", PHP_URL_PATH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_URL_QUERY", PHP_URL_QUERY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_URL_FRAGMENT", PHP_URL_FRAGMENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_QUERY_RFC1738", PHP_QUERY_RFC1738, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_QUERY_RFC3986", PHP_QUERY_RFC3986, CONST_CS | CONST_PERSISTENT); - -#define REGISTER_MATH_CONSTANT(x) REGISTER_DOUBLE_CONSTANT(#x, x, CONST_CS | CONST_PERSISTENT) - REGISTER_MATH_CONSTANT(M_LOG2E); - REGISTER_MATH_CONSTANT(M_LOG10E); - REGISTER_MATH_CONSTANT(M_LN2); - REGISTER_MATH_CONSTANT(M_LN10); - REGISTER_MATH_CONSTANT(M_PI); - REGISTER_MATH_CONSTANT(M_PI_2); - REGISTER_MATH_CONSTANT(M_PI_4); - REGISTER_MATH_CONSTANT(M_1_PI); - REGISTER_MATH_CONSTANT(M_2_PI); - REGISTER_MATH_CONSTANT(M_SQRTPI); - REGISTER_MATH_CONSTANT(M_2_SQRTPI); - REGISTER_MATH_CONSTANT(M_LNPI); - REGISTER_MATH_CONSTANT(M_EULER); - REGISTER_MATH_CONSTANT(M_SQRT2); - REGISTER_MATH_CONSTANT(M_SQRT1_2); - REGISTER_MATH_CONSTANT(M_SQRT3); - REGISTER_DOUBLE_CONSTANT("INF", ZEND_INFINITY, CONST_CS | CONST_PERSISTENT); - REGISTER_DOUBLE_CONSTANT("NAN", ZEND_NAN, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_UP", PHP_ROUND_HALF_UP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_DOWN", PHP_ROUND_HALF_DOWN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_EVEN", PHP_ROUND_HALF_EVEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_ODD", PHP_ROUND_HALF_ODD, CONST_CS | CONST_PERSISTENT); - #ifdef ENABLE_TEST_CLASS test_class_startup(); #endif @@ -396,7 +349,6 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ BASIC_MINIT_SUBMODULE(exec) BASIC_MINIT_SUBMODULE(user_streams) - BASIC_MINIT_SUBMODULE(imagetypes) php_register_url_stream_wrapper("php", &php_stream_php_wrapper); php_register_url_stream_wrapper("file", &php_plain_files_wrapper); @@ -407,12 +359,6 @@ PHP_MINIT_FUNCTION(basic) /* {{{ */ php_register_url_stream_wrapper("http", &php_stream_http_wrapper); php_register_url_stream_wrapper("ftp", &php_stream_ftp_wrapper); -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) -# if defined(PHP_WIN32) || defined(HAVE_FULL_DNS_FUNCS) - BASIC_MINIT_SUBMODULE(dns) -# endif -#endif - BASIC_MINIT_SUBMODULE(hrtime) return SUCCESS; diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index de6a7f06e2e44..7e6f9d8afbec3 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -2,12 +2,746 @@ /** @generate-class-entries */ +/* array.c */ + +/** + * @var int + * @cvalue PHP_EXTR_OVERWRITE + */ +const EXTR_OVERWRITE = UNKNOWN; +/** + * @var int + * @cvalue PHP_EXTR_SKIP + */ +const EXTR_SKIP = UNKNOWN; +/** + * @var int + * @cvalue PHP_EXTR_PREFIX_SAME + */ +const EXTR_PREFIX_SAME = UNKNOWN; +/** + * @var int + * @cvalue PHP_EXTR_PREFIX_ALL + */ +const EXTR_PREFIX_ALL = UNKNOWN; +/** + * @var int + * @cvalue PHP_EXTR_PREFIX_INVALID + */ +const EXTR_PREFIX_INVALID = UNKNOWN; +/** + * @var int + * @cvalue PHP_EXTR_PREFIX_IF_EXISTS + */ +const EXTR_PREFIX_IF_EXISTS = UNKNOWN; +/** + * @var int + * @cvalue PHP_EXTR_IF_EXISTS + */ +const EXTR_IF_EXISTS = UNKNOWN; +/** + * @var int + * @cvalue PHP_EXTR_REFS + */ +const EXTR_REFS = UNKNOWN; + +/** + * @var int + * @cvalue PHP_SORT_ASC + */ +const SORT_ASC = UNKNOWN; +/** + * @var int + * @cvalue PHP_SORT_DESC + */ +const SORT_DESC = UNKNOWN; + +/** + * @var int + * @cvalue PHP_SORT_REGULAR + */ +const SORT_REGULAR = UNKNOWN; +/** + * @var int + * @cvalue PHP_SORT_NUMERIC + */ +const SORT_NUMERIC = UNKNOWN; +/** + * @var int + * @cvalue PHP_SORT_STRING + */ +const SORT_STRING = UNKNOWN; +/** + * @var int + * @cvalue PHP_SORT_LOCALE_STRING + */ +const SORT_LOCALE_STRING = UNKNOWN; +/** + * @var int + * @cvalue PHP_SORT_NATURAL + */ +const SORT_NATURAL = UNKNOWN; +/** + * @var int + * @cvalue PHP_SORT_FLAG_CASE + */ +const SORT_FLAG_CASE = UNKNOWN; + +/** + * @var int + * @cvalue PHP_CASE_LOWER + */ +const CASE_LOWER = UNKNOWN; +/** + * @var int + * @cvalue PHP_CASE_UPPER + */ +const CASE_UPPER = UNKNOWN; + +/** + * @var int + * @cvalue PHP_COUNT_NORMAL + */ +const COUNT_NORMAL = UNKNOWN; +/** + * @var int + * @cvalue PHP_COUNT_RECURSIVE + */ +const COUNT_RECURSIVE = UNKNOWN; + +/** + * @var int + * @cvalue ARRAY_FILTER_USE_BOTH + */ +const ARRAY_FILTER_USE_BOTH = UNKNOWN; +/** + * @var int + * @cvalue ARRAY_FILTER_USE_KEY + */ +const ARRAY_FILTER_USE_KEY = UNKNOWN; + +/* basic_functions.h */ + +/** + * @var int + * @cvalue PHP_CONNECTION_ABORTED + */ +const CONNECTION_ABORTED = UNKNOWN; +/** + * @var int + * @cvalue PHP_CONNECTION_NORMAL + */ +const CONNECTION_NORMAL = UNKNOWN; +/** + * @var int + * @cvalue PHP_CONNECTION_TIMEOUT + */ +const CONNECTION_TIMEOUT = UNKNOWN; + +/** + * @var int + * @cvalue ZEND_INI_USER + */ +const INI_USER = UNKNOWN; +/** + * @var int + * @cvalue ZEND_INI_PERDIR + */ +const INI_PERDIR = UNKNOWN; +/** + * @var int + * @cvalue ZEND_INI_SYSTEM + */ +const INI_SYSTEM = UNKNOWN; +/** + * @var int + * @cvalue ZEND_INI_ALL + */ +const INI_ALL = UNKNOWN; + +/** + * @var int + * @cvalue ZEND_INI_SCANNER_NORMAL + */ +const INI_SCANNER_NORMAL = UNKNOWN; +/** + * @var int + * @cvalue ZEND_INI_SCANNER_RAW + */ +const INI_SCANNER_RAW = UNKNOWN; +/** + * @var int + * @cvalue ZEND_INI_SCANNER_TYPED + */ +const INI_SCANNER_TYPED = UNKNOWN; + +/** + * @var int + * @cvalue PHP_URL_SCHEME + */ +const PHP_URL_SCHEME = UNKNOWN; +/** + * @var int + * @cvalue PHP_URL_HOST + */ +const PHP_URL_HOST = UNKNOWN; +/** + * @var int + * @cvalue PHP_URL_PORT + */ +const PHP_URL_PORT = UNKNOWN; +/** + * @var int + * @cvalue PHP_URL_USER + */ +const PHP_URL_USER = UNKNOWN; +/** + * @var int + * @cvalue PHP_URL_PASS + */ +const PHP_URL_PASS = UNKNOWN; +/** + * @var int + * @cvalue PHP_URL_PATH + */ +const PHP_URL_PATH = UNKNOWN; +/** + * @var int + * @cvalue PHP_URL_QUERY + */ +const PHP_URL_QUERY = UNKNOWN; +/** + * @var int + * @cvalue PHP_URL_FRAGMENT + */ +const PHP_URL_FRAGMENT = UNKNOWN; +/** + * @var int + * @cvalue PHP_QUERY_RFC1738 + */ +const PHP_QUERY_RFC1738 = UNKNOWN; +/** + * @var int + * @cvalue PHP_QUERY_RFC3986 + */ +const PHP_QUERY_RFC3986 = UNKNOWN; + /** * @var float * @cvalue M_E */ const M_E = 2.718281828459045; +/** + * @var float + * @cvalue M_LOG2E + */ +const M_LOG2E = 1.4426950408889634074; +/** + * @var float + * @cvalue M_LOG10E + */ +const M_LOG10E = 0.43429448190325182765; +/** + * @var float + * @cvalue M_LN2 + */ +const M_LN2 = 0.69314718055994530942; +/** + * @var float + * @cvalue M_LN10 + */ +const M_LN10 = 2.30258509299404568402; +/** + * @var float + * @cvalue M_PI + */ +const M_PI = 3.14159265358979323846; +/** + * @var float + * @cvalue M_PI_2 + */ +const M_PI_2 = 1.57079632679489661923; +/** + * @var float + * @cvalue M_PI_4 + */ +const M_PI_4 = 0.78539816339744830962; +/** + * @var float + * @cvalue M_1_PI + */ +const M_1_PI = 0.31830988618379067154; +/** + * @var float + * @cvalue M_2_PI + */ +const M_2_PI = 0.63661977236758134308; +/** + * @var float + * @cvalue M_SQRTPI + */ +const M_SQRTPI = 1.77245385090551602729; +/** + * @var float + * @cvalue M_2_SQRTPI + */ +const M_2_SQRTPI = 1.12837916709551257390; +/** + * @var float + * @cvalue M_LNPI + */ +const M_LNPI = 1.14472988584940017414; +/** + * @var float + * @cvalue M_EULER + */ +const M_EULER = 0.57721566490153286061; +/** + * @var float + * @cvalue M_SQRT2 + */ +const M_SQRT2 = 1.41421356237309504880; +/** + * @var float + * @cvalue M_SQRT1_2 + */ +const M_SQRT1_2 = 0.70710678118654752440; +/** + * @var float + * @cvalue M_SQRT3 + */ +const M_SQRT3 = 1.73205080756887729352; +/** + * @var float + * @cvalue ZEND_INFINITY + */ +const INF = UNKNOWN; +/** + * @var float + * @cvalue ZEND_NAN + */ +const NAN = UNKNOWN; + +/** + * @var int + * @cvalue PHP_ROUND_HALF_UP + */ +const PHP_ROUND_HALF_UP = UNKNOWN; +/** + * @var int + * @cvalue PHP_ROUND_HALF_DOWN + */ +const PHP_ROUND_HALF_DOWN = UNKNOWN; +/** + * @var int + * @cvalue PHP_ROUND_HALF_EVEN + */ +const PHP_ROUND_HALF_EVEN = UNKNOWN; +/** + * @var int + * @cvalue PHP_ROUND_HALF_ODD + */ +const PHP_ROUND_HALF_ODD = UNKNOWN; + +/* dns.c */ + +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) +/** + * @var int + * @cvalue PHP_DNS_A + */ +const DNS_A = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_NS + */ +const DNS_NS = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_CNAME + */ +const DNS_CNAME = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_SOA + */ +const DNS_SOA = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_PTR + */ +const DNS_PTR = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_HINFO + */ +const DNS_HINFO = UNKNOWN; +#if (!defined(PHP_WIN32)) +/** + * @var int + * @cvalue PHP_DNS_CAA + */ +const DNS_CAA = UNKNOWN; +#endif +/** + * @var int + * @cvalue PHP_DNS_MX + */ +const DNS_MX = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_TXT + */ +const DNS_TXT = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_SRV + */ +const DNS_SRV = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_NAPTR + */ +const DNS_NAPTR = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_AAAA + */ +const DNS_AAAA = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_A6 + */ +const DNS_A6 = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_ANY + */ +const DNS_ANY = UNKNOWN; +/** + * @var int + * @cvalue PHP_DNS_ALL + */ +const DNS_ALL = UNKNOWN; +#endif + +/* image.c */ + +/** + * @var int + * @cvalue IMAGE_FILETYPE_GIF + */ +const IMAGETYPE_GIF = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_JPEG + */ +const IMAGETYPE_JPEG = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_PNG + */ +const IMAGETYPE_PNG = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_SWF + */ +const IMAGETYPE_SWF = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_PSD + */ +const IMAGETYPE_PSD = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_BMP + */ +const IMAGETYPE_BMP = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_TIFF_II + */ +const IMAGETYPE_TIFF_II = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_TIFF_MM + */ +const IMAGETYPE_TIFF_MM = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_JPC + */ +const IMAGETYPE_JPC = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_JP2 + */ +const IMAGETYPE_JP2 = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_JPX + */ +const IMAGETYPE_JPX = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_JB2 + */ +const IMAGETYPE_JB2 = UNKNOWN; +#if (defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB)) +/** + * @var int + * @cvalue IMAGE_FILETYPE_SWC + */ +const IMAGETYPE_SWC = UNKNOWN; +#endif +/** + * @var int + * @cvalue IMAGE_FILETYPE_IFF + */ +const IMAGETYPE_IFF = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_WBMP + */ +const IMAGETYPE_WBMP = UNKNOWN; +/* keep alias */ +/** + * @var int + * @cvalue IMAGE_FILETYPE_JPC + */ +const IMAGETYPE_JPEG2000 = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_XBM + */ +const IMAGETYPE_XBM = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_ICO + */ +const IMAGETYPE_ICO = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_WEBP + */ +const IMAGETYPE_WEBP = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_AVIF + */ +const IMAGETYPE_AVIF = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_UNKNOWN + */ +const IMAGETYPE_UNKNOWN = UNKNOWN; +/** + * @var int + * @cvalue IMAGE_FILETYPE_COUNT + */ +const IMAGETYPE_COUNT = UNKNOWN; + +/* syslog.c */ + +/* error levels */ + +/** + * system unusable + * @var int + * @cvalue LOG_EMERG + */ +const LOG_EMERG = UNKNOWN; +/** + * immediate action required + * @var int + * @cvalue LOG_ALERT + */ +const LOG_ALERT = UNKNOWN; +/** + * critical conditions + * @var int + * @cvalue LOG_CRIT + */ +const LOG_CRIT = UNKNOWN; +/** + * @var int + * @cvalue LOG_ERR + */ +const LOG_ERR = UNKNOWN; +/** + * @var int + * @cvalue LOG_WARNING + */ +const LOG_WARNING = UNKNOWN; +/** + * @var int + * @cvalue LOG_NOTICE + */ +const LOG_NOTICE = UNKNOWN; +/** + * @var int + * @cvalue LOG_INFO + */ +const LOG_INFO = UNKNOWN; +/** + * @var int + * @cvalue LOG_DEBUG + */ +const LOG_DEBUG = UNKNOWN; +/* facility: type of program logging the message */ +/** + * @var int + * @cvalue LOG_KERN + */ +const LOG_KERN = UNKNOWN; +/** + * generic user level + * @var int + * @cvalue LOG_USER + */ +const LOG_USER = UNKNOWN; +/** + * log to email + * @var int + * @cvalue LOG_MAIL + */ +const LOG_MAIL = UNKNOWN; +/** + * other system daemons + * @var int + * @cvalue LOG_DAEMON + */ +const LOG_DAEMON = UNKNOWN; +/** + * @var int + * @cvalue LOG_AUTH + */ +const LOG_AUTH = UNKNOWN; +/** + * @var int + * @cvalue LOG_SYSLOG + */ +const LOG_SYSLOG = UNKNOWN; +/** + * @var int + * @cvalue LOG_LPR + */ +const LOG_LPR = UNKNOWN; +#ifdef LOG_NEWS +/* No LOG_NEWS on HP-UX */ +/** + * usenet new + * @var int + * @cvalue LOG_NEWS + */ +const LOG_NEWS = UNKNOWN; +#endif +#ifdef LOG_UUCP +/* No LOG_UUCP on HP-UX */ +/** + * @var int + * @cvalue LOG_UUCP + */ +const LOG_UUCP = UNKNOWN; +#endif +#ifdef LOG_CRON +/* apparently some systems don't have this one */ +/** + * @var int + * @cvalue LOG_CRON + */ +const LOG_CRON = UNKNOWN; +#endif +#ifdef LOG_AUTHPRIV +/* AIX doesn't have LOG_AUTHPRIV */ +/** + * @var int + * @cvalue LOG_AUTHPRIV + */ +const LOG_AUTHPRIV = UNKNOWN; +#endif +#ifndef PHP_WIN32 +/** + * @var int + * @cvalue LOG_LOCAL0 + */ +const LOG_LOCAL0 = UNKNOWN; +/** + * @var int + * @cvalue LOG_LOCAL1 + */ +const LOG_LOCAL1 = UNKNOWN; +/** + * @var int + * @cvalue LOG_LOCAL2 + */ +const LOG_LOCAL2 = UNKNOWN; +/** + * @var int + * @cvalue LOG_LOCAL3 + */ +const LOG_LOCAL3 = UNKNOWN; +/** + * @var int + * @cvalue LOG_LOCAL4 + */ +const LOG_LOCAL4 = UNKNOWN; +/** + * @var int + * @cvalue LOG_LOCAL5 + */ +const LOG_LOCAL5 = UNKNOWN; +/** + * @var int + * @cvalue LOG_LOCAL6 + */ +const LOG_LOCAL6 = UNKNOWN; +/** + * @var int + * @cvalue LOG_LOCAL7 + */ +const LOG_LOCAL7 = UNKNOWN; +#endif +/* options */ +/** + * @var int + * @cvalue LOG_PID + */ +const LOG_PID = UNKNOWN; +/** + * @var int + * @cvalue LOG_CONS + */ +const LOG_CONS = UNKNOWN; +/** + * @var int + * @cvalue LOG_ODELAY + */ +const LOG_ODELAY = UNKNOWN; +/** + * @var int + * @cvalue LOG_NDELAY + */ +const LOG_NDELAY = UNKNOWN; +#ifdef LOG_NOWAIT +/** + * @var int + * @cvalue LOG_NOWAIT + */ +const LOG_NOWAIT = UNKNOWN; +#endif +#ifdef LOG_PERROR +/* AIX doesn't have LOG_PERROR */ +/** + * log to stderr + * @var int + * @cvalue LOG_PERROR + */ +const LOG_PERROR = UNKNOWN; +#endif +/** @undocumentable */ +#[AllowDynamicProperties] final class __PHP_Incomplete_Class { } @@ -575,7 +1309,7 @@ function crc32(string $string): int {} /* crypt.c */ /** @refcount 1 */ -function crypt(string $string, string $salt): string {} +function crypt(#[\SensitiveParameter] string $string, string $salt): string {} /* datetime.c */ @@ -607,7 +1341,7 @@ function gethostbyname(string $hostname): string {} */ function gethostbynamel(string $hostname): array|false {} -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) function dns_check_record(string $hostname, string $type = "MX"): bool {} /** @alias dns_check_record */ @@ -637,7 +1371,7 @@ function getmxrr(string $hostname, &$hosts, &$weights = null): bool {} /* net.c */ -#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__) +#if (defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__)) function net_get_interfaces(): array|false {} #endif @@ -682,7 +1416,7 @@ function sha1_file(string $filename, bool $binary = false): string|false {} /* syslog.c */ #ifdef HAVE_SYSLOG_H -function openlog(string $prefix, int $flags, int $facility): bool {} +function openlog(string $prefix, int $flags, int $facility): true {} function closelog(): true {} @@ -1036,7 +1770,7 @@ function closedir($dir_handle = null): void {} function chdir(string $directory): bool {} -#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) +#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC)) function chroot(string $directory): bool {} #endif @@ -1453,7 +2187,7 @@ function levenshtein(string $string1, string $string2, int $insertion_cost = 1, /* link.c */ -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) /** @refcount 1 */ function readlink(string $path): string|false {} @@ -1857,7 +2591,7 @@ function sapi_windows_vt100_support($stream, ?bool $enable = null): bool {} /** @param resource $stream */ function stream_set_chunk_size($stream, int $size): int {} -#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32)) /** @param resource $stream */ function stream_set_timeout($stream, int $seconds, int $microseconds = 0): bool {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 2ba05ada5500d..e76e056f3e81e 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 the .stub.php file instead. - * Stub hash: 2615114ae250af0329b861d82f4100c2757457da */ + * Stub hash: 9e0016895111851aa2c635e1380a18cd7963e58e */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -632,18 +632,18 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_gethostbynamel, 0, 1, MAY_BE_ARR ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_END_ARG_INFO() -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_check_record, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_STRING, 0, "\"MX\"") ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) #define arginfo_checkdnsrr arginfo_dns_check_record #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_dns_get_record, 0, 1, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "DNS_ANY") @@ -653,7 +653,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_dns_get_record, 0, 1, MAY_BE_ARR ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_get_mx, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, hostname, IS_STRING, 0) ZEND_ARG_INFO(1, hosts) @@ -661,11 +661,11 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dns_get_mx, 0, 2, _IS_BOOL, 0) ZEND_END_ARG_INFO() #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) #define arginfo_getmxrr arginfo_dns_get_mx #endif -#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__) +#if (defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_net_get_interfaces, 0, 0, MAY_BE_ARRAY|MAY_BE_FALSE) ZEND_END_ARG_INFO() #endif @@ -706,7 +706,7 @@ ZEND_END_ARG_INFO() #define arginfo_sha1_file arginfo_md5_file #if defined(HAVE_SYSLOG_H) -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openlog, 0, 3, _IS_BOOL, 0) +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openlog, 0, 3, IS_TRUE, 0) ZEND_ARG_TYPE_INFO(0, prefix, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0) ZEND_ARG_TYPE_INFO(0, facility, IS_LONG, 0) @@ -1119,7 +1119,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chdir, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0) ZEND_END_ARG_INFO() -#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) +#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chroot, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, directory, IS_STRING, 0) ZEND_END_ARG_INFO() @@ -1573,26 +1573,26 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_levenshtein, 0, 2, IS_LONG, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, deletion_cost, IS_LONG, 0, "1") ZEND_END_ARG_INFO() -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_readlink, 0, 1, MAY_BE_STRING|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_linkinfo, 0, 1, MAY_BE_LONG|MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_symlink, 0, 2, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO(0, target, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, link, IS_STRING, 0) ZEND_END_ARG_INFO() #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) #define arginfo_link arginfo_symlink #endif @@ -2001,7 +2001,7 @@ ZEND_END_ARG_INFO() #define arginfo_stream_set_chunk_size arginfo_stream_set_write_buffer -#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32)) ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_timeout, 0, 2, _IS_BOOL, 0) ZEND_ARG_INFO(0, stream) ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0) @@ -2009,7 +2009,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_stream_set_timeout, 0, 2, _IS_BO ZEND_END_ARG_INFO() #endif -#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32)) #define arginfo_socket_set_timeout arginfo_stream_set_timeout #endif @@ -2380,16 +2380,16 @@ ZEND_FUNCTION(gethostname); ZEND_FUNCTION(gethostbyaddr); ZEND_FUNCTION(gethostbyname); ZEND_FUNCTION(gethostbynamel); -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FUNCTION(dns_check_record); #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FUNCTION(dns_get_record); #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FUNCTION(dns_get_mx); #endif -#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__) +#if (defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__)) ZEND_FUNCTION(net_get_interfaces); #endif #if defined(HAVE_FTOK) @@ -2509,7 +2509,7 @@ ZEND_FUNCTION(opendir); ZEND_FUNCTION(dir); ZEND_FUNCTION(closedir); ZEND_FUNCTION(chdir); -#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) +#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC)) ZEND_FUNCTION(chroot); #endif ZEND_FUNCTION(getcwd); @@ -2626,16 +2626,16 @@ ZEND_FUNCTION(php_ini_loaded_file); ZEND_FUNCTION(iptcembed); ZEND_FUNCTION(iptcparse); ZEND_FUNCTION(levenshtein); -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FUNCTION(readlink); #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FUNCTION(linkinfo); #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FUNCTION(symlink); #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FUNCTION(link); #endif ZEND_FUNCTION(mail); @@ -2753,7 +2753,7 @@ ZEND_FUNCTION(stream_isatty); ZEND_FUNCTION(sapi_windows_vt100_support); #endif ZEND_FUNCTION(stream_set_chunk_size); -#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32)) ZEND_FUNCTION(stream_set_timeout); #endif ZEND_FUNCTION(gettype); @@ -3006,22 +3006,22 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(gethostbyaddr, arginfo_gethostbyaddr) ZEND_FE(gethostbyname, arginfo_gethostbyname) ZEND_FE(gethostbynamel, arginfo_gethostbynamel) -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FE(dns_check_record, arginfo_dns_check_record) #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FALIAS(checkdnsrr, dns_check_record, arginfo_checkdnsrr) #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FE(dns_get_record, arginfo_dns_get_record) #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FE(dns_get_mx, arginfo_dns_get_mx) #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) +#if (defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC)) ZEND_FALIAS(getmxrr, dns_get_mx, arginfo_getmxrr) #endif -#if defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__) +#if (defined(PHP_WIN32) || HAVE_GETIFADDRS || defined(__PASE__)) ZEND_FE(net_get_interfaces, arginfo_net_get_interfaces) #endif #if defined(HAVE_FTOK) @@ -3144,7 +3144,7 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(dir, arginfo_dir) ZEND_FE(closedir, arginfo_closedir) ZEND_FE(chdir, arginfo_chdir) -#if defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC) +#if (defined(HAVE_CHROOT) && !defined(ZTS) && defined(ENABLE_CHROOT_FUNC)) ZEND_FE(chroot, arginfo_chroot) #endif ZEND_FE(getcwd, arginfo_getcwd) @@ -3264,16 +3264,16 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(iptcembed, arginfo_iptcembed) ZEND_FE(iptcparse, arginfo_iptcparse) ZEND_FE(levenshtein, arginfo_levenshtein) -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FE(readlink, arginfo_readlink) #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FE(linkinfo, arginfo_linkinfo) #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FE(symlink, arginfo_symlink) #endif -#if defined(HAVE_SYMLINK) || defined(PHP_WIN32) +#if (defined(HAVE_SYMLINK) || defined(PHP_WIN32)) ZEND_FE(link, arginfo_link) #endif ZEND_FE(mail, arginfo_mail) @@ -3394,10 +3394,10 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(sapi_windows_vt100_support, arginfo_sapi_windows_vt100_support) #endif ZEND_FE(stream_set_chunk_size, arginfo_stream_set_chunk_size) -#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32)) ZEND_FE(stream_set_timeout, arginfo_stream_set_timeout) #endif -#if defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32) +#if (defined(HAVE_SYS_TIME_H) || defined(PHP_WIN32)) ZEND_FALIAS(socket_set_timeout, stream_set_timeout, arginfo_socket_set_timeout) #endif ZEND_FE(gettype, arginfo_gettype) @@ -3483,9 +3483,221 @@ static const zend_function_entry class_AssertionError_methods[] = { static void register_basic_functions_symbols(int module_number) { - REGISTER_DOUBLE_CONSTANT("M_E", M_E, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_OVERWRITE", PHP_EXTR_OVERWRITE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_SKIP", PHP_EXTR_SKIP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_PREFIX_SAME", PHP_EXTR_PREFIX_SAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_PREFIX_ALL", PHP_EXTR_PREFIX_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_PREFIX_INVALID", PHP_EXTR_PREFIX_INVALID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_PREFIX_IF_EXISTS", PHP_EXTR_PREFIX_IF_EXISTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_IF_EXISTS", PHP_EXTR_IF_EXISTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("EXTR_REFS", PHP_EXTR_REFS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_ASC", PHP_SORT_ASC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_DESC", PHP_SORT_DESC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_REGULAR", PHP_SORT_REGULAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_NUMERIC", PHP_SORT_NUMERIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_STRING", PHP_SORT_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_LOCALE_STRING", PHP_SORT_LOCALE_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_NATURAL", PHP_SORT_NATURAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("SORT_FLAG_CASE", PHP_SORT_FLAG_CASE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CASE_LOWER", PHP_CASE_LOWER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CASE_UPPER", PHP_CASE_UPPER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("COUNT_NORMAL", PHP_COUNT_NORMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("COUNT_RECURSIVE", PHP_COUNT_RECURSIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_BOTH", ARRAY_FILTER_USE_BOTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_KEY", ARRAY_FILTER_USE_KEY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CONNECTION_ABORTED", PHP_CONNECTION_ABORTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CONNECTION_NORMAL", PHP_CONNECTION_NORMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CONNECTION_TIMEOUT", PHP_CONNECTION_TIMEOUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INI_USER", ZEND_INI_USER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INI_PERDIR", ZEND_INI_PERDIR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INI_SYSTEM", ZEND_INI_SYSTEM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INI_ALL", ZEND_INI_ALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INI_SCANNER_NORMAL", ZEND_INI_SCANNER_NORMAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INI_SCANNER_RAW", ZEND_INI_SCANNER_RAW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("INI_SCANNER_TYPED", ZEND_INI_SCANNER_TYPED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_SCHEME", PHP_URL_SCHEME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_HOST", PHP_URL_HOST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_PORT", PHP_URL_PORT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_USER", PHP_URL_USER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_PASS", PHP_URL_PASS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_PATH", PHP_URL_PATH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_QUERY", PHP_URL_QUERY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_URL_FRAGMENT", PHP_URL_FRAGMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_QUERY_RFC1738", PHP_QUERY_RFC1738, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_QUERY_RFC3986", PHP_QUERY_RFC3986, CONST_PERSISTENT); + REGISTER_DOUBLE_CONSTANT("M_E", M_E, CONST_PERSISTENT); ZEND_ASSERT(M_E == 2.718281828459045); - + REGISTER_DOUBLE_CONSTANT("M_LOG2E", M_LOG2E, CONST_PERSISTENT); + ZEND_ASSERT(M_LOG2E == 1.4426950408889634); + REGISTER_DOUBLE_CONSTANT("M_LOG10E", M_LOG10E, CONST_PERSISTENT); + ZEND_ASSERT(M_LOG10E == 0.4342944819032518); + REGISTER_DOUBLE_CONSTANT("M_LN2", M_LN2, CONST_PERSISTENT); + ZEND_ASSERT(M_LN2 == 0.6931471805599453); + REGISTER_DOUBLE_CONSTANT("M_LN10", M_LN10, CONST_PERSISTENT); + ZEND_ASSERT(M_LN10 == 2.302585092994046); + REGISTER_DOUBLE_CONSTANT("M_PI", M_PI, CONST_PERSISTENT); + ZEND_ASSERT(M_PI == 3.141592653589793); + REGISTER_DOUBLE_CONSTANT("M_PI_2", M_PI_2, CONST_PERSISTENT); + ZEND_ASSERT(M_PI_2 == 1.5707963267948966); + REGISTER_DOUBLE_CONSTANT("M_PI_4", M_PI_4, CONST_PERSISTENT); + ZEND_ASSERT(M_PI_4 == 0.7853981633974483); + REGISTER_DOUBLE_CONSTANT("M_1_PI", M_1_PI, CONST_PERSISTENT); + ZEND_ASSERT(M_1_PI == 0.3183098861837907); + REGISTER_DOUBLE_CONSTANT("M_2_PI", M_2_PI, CONST_PERSISTENT); + ZEND_ASSERT(M_2_PI == 0.6366197723675814); + REGISTER_DOUBLE_CONSTANT("M_SQRTPI", M_SQRTPI, CONST_PERSISTENT); + ZEND_ASSERT(M_SQRTPI == 1.772453850905516); + REGISTER_DOUBLE_CONSTANT("M_2_SQRTPI", M_2_SQRTPI, CONST_PERSISTENT); + ZEND_ASSERT(M_2_SQRTPI == 1.1283791670955126); + REGISTER_DOUBLE_CONSTANT("M_LNPI", M_LNPI, CONST_PERSISTENT); + ZEND_ASSERT(M_LNPI == 1.1447298858494002); + REGISTER_DOUBLE_CONSTANT("M_EULER", M_EULER, CONST_PERSISTENT); + ZEND_ASSERT(M_EULER == 0.5772156649015329); + REGISTER_DOUBLE_CONSTANT("M_SQRT2", M_SQRT2, CONST_PERSISTENT); + ZEND_ASSERT(M_SQRT2 == 1.4142135623730951); + REGISTER_DOUBLE_CONSTANT("M_SQRT1_2", M_SQRT1_2, CONST_PERSISTENT); + ZEND_ASSERT(M_SQRT1_2 == 0.7071067811865476); + REGISTER_DOUBLE_CONSTANT("M_SQRT3", M_SQRT3, CONST_PERSISTENT); + ZEND_ASSERT(M_SQRT3 == 1.7320508075688772); + REGISTER_DOUBLE_CONSTANT("INF", ZEND_INFINITY, CONST_PERSISTENT); + REGISTER_DOUBLE_CONSTANT("NAN", ZEND_NAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_UP", PHP_ROUND_HALF_UP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_DOWN", PHP_ROUND_HALF_DOWN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_EVEN", PHP_ROUND_HALF_EVEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHP_ROUND_HALF_ODD", PHP_ROUND_HALF_ODD, CONST_PERSISTENT); +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_A", PHP_DNS_A, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_NS", PHP_DNS_NS, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_CNAME", PHP_DNS_CNAME, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_SOA", PHP_DNS_SOA, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_PTR", PHP_DNS_PTR, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_HINFO", PHP_DNS_HINFO, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) && (!defined(PHP_WIN32)) + REGISTER_LONG_CONSTANT("DNS_CAA", PHP_DNS_CAA, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_MX", PHP_DNS_MX, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_TXT", PHP_DNS_TXT, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_SRV", PHP_DNS_SRV, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_NAPTR", PHP_DNS_NAPTR, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_AAAA", PHP_DNS_AAAA, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_A6", PHP_DNS_A6, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_ANY", PHP_DNS_ANY, CONST_PERSISTENT); +#endif +#if (defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS))) + REGISTER_LONG_CONSTANT("DNS_ALL", PHP_DNS_ALL, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IMAGETYPE_GIF", IMAGE_FILETYPE_GIF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG", IMAGE_FILETYPE_JPEG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_PNG", IMAGE_FILETYPE_PNG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_SWF", IMAGE_FILETYPE_SWF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_PSD", IMAGE_FILETYPE_PSD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_BMP", IMAGE_FILETYPE_BMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_II", IMAGE_FILETYPE_TIFF_II, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_MM", IMAGE_FILETYPE_TIFF_MM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JPC", IMAGE_FILETYPE_JPC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JP2", IMAGE_FILETYPE_JP2, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JPX", IMAGE_FILETYPE_JPX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JB2", IMAGE_FILETYPE_JB2, CONST_PERSISTENT); +#if (defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB)) + REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_WBMP", IMAGE_FILETYPE_WBMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG2000", IMAGE_FILETYPE_JPC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_XBM", IMAGE_FILETYPE_XBM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_ICO", IMAGE_FILETYPE_ICO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_WEBP", IMAGE_FILETYPE_WEBP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_AVIF", IMAGE_FILETYPE_AVIF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_UNKNOWN", IMAGE_FILETYPE_UNKNOWN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("IMAGETYPE_COUNT", IMAGE_FILETYPE_COUNT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_EMERG", LOG_EMERG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_ALERT", LOG_ALERT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_CRIT", LOG_CRIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_ERR", LOG_ERR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_WARNING", LOG_WARNING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_NOTICE", LOG_NOTICE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_INFO", LOG_INFO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_DEBUG", LOG_DEBUG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_KERN", LOG_KERN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_USER", LOG_USER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_MAIL", LOG_MAIL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_DAEMON", LOG_DAEMON, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_AUTH", LOG_AUTH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_SYSLOG", LOG_SYSLOG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_LPR", LOG_LPR, CONST_PERSISTENT); +#if defined(LOG_NEWS) + REGISTER_LONG_CONSTANT("LOG_NEWS", LOG_NEWS, CONST_PERSISTENT); +#endif +#if defined(LOG_UUCP) + REGISTER_LONG_CONSTANT("LOG_UUCP", LOG_UUCP, CONST_PERSISTENT); +#endif +#if defined(LOG_CRON) + REGISTER_LONG_CONSTANT("LOG_CRON", LOG_CRON, CONST_PERSISTENT); +#endif +#if defined(LOG_AUTHPRIV) + REGISTER_LONG_CONSTANT("LOG_AUTHPRIV", LOG_AUTHPRIV, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL0", LOG_LOCAL0, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL1", LOG_LOCAL1, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL2", LOG_LOCAL2, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL3", LOG_LOCAL3, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL4", LOG_LOCAL4, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL5", LOG_LOCAL5, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL6", LOG_LOCAL6, CONST_PERSISTENT); +#endif +#if !defined(PHP_WIN32) + REGISTER_LONG_CONSTANT("LOG_LOCAL7", LOG_LOCAL7, CONST_PERSISTENT); +#endif + REGISTER_LONG_CONSTANT("LOG_PID", LOG_PID, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_CONS", LOG_CONS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_ODELAY", LOG_ODELAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LOG_NDELAY", LOG_NDELAY, CONST_PERSISTENT); +#if defined(LOG_NOWAIT) + REGISTER_LONG_CONSTANT("LOG_NOWAIT", LOG_NOWAIT, CONST_PERSISTENT); +#endif +#if defined(LOG_PERROR) + REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_PERSISTENT); +#endif + + + zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "crypt", sizeof("crypt") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "password_hash", sizeof("password_hash") - 1), 0, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0); @@ -3498,7 +3710,11 @@ static zend_class_entry *register_class___PHP_Incomplete_Class(void) INIT_CLASS_ENTRY(ce, "__PHP_Incomplete_Class", class___PHP_Incomplete_Class_methods); class_entry = zend_register_internal_class_ex(&ce, NULL); - class_entry->ce_flags |= ZEND_ACC_FINAL; + class_entry->ce_flags |= ZEND_ACC_FINAL|ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES; + + zend_string *attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class = zend_string_init_interned("AllowDynamicProperties", sizeof("AllowDynamicProperties") - 1, 1); + zend_add_class_attribute(class_entry, attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class, 0); + zend_string_release(attribute_name_AllowDynamicProperties_class___PHP_Incomplete_Class); return class_entry; } diff --git a/ext/standard/config.m4 b/ext/standard/config.m4 index fb9d8e5415871..87f41b25eb9d5 100644 --- a/ext/standard/config.m4 +++ b/ext/standard/config.m4 @@ -398,17 +398,6 @@ if test "$ac_cv_strptime_decl_fails" = "yes"; then AC_DEFINE([HAVE_STRPTIME_DECL_FAILS], 1, [whether strptime() declaration fails]) fi -dnl -dnl Check for arc4random on BSD systems -dnl -AC_CHECK_DECLS([arc4random_buf]) - -dnl -dnl Check for CCRandomGenerateBytes -dnl header absent in previous macOs releases -dnl -AC_CHECK_HEADERS([CommonCrypto/CommonRandom.h]) - dnl dnl Check for argon2 dnl diff --git a/ext/standard/config.w32 b/ext/standard/config.w32 index e4c5d65f4acb3..282189c52dade 100644 --- a/ext/standard/config.w32 +++ b/ext/standard/config.w32 @@ -25,7 +25,7 @@ ADD_FLAG("LIBS_STANDARD", "iphlpapi.lib"); EXTENSION("standard", "array.c base64.c basic_functions.c browscap.c \ crc32.c crypt.c crypt_freesec.c crypt_blowfish.c crypt_sha256.c \ - crypt_sha512.c php_crypt_r.c crc32_x86.c \ + crypt_sha512.c php_crypt_r.c " + (TARGET_ARCH != 'arm64'? " crc32_x86.c" : "") + " \ datetime.c dir.c dl.c dns.c dns_win32.c exec.c \ file.c filestat.c formatted_print.c fsock.c head.c html.c image.c \ info.c iptc.c link.c mail.c math.c md5.c metaphone.c microtime.c \ diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 456c76ab1af2f..d229b998a4b6b 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -316,26 +316,6 @@ static zend_string *php_gethostbyname(char *name) } /* }}} */ -#if defined(HAVE_FULL_DNS_FUNCS) || defined(PHP_WIN32) -# define PHP_DNS_NUM_TYPES 13 /* Number of DNS Types Supported by PHP currently */ - -# define PHP_DNS_A 0x00000001 -# define PHP_DNS_NS 0x00000002 -# define PHP_DNS_CNAME 0x00000010 -# define PHP_DNS_SOA 0x00000020 -# define PHP_DNS_PTR 0x00000800 -# define PHP_DNS_HINFO 0x00001000 -# define PHP_DNS_CAA 0x00002000 -# define PHP_DNS_MX 0x00004000 -# define PHP_DNS_TXT 0x00008000 -# define PHP_DNS_A6 0x01000000 -# define PHP_DNS_SRV 0x02000000 -# define PHP_DNS_NAPTR 0x04000000 -# define PHP_DNS_AAAA 0x08000000 -# define PHP_DNS_ANY 0x10000000 -# define PHP_DNS_ALL (PHP_DNS_A|PHP_DNS_NS|PHP_DNS_CNAME|PHP_DNS_SOA|PHP_DNS_PTR|PHP_DNS_HINFO|PHP_DNS_CAA|PHP_DNS_MX|PHP_DNS_TXT|PHP_DNS_A6|PHP_DNS_SRV|PHP_DNS_NAPTR|PHP_DNS_AAAA) -#endif /* HAVE_FULL_DNS_FUNCS || defined(PHP_WIN32) */ - /* Note: These functions are defined in ext/standard/dns_win32.c for Windows! */ #if !defined(PHP_WIN32) && defined(HAVE_DNS_SEARCH_FUNC) @@ -1161,24 +1141,3 @@ PHP_FUNCTION(dns_get_mx) /* }}} */ #endif /* HAVE_FULL_DNS_FUNCS */ #endif /* !defined(PHP_WIN32) && HAVE_DNS_SEARCH_FUNC */ - -#if defined(HAVE_FULL_DNS_FUNCS) && !defined(PHP_WIN32) -PHP_MINIT_FUNCTION(dns) { - REGISTER_LONG_CONSTANT("DNS_A", PHP_DNS_A, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_NS", PHP_DNS_NS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_CNAME", PHP_DNS_CNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_SOA", PHP_DNS_SOA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_PTR", PHP_DNS_PTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_HINFO", PHP_DNS_HINFO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_CAA", PHP_DNS_CAA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_MX", PHP_DNS_MX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_TXT", PHP_DNS_TXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_SRV", PHP_DNS_SRV, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_NAPTR", PHP_DNS_NAPTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_AAAA", PHP_DNS_AAAA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_A6", PHP_DNS_A6, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_ANY", PHP_DNS_ANY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_ALL", PHP_DNS_ALL, CONST_CS | CONST_PERSISTENT); - return SUCCESS; -} -#endif /* HAVE_FULL_DNS_FUNCS */ diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c index 25fdccbfcf987..4d87d4c8210de 100644 --- a/ext/standard/dns_win32.c +++ b/ext/standard/dns_win32.c @@ -506,21 +506,3 @@ PHP_FUNCTION(dns_get_record) } } /* }}} */ - -PHP_MINIT_FUNCTION(dns) { - REGISTER_LONG_CONSTANT("DNS_A", PHP_DNS_A, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_NS", PHP_DNS_NS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_CNAME", PHP_DNS_CNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_SOA", PHP_DNS_SOA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_PTR", PHP_DNS_PTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_HINFO", PHP_DNS_HINFO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_MX", PHP_DNS_MX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_TXT", PHP_DNS_TXT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_SRV", PHP_DNS_SRV, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_NAPTR", PHP_DNS_NAPTR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_AAAA", PHP_DNS_AAAA, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_A6", PHP_DNS_A6, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_ANY", PHP_DNS_ANY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("DNS_ALL", PHP_DNS_ALL, CONST_CS | CONST_PERSISTENT); - return SUCCESS; -} diff --git a/ext/standard/file.c b/ext/standard/file.c index da69840a9fa1d..1f3b6b2cf5824 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -110,6 +110,8 @@ php_file_globals file_globals; # include #endif +#include "file_arginfo.h" + /* }}} */ #define PHP_STREAM_TO_ZVAL(stream, arg) \ @@ -180,145 +182,7 @@ PHP_MINIT_FUNCTION(file) REGISTER_INI_ENTRIES(); - REGISTER_LONG_CONSTANT("SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_SH", PHP_LOCK_SH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_EX", PHP_LOCK_EX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_UN", PHP_LOCK_UN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOCK_NB", PHP_LOCK_NB, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_CONNECT", PHP_STREAM_NOTIFY_CONNECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_AUTH_REQUIRED", PHP_STREAM_NOTIFY_AUTH_REQUIRED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_AUTH_RESULT", PHP_STREAM_NOTIFY_AUTH_RESULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_MIME_TYPE_IS", PHP_STREAM_NOTIFY_MIME_TYPE_IS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_FILE_SIZE_IS", PHP_STREAM_NOTIFY_FILE_SIZE_IS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_REDIRECTED", PHP_STREAM_NOTIFY_REDIRECTED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_PROGRESS", PHP_STREAM_NOTIFY_PROGRESS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_FAILURE", PHP_STREAM_NOTIFY_FAILURE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_COMPLETED", PHP_STREAM_NOTIFY_COMPLETED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_RESOLVE", PHP_STREAM_NOTIFY_RESOLVE, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_INFO", PHP_STREAM_NOTIFY_SEVERITY_INFO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_WARN", PHP_STREAM_NOTIFY_SEVERITY_WARN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_NOTIFY_SEVERITY_ERR", PHP_STREAM_NOTIFY_SEVERITY_ERR, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_FILTER_READ", PHP_STREAM_FILTER_READ, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_FILTER_WRITE", PHP_STREAM_FILTER_WRITE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_FILTER_ALL", PHP_STREAM_FILTER_ALL, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_CLIENT_PERSISTENT", PHP_STREAM_CLIENT_PERSISTENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CLIENT_ASYNC_CONNECT", PHP_STREAM_CLIENT_ASYNC_CONNECT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CLIENT_CONNECT", PHP_STREAM_CLIENT_CONNECT, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_ANY_CLIENT", STREAM_CRYPTO_METHOD_ANY_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_CLIENT", STREAM_CRYPTO_METHOD_SSLv2_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_CLIENT", STREAM_CRYPTO_METHOD_SSLv3_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_CLIENT", STREAM_CRYPTO_METHOD_SSLv23_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_CLIENT", STREAM_CRYPTO_METHOD_TLS_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT", STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_ANY_SERVER", STREAM_CRYPTO_METHOD_ANY_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv2_SERVER", STREAM_CRYPTO_METHOD_SSLv2_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv3_SERVER", STREAM_CRYPTO_METHOD_SSLv3_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_SSLv23_SERVER", STREAM_CRYPTO_METHOD_SSLv23_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLS_SERVER", STREAM_CRYPTO_METHOD_TLS_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_0_SERVER", STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_1_SERVER", STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_2_SERVER", STREAM_CRYPTO_METHOD_TLSv1_2_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_METHOD_TLSv1_3_SERVER", STREAM_CRYPTO_METHOD_TLSv1_3_SERVER, CONST_CS|CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_SSLv3", STREAM_CRYPTO_METHOD_SSLv3_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_0", STREAM_CRYPTO_METHOD_TLSv1_0_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_1", STREAM_CRYPTO_METHOD_TLSv1_1_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_2", STREAM_CRYPTO_METHOD_TLSv1_2_SERVER, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_CRYPTO_PROTO_TLSv1_3", STREAM_CRYPTO_METHOD_TLSv1_3_SERVER, CONST_CS|CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_SHUT_RD", STREAM_SHUT_RD, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_SHUT_WR", STREAM_SHUT_WR, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_SHUT_RDWR", STREAM_SHUT_RDWR, CONST_CS|CONST_PERSISTENT); - -#ifdef PF_INET - REGISTER_LONG_CONSTANT("STREAM_PF_INET", PF_INET, CONST_CS|CONST_PERSISTENT); -#elif defined(AF_INET) - REGISTER_LONG_CONSTANT("STREAM_PF_INET", AF_INET, CONST_CS|CONST_PERSISTENT); -#endif - -#ifdef HAVE_IPV6 -# ifdef PF_INET6 - REGISTER_LONG_CONSTANT("STREAM_PF_INET6", PF_INET6, CONST_CS|CONST_PERSISTENT); -# elif defined(AF_INET6) - REGISTER_LONG_CONSTANT("STREAM_PF_INET6", AF_INET6, CONST_CS|CONST_PERSISTENT); -# endif -#endif - -#ifdef PF_UNIX - REGISTER_LONG_CONSTANT("STREAM_PF_UNIX", PF_UNIX, CONST_CS|CONST_PERSISTENT); -#elif defined(AF_UNIX) - REGISTER_LONG_CONSTANT("STREAM_PF_UNIX", AF_UNIX, CONST_CS|CONST_PERSISTENT); -#endif - -#ifdef IPPROTO_IP - /* most people will use this one when calling socket() or socketpair() */ - REGISTER_LONG_CONSTANT("STREAM_IPPROTO_IP", IPPROTO_IP, CONST_CS|CONST_PERSISTENT); -#endif - -#if defined(IPPROTO_TCP) || defined(PHP_WIN32) - REGISTER_LONG_CONSTANT("STREAM_IPPROTO_TCP", IPPROTO_TCP, CONST_CS|CONST_PERSISTENT); -#endif - -#if defined(IPPROTO_UDP) || defined(PHP_WIN32) - REGISTER_LONG_CONSTANT("STREAM_IPPROTO_UDP", IPPROTO_UDP, CONST_CS|CONST_PERSISTENT); -#endif - -#if defined(IPPROTO_ICMP) || defined(PHP_WIN32) - REGISTER_LONG_CONSTANT("STREAM_IPPROTO_ICMP", IPPROTO_ICMP, CONST_CS|CONST_PERSISTENT); -#endif - -#if defined(IPPROTO_RAW) || defined(PHP_WIN32) - REGISTER_LONG_CONSTANT("STREAM_IPPROTO_RAW", IPPROTO_RAW, CONST_CS|CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("STREAM_SOCK_STREAM", SOCK_STREAM, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_SOCK_DGRAM", SOCK_DGRAM, CONST_CS|CONST_PERSISTENT); - -#ifdef SOCK_RAW - REGISTER_LONG_CONSTANT("STREAM_SOCK_RAW", SOCK_RAW, CONST_CS|CONST_PERSISTENT); -#endif - -#ifdef SOCK_SEQPACKET - REGISTER_LONG_CONSTANT("STREAM_SOCK_SEQPACKET", SOCK_SEQPACKET, CONST_CS|CONST_PERSISTENT); -#endif - -#ifdef SOCK_RDM - REGISTER_LONG_CONSTANT("STREAM_SOCK_RDM", SOCK_RDM, CONST_CS|CONST_PERSISTENT); -#endif - - REGISTER_LONG_CONSTANT("STREAM_PEEK", STREAM_PEEK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_OOB", STREAM_OOB, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("STREAM_SERVER_BIND", STREAM_XPORT_BIND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("STREAM_SERVER_LISTEN", STREAM_XPORT_LISTEN, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("FILE_USE_INCLUDE_PATH", PHP_FILE_USE_INCLUDE_PATH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILE_IGNORE_NEW_LINES", PHP_FILE_IGNORE_NEW_LINES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILE_SKIP_EMPTY_LINES", PHP_FILE_SKIP_EMPTY_LINES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILE_APPEND", PHP_FILE_APPEND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FILE_NO_DEFAULT_CONTEXT", PHP_FILE_NO_DEFAULT_CONTEXT, CONST_CS | CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("FILE_TEXT", 0, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - REGISTER_LONG_CONSTANT("FILE_BINARY", 0, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); - -#ifdef HAVE_FNMATCH - REGISTER_LONG_CONSTANT("FNM_NOESCAPE", FNM_NOESCAPE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FNM_PATHNAME", FNM_PATHNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FNM_PERIOD", FNM_PERIOD, CONST_CS | CONST_PERSISTENT); -# ifdef FNM_CASEFOLD /* a GNU extension */ /* TODO emulate if not available */ - REGISTER_LONG_CONSTANT("FNM_CASEFOLD", FNM_CASEFOLD, CONST_CS | CONST_PERSISTENT); -# endif -#endif + register_file_symbols(module_number); return SUCCESS; } diff --git a/ext/standard/file.stub.php b/ext/standard/file.stub.php new file mode 100644 index 0000000000000..72cf582b8f1f1 --- /dev/null +++ b/ext/standard/file.stub.php @@ -0,0 +1,478 @@ += 253402300800) { + zend_value_error("%s(): \"expires\" option cannot have a year greater than 9999", + get_active_function_name()); + return FAILURE; + } +#endif + /* Should check value of SameSite? */ if (value == NULL || ZSTR_LEN(value) == 0) { @@ -118,7 +126,7 @@ PHPAPI zend_result php_setcookie(zend_string *name, zend_string *value, time_t e * so in order to force cookies to be deleted, even on MSIE, we * pick an expiry date in the past */ - dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, 1, 0); + dt = php_format_date("D, d M Y H:i:s \\G\\M\\T", sizeof("D, d M Y H:i:s \\G\\M\\T")-1, 1, 0); smart_str_appends(&buf, "Set-Cookie: "); smart_str_append(&buf, name); smart_str_appends(&buf, "=deleted; expires="); @@ -136,21 +144,12 @@ PHPAPI zend_result php_setcookie(zend_string *name, zend_string *value, time_t e } else { smart_str_append(&buf, value); } + if (expires > 0) { - const char *p; double diff; smart_str_appends(&buf, COOKIE_EXPIRES); - dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0); - /* check to make sure that the year does not exceed 4 digits in length */ - p = zend_memrchr(ZSTR_VAL(dt), '-', ZSTR_LEN(dt)); - if (!p || *(p + 5) != ' ') { - zend_string_free(dt); - smart_str_free(&buf); - zend_value_error("%s(): \"expires\" option cannot have a year greater than 9999", - get_active_function_name()); - return FAILURE; - } + dt = php_format_date("D, d M Y H:i:s \\G\\M\\T", sizeof("D, d M Y H:i:s \\G\\M\\T")-1, expires, 0); smart_str_append(&buf, dt); zend_string_free(dt); diff --git a/ext/standard/http_fopen_wrapper.c b/ext/standard/http_fopen_wrapper.c index 099a5241ab58e..be0ee30b7d832 100644 --- a/ext/standard/http_fopen_wrapper.c +++ b/ext/standard/http_fopen_wrapper.c @@ -713,6 +713,10 @@ static php_stream *php_stream_url_wrap_http_ex(php_stream_wrapper *wrapper, if (tmp_line_len >= 1 &&tmp_line[tmp_line_len - 1] == '\r') { --tmp_line_len; } + } else { + // read and discard rest of status line + char *line = php_stream_get_line(stream, NULL, 0, NULL); + efree(line); } ZVAL_STRINGL(&http_response, tmp_line, tmp_line_len); zend_hash_next_index_insert(Z_ARRVAL_P(response_header), &http_response); diff --git a/ext/standard/image.c b/ext/standard/image.c index 831cd8a28bc1f..7375d75fc6477 100644 --- a/ext/standard/image.c +++ b/ext/standard/image.c @@ -64,38 +64,6 @@ struct gfxinfo { unsigned int channels; }; -/* {{{ PHP_MINIT_FUNCTION(imagetypes) - * Register IMAGETYPE_ constants used by GetImageSize(), image_type_to_mime_type, ext/exif */ -PHP_MINIT_FUNCTION(imagetypes) -{ - REGISTER_LONG_CONSTANT("IMAGETYPE_GIF", IMAGE_FILETYPE_GIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG", IMAGE_FILETYPE_JPEG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_PNG", IMAGE_FILETYPE_PNG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_SWF", IMAGE_FILETYPE_SWF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_PSD", IMAGE_FILETYPE_PSD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_BMP", IMAGE_FILETYPE_BMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_II", IMAGE_FILETYPE_TIFF_II, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_TIFF_MM", IMAGE_FILETYPE_TIFF_MM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_JPC", IMAGE_FILETYPE_JPC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_JP2", IMAGE_FILETYPE_JP2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_JPX", IMAGE_FILETYPE_JPX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_JB2", IMAGE_FILETYPE_JB2, CONST_CS | CONST_PERSISTENT); -#if defined(HAVE_ZLIB) && !defined(COMPILE_DL_ZLIB) - REGISTER_LONG_CONSTANT("IMAGETYPE_SWC", IMAGE_FILETYPE_SWC, CONST_CS | CONST_PERSISTENT); -#endif - REGISTER_LONG_CONSTANT("IMAGETYPE_IFF", IMAGE_FILETYPE_IFF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_WBMP", IMAGE_FILETYPE_WBMP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_JPEG2000",IMAGE_FILETYPE_JPC, CONST_CS | CONST_PERSISTENT); /* keep alias */ - REGISTER_LONG_CONSTANT("IMAGETYPE_XBM", IMAGE_FILETYPE_XBM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_ICO", IMAGE_FILETYPE_ICO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_WEBP", IMAGE_FILETYPE_WEBP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_AVIF", IMAGE_FILETYPE_AVIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_UNKNOWN", IMAGE_FILETYPE_UNKNOWN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("IMAGETYPE_COUNT", IMAGE_FILETYPE_COUNT, CONST_CS | CONST_PERSISTENT); - return SUCCESS; -} -/* }}} */ - /* {{{ php_handle_gif * routine to handle GIF files. If only everything were that easy... ;} */ static struct gfxinfo *php_handle_gif (php_stream * stream) diff --git a/ext/standard/pack.c b/ext/standard/pack.c index a58925219482e..f61214ca7e5d6 100644 --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@ -102,13 +102,13 @@ static void php_pack(zval *val, size_t size, int *map, char *output) } /* }}} */ -static inline uint16_t php_pack_reverse_int16(uint16_t arg) +ZEND_ATTRIBUTE_CONST static inline uint16_t php_pack_reverse_int16(uint16_t arg) { return ((arg & 0xFF) << 8) | ((arg >> 8) & 0xFF); } /* {{{ php_pack_reverse_int32 */ -static inline uint32_t php_pack_reverse_int32(uint32_t arg) +ZEND_ATTRIBUTE_CONST static inline uint32_t php_pack_reverse_int32(uint32_t arg) { uint32_t result; result = ((arg & 0xFF) << 24) | ((arg & 0xFF00) << 8) | ((arg >> 8) & 0xFF00) | ((arg >> 24) & 0xFF); diff --git a/ext/standard/php_array.h b/ext/standard/php_array.h index cac6a44ce91e4..5d42a22f42040 100644 --- a/ext/standard/php_array.h +++ b/ext/standard/php_array.h @@ -34,6 +34,19 @@ PHPAPI zend_long php_count_recursive(HashTable *ht); PHPAPI bool php_array_data_shuffle(const php_random_algo *algo, php_random_status *status, zval *array); PHPAPI bool php_array_pick_keys(const php_random_algo *algo, php_random_status *status, zval *input, zend_long num_req, zval *retval, bool silent); +#define PHP_EXTR_OVERWRITE 0 +#define PHP_EXTR_SKIP 1 +#define PHP_EXTR_PREFIX_SAME 2 +#define PHP_EXTR_PREFIX_ALL 3 +#define PHP_EXTR_PREFIX_INVALID 4 +#define PHP_EXTR_PREFIX_IF_EXISTS 5 +#define PHP_EXTR_IF_EXISTS 6 + +#define PHP_EXTR_REFS 0x100 + +#define PHP_CASE_LOWER 0 +#define PHP_CASE_UPPER 1 + #define PHP_SORT_REGULAR 0 #define PHP_SORT_NUMERIC 1 #define PHP_SORT_STRING 2 @@ -43,8 +56,8 @@ PHPAPI bool php_array_pick_keys(const php_random_algo *algo, php_random_status * #define PHP_SORT_NATURAL 6 #define PHP_SORT_FLAG_CASE 8 -#define COUNT_NORMAL 0 -#define COUNT_RECURSIVE 1 +#define PHP_COUNT_NORMAL 0 +#define PHP_COUNT_RECURSIVE 1 #define ARRAY_FILTER_USE_BOTH 1 #define ARRAY_FILTER_USE_KEY 2 diff --git a/ext/standard/php_dns.h b/ext/standard/php_dns.h index 53fbc76514f53..4e04799cdb8a7 100644 --- a/ext/standard/php_dns.h +++ b/ext/standard/php_dns.h @@ -56,11 +56,32 @@ #define HAVE_FULL_DNS_FUNCS 1 #endif -#if defined(PHP_WIN32) || defined(HAVE_DNS_SEARCH_FUNC) -# if defined(PHP_WIN32) || defined(HAVE_FULL_DNS_FUNCS) -PHP_MINIT_FUNCTION(dns); -# endif -#endif /* defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC */ +#if defined(PHP_WIN32) || (defined(HAVE_DNS_SEARCH_FUNC) && defined(HAVE_FULL_DNS_FUNCS)) +#define PHP_DNS_A 0x00000001 +#define PHP_DNS_NS 0x00000002 +#define PHP_DNS_CNAME 0x00000010 +#define PHP_DNS_SOA 0x00000020 +#define PHP_DNS_PTR 0x00000800 +#define PHP_DNS_HINFO 0x00001000 +#if !defined(PHP_WIN32) +# define PHP_DNS_CAA 0x00002000 +#endif +#define PHP_DNS_MX 0x00004000 +#define PHP_DNS_TXT 0x00008000 +#define PHP_DNS_A6 0x01000000 +#define PHP_DNS_SRV 0x02000000 +#define PHP_DNS_NAPTR 0x04000000 +#define PHP_DNS_AAAA 0x08000000 +#define PHP_DNS_ANY 0x10000000 + +#if defined(PHP_WIN32) +# define PHP_DNS_NUM_TYPES 12 /* Number of DNS Types Supported by PHP currently */ +# define PHP_DNS_ALL (PHP_DNS_A|PHP_DNS_NS|PHP_DNS_CNAME|PHP_DNS_SOA|PHP_DNS_PTR|PHP_DNS_HINFO|PHP_DNS_MX|PHP_DNS_TXT|PHP_DNS_A6|PHP_DNS_SRV|PHP_DNS_NAPTR|PHP_DNS_AAAA) +#else +# define PHP_DNS_NUM_TYPES 13 /* Number of DNS Types Supported by PHP currently */ +# define PHP_DNS_ALL (PHP_DNS_A|PHP_DNS_NS|PHP_DNS_CNAME|PHP_DNS_SOA|PHP_DNS_PTR|PHP_DNS_HINFO|PHP_DNS_CAA|PHP_DNS_MX|PHP_DNS_TXT|PHP_DNS_A6|PHP_DNS_SRV|PHP_DNS_NAPTR|PHP_DNS_AAAA) +#endif +#endif #ifndef INT16SZ #define INT16SZ 2 diff --git a/ext/standard/php_image.h b/ext/standard/php_image.h index b975e0bf147a1..a41273e6745ae 100644 --- a/ext/standard/php_image.h +++ b/ext/standard/php_image.h @@ -44,13 +44,11 @@ typedef enum IMAGE_FILETYPE_ICO, IMAGE_FILETYPE_WEBP, IMAGE_FILETYPE_AVIF, -/* WHEN EXTENDING: PLEASE ALSO REGISTER IN image.c:PHP_MINIT_FUNCTION(imagetypes) */ +/* WHEN EXTENDING: PLEASE ALSO REGISTER IN basic_function.stub.php */ IMAGE_FILETYPE_COUNT } image_filetype; /* }}} */ -PHP_MINIT_FUNCTION(imagetypes); - PHPAPI int php_getimagetype(php_stream *stream, const char *input, char *filetype); PHPAPI char * php_image_type_to_mime_type(int image_type); diff --git a/ext/standard/string.c b/ext/standard/string.c index a0a1194279898..236abfae45b2c 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -3338,7 +3338,7 @@ PHP_FUNCTION(strtr) /* {{{ Reverse a string */ #ifdef ZEND_INTRIN_SSSE3_NATIVE #include -#elif defined(__aarch64__) +#elif defined(__aarch64__) || defined(_M_ARM64) #include #endif PHP_FUNCTION(strrev) @@ -3385,6 +3385,19 @@ PHP_FUNCTION(strrev) e -= 16; } while (e - s > 15); } +#elif defined(_M_ARM64) + if (e - s > 15) { + do { + const __n128 str = vld1q_u8((uint8_t *)(e - 15)); + /* Synthesize rev128 with a rev64 + ext. */ + /* strange force cast limit on windows: you cannot convert anything */ + const __n128 rev = vrev64q_u8(str); + const __n128 ext = vextq_u64(rev, rev, 1); + vst1q_u8((uint8_t *)p, ext); + p += 16; + e -= 16; + } while (e - s > 15); + } #endif while (e >= s) { *p++ = *e--; @@ -3864,7 +3877,7 @@ zend_string *php_addslashes_sse42(zend_string *str) /* }}} */ #endif -#ifdef __aarch64__ +#if defined(__aarch64__) || defined(_M_ARM64) typedef union { uint8_t mem[16]; uint64_t dw[2]; @@ -3899,7 +3912,7 @@ static zend_always_inline char *aarch64_add_slashes(quad_word res, const char *s } return target; } -#endif /* __aarch64__ */ +#endif /* defined(__aarch64__) || defined(_M_ARM64) */ #ifndef ZEND_INTRIN_SSE4_2_NATIVE # ifdef ZEND_INTRIN_SSE4_2_RESOLVER @@ -3921,7 +3934,7 @@ PHPAPI zend_string *php_addslashes(zend_string *str) source = ZSTR_VAL(str); end = source + ZSTR_LEN(str); -# ifdef __aarch64__ +# if defined(__aarch64__) || defined(_M_ARM64) quad_word res = {0}; if (ZSTR_LEN(str) > 15) { do { @@ -3932,7 +3945,7 @@ PHPAPI zend_string *php_addslashes(zend_string *str) } while ((end - source) > 15); } /* Finish the last 15 bytes or less with the scalar loop. */ -# endif /* __aarch64__ */ +# endif /* defined(__aarch64__) || defined(_M_ARM64) */ while (source < end) { switch (*source) { @@ -3955,7 +3968,7 @@ PHPAPI zend_string *php_addslashes(zend_string *str) memcpy(ZSTR_VAL(new_str), ZSTR_VAL(str), offset); target = ZSTR_VAL(new_str) + offset; -# ifdef __aarch64__ +# if defined(__aarch64__) || defined(_M_ARM64) if (res.dw[0] | res.dw[1]) { target = aarch64_add_slashes(res, source, target); source += 16; @@ -3971,7 +3984,7 @@ PHPAPI zend_string *php_addslashes(zend_string *str) } } /* Finish the last 15 bytes or less with the scalar loop. */ -# endif /* __aarch64__ */ +# endif /* defined(__aarch64__) || defined(_M_ARM64) */ while (source < end) { switch (*source) { @@ -4010,7 +4023,7 @@ PHPAPI zend_string *php_addslashes(zend_string *str) * be careful, this edits the string in-place */ static zend_always_inline char *php_stripslashes_impl(const char *str, char *out, size_t len) { -#ifdef __aarch64__ +#if defined(__aarch64__) || defined(_M_ARM64) while (len > 15) { uint8x16_t x = vld1q_u8((uint8_t *)str); quad_word q; @@ -4040,7 +4053,7 @@ static zend_always_inline char *php_stripslashes_impl(const char *str, char *out } } /* Finish the last 15 bytes or less with the scalar loop. */ -#endif /* __aarch64__ */ +#endif /* defined(__aarch64__) || defined(_M_ARM64) */ while (len > 0) { if (*str == '\\') { str++; /* skip the slash */ diff --git a/ext/standard/syslog.c b/ext/standard/syslog.c index 37ea1def88cfb..f806e74a03b63 100644 --- a/ext/standard/syslog.c +++ b/ext/standard/syslog.c @@ -35,61 +35,6 @@ /* {{{ PHP_MINIT_FUNCTION */ PHP_MINIT_FUNCTION(syslog) { - /* error levels */ - REGISTER_LONG_CONSTANT("LOG_EMERG", LOG_EMERG, CONST_CS | CONST_PERSISTENT); /* system unusable */ - REGISTER_LONG_CONSTANT("LOG_ALERT", LOG_ALERT, CONST_CS | CONST_PERSISTENT); /* immediate action required */ - REGISTER_LONG_CONSTANT("LOG_CRIT", LOG_CRIT, CONST_CS | CONST_PERSISTENT); /* critical conditions */ - REGISTER_LONG_CONSTANT("LOG_ERR", LOG_ERR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_WARNING", LOG_WARNING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_NOTICE", LOG_NOTICE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_INFO", LOG_INFO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_DEBUG", LOG_DEBUG, CONST_CS | CONST_PERSISTENT); - /* facility: type of program logging the message */ - REGISTER_LONG_CONSTANT("LOG_KERN", LOG_KERN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_USER", LOG_USER, CONST_CS | CONST_PERSISTENT); /* generic user level */ - REGISTER_LONG_CONSTANT("LOG_MAIL", LOG_MAIL, CONST_CS | CONST_PERSISTENT); /* log to email */ - REGISTER_LONG_CONSTANT("LOG_DAEMON", LOG_DAEMON, CONST_CS | CONST_PERSISTENT); /* other system daemons */ - REGISTER_LONG_CONSTANT("LOG_AUTH", LOG_AUTH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_SYSLOG", LOG_SYSLOG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LPR", LOG_LPR, CONST_CS | CONST_PERSISTENT); -#ifdef LOG_NEWS - /* No LOG_NEWS on HP-UX */ - REGISTER_LONG_CONSTANT("LOG_NEWS", LOG_NEWS, CONST_CS | CONST_PERSISTENT); /* usenet new */ -#endif -#ifdef LOG_UUCP - /* No LOG_UUCP on HP-UX */ - REGISTER_LONG_CONSTANT("LOG_UUCP", LOG_UUCP, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef LOG_CRON - /* apparently some systems don't have this one */ - REGISTER_LONG_CONSTANT("LOG_CRON", LOG_CRON, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef LOG_AUTHPRIV - /* AIX doesn't have LOG_AUTHPRIV */ - REGISTER_LONG_CONSTANT("LOG_AUTHPRIV", LOG_AUTHPRIV, CONST_CS | CONST_PERSISTENT); -#endif -#ifndef PHP_WIN32 - REGISTER_LONG_CONSTANT("LOG_LOCAL0", LOG_LOCAL0, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LOCAL1", LOG_LOCAL1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LOCAL2", LOG_LOCAL2, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LOCAL3", LOG_LOCAL3, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LOCAL4", LOG_LOCAL4, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LOCAL5", LOG_LOCAL5, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LOCAL6", LOG_LOCAL6, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_LOCAL7", LOG_LOCAL7, CONST_CS | CONST_PERSISTENT); -#endif - /* options */ - REGISTER_LONG_CONSTANT("LOG_PID", LOG_PID, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_CONS", LOG_CONS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_ODELAY", LOG_ODELAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LOG_NDELAY", LOG_NDELAY, CONST_CS | CONST_PERSISTENT); -#ifdef LOG_NOWAIT - REGISTER_LONG_CONSTANT("LOG_NOWAIT", LOG_NOWAIT, CONST_CS | CONST_PERSISTENT); -#endif -#ifdef LOG_PERROR - /* AIX doesn't have LOG_PERROR */ - REGISTER_LONG_CONSTANT("LOG_PERROR", LOG_PERROR, CONST_CS | CONST_PERSISTENT); /*log to stderr*/ -#endif BG(syslog_device)=NULL; return SUCCESS; @@ -143,9 +88,6 @@ PHP_FUNCTION(openlog) free(BG(syslog_device)); } BG(syslog_device) = zend_strndup(ident, ident_len); - if(BG(syslog_device) == NULL) { - RETURN_FALSE; - } php_openlog(BG(syslog_device), option, facility); RETURN_TRUE; } diff --git a/ext/standard/tests/array/002.phpt b/ext/standard/tests/array/002.phpt index fdb838deb19dd..5cf377e2a3538 100644 --- a/ext/standard/tests/array/002.phpt +++ b/ext/standard/tests/array/002.phpt @@ -276,6 +276,8 @@ array(8) { -- Testing krsort() -- No second argument: array(8) { + ["test"]=> + int(27) [16777216]=> float(-0.3333333333333333) [1001]=> @@ -288,8 +290,6 @@ array(8) { string(4) "Test" [0]=> string(3) "PHP" - ["test"]=> - int(27) [-1000]=> array(2) { [0]=> @@ -300,6 +300,8 @@ array(8) { } Using SORT_REGULAR: array(8) { + ["test"]=> + int(27) [16777216]=> float(-0.3333333333333333) [1001]=> @@ -312,8 +314,6 @@ array(8) { string(4) "Test" [0]=> string(3) "PHP" - ["test"]=> - int(27) [-1000]=> array(2) { [0]=> @@ -334,10 +334,10 @@ array(8) { string(27) "PHP: Hypertext Preprocessor" [5]=> string(4) "Test" - [0]=> - string(3) "PHP" ["test"]=> int(27) + [0]=> + string(3) "PHP" [-1000]=> array(2) { [0]=> @@ -383,8 +383,6 @@ array(8) { } [0]=> string(3) "PHP" - ["test"]=> - int(27) [5]=> string(4) "Test" [17]=> @@ -395,6 +393,8 @@ array(8) { string(6) "monkey" [16777216]=> float(-0.3333333333333333) + ["test"]=> + int(27) } Using SORT_REGULAR: array(8) { @@ -407,8 +407,6 @@ array(8) { } [0]=> string(3) "PHP" - ["test"]=> - int(27) [5]=> string(4) "Test" [17]=> @@ -419,6 +417,8 @@ array(8) { string(6) "monkey" [16777216]=> float(-0.3333333333333333) + ["test"]=> + int(27) } Using SORT_NUMERIC: array(8) { diff --git a/ext/standard/tests/array/gh9244.phpt b/ext/standard/tests/array/gh9244.phpt new file mode 100644 index 0000000000000..04c34d426dad8 --- /dev/null +++ b/ext/standard/tests/array/gh9244.phpt @@ -0,0 +1,11 @@ +--TEST-- +Bug GH-9244 (Segfault with array_multisort + array_shift) +--FILE-- + 1, 'bar' => 2]; +$order = [4, 3]; +array_multisort($order, $items); +var_dump(array_shift($items)); +?> +--EXPECT-- +int(2) diff --git a/ext/standard/tests/array/gh9296.phpt b/ext/standard/tests/array/gh9296.phpt new file mode 100644 index 0000000000000..cfbc5cbbb09ec --- /dev/null +++ b/ext/standard/tests/array/gh9296.phpt @@ -0,0 +1,17 @@ +--TEST-- +GH-9296: incorrect ksort(..., SORT_REGULAR) behaviour on arrays with numeric and string keys +--FILE-- + 0, 600 => 1]; +ksort($array, SORT_REGULAR); +var_dump($array); +var_dump(array_key_first($array) <=> array_key_last($array)); +?> +--EXPECT-- +array(2) { + [600]=> + int(1) + ["aaa"]=> + int(0) +} +int(-1) diff --git a/ext/standard/tests/array/krsort_variation8.phpt b/ext/standard/tests/array/krsort_variation8.phpt index caa0f21936027..4c1c6f2173d26 100644 --- a/ext/standard/tests/array/krsort_variation8.phpt +++ b/ext/standard/tests/array/krsort_variation8.phpt @@ -41,10 +41,6 @@ echo "Done\n"; -- Testing krsort() by supplying mixed value array, 'flag' value is default -- bool(true) array(13) { - [5]=> - string(1) "5" - [4]=> - float(4.01) ["b"]=> string(1) "b" ["array2"]=> @@ -85,23 +81,23 @@ array(13) { string(2) "ab" ["True"]=> string(4) "True" + [5]=> + string(1) "5" + [4]=> + float(4.01) [0]=> float(0.001) ["-.9"]=> string(3) "-.9" - [""]=> - string(0) "" [-2]=> float(-2.98989) + [""]=> + string(0) "" } -- Testing krsort() by supplying mixed value array, 'flag' value is SORT_REGULAR -- bool(true) array(13) { - [5]=> - string(1) "5" - [4]=> - float(4.01) ["b"]=> string(1) "b" ["array2"]=> @@ -142,13 +138,17 @@ array(13) { string(2) "ab" ["True"]=> string(4) "True" + [5]=> + string(1) "5" + [4]=> + float(4.01) [0]=> float(0.001) ["-.9"]=> string(3) "-.9" - [""]=> - string(0) "" [-2]=> float(-2.98989) + [""]=> + string(0) "" } Done diff --git a/ext/standard/tests/array/krsort_variation9.phpt b/ext/standard/tests/array/krsort_variation9.phpt index 4364911b62127..b0309f373d362 100644 --- a/ext/standard/tests/array/krsort_variation9.phpt +++ b/ext/standard/tests/array/krsort_variation9.phpt @@ -82,22 +82,22 @@ array(5) { - With default sort flag - bool(true) array(3) { + ["c"]=> + string(5) "apple" ["a"]=> string(6) "orange" [0]=> string(6) "banana" - ["c"]=> - string(5) "apple" } - Sort flag = SORT_REGULAR - bool(true) array(3) { + ["c"]=> + string(5) "apple" ["a"]=> string(6) "orange" [0]=> string(6) "banana" - ["c"]=> - string(5) "apple" } -- Iteration 3 -- diff --git a/ext/standard/tests/array/ksort_variation8.phpt b/ext/standard/tests/array/ksort_variation8.phpt index 10ed218211f07..236c405c64b95 100644 --- a/ext/standard/tests/array/ksort_variation8.phpt +++ b/ext/standard/tests/array/ksort_variation8.phpt @@ -40,18 +40,26 @@ echo "Done\n"; -- Testing ksort() by supplying mixed value array, 'flag' value is default -- bool(true) array(13) { - [-2]=> - float(-2.98989) [""]=> string(0) "" + [-2]=> + float(-2.98989) ["-.9"]=> string(3) "-.9" + [0]=> + float(0.001) + [4]=> + float(4.01) + [5]=> + string(1) "5" ["True"]=> string(4) "True" ["ab"]=> string(2) "ab" ["abcd"]=> string(4) "abcd" + ["abcd%0abcd%0abcd"]=> + string(14) "abcd%0abcd%0abcd" ["array1"]=> array(0) { } @@ -84,31 +92,31 @@ array(13) { } ["b"]=> string(1) "b" - [0]=> - float(0.001) - ["abcd%0abcd%0abcd"]=> - string(14) "abcd%0abcd%0abcd" - [4]=> - float(4.01) - [5]=> - string(1) "5" } -- Testing ksort() by supplying mixed value array, 'flag' value is SORT_REGULAR -- bool(true) array(13) { - [-2]=> - float(-2.98989) [""]=> string(0) "" + [-2]=> + float(-2.98989) ["-.9"]=> string(3) "-.9" + [0]=> + float(0.001) + [4]=> + float(4.01) + [5]=> + string(1) "5" ["True"]=> string(4) "True" ["ab"]=> string(2) "ab" ["abcd"]=> string(4) "abcd" + ["abcd%0abcd%0abcd"]=> + string(14) "abcd%0abcd%0abcd" ["array1"]=> array(0) { } @@ -141,13 +149,5 @@ array(13) { } ["b"]=> string(1) "b" - [0]=> - float(0.001) - ["abcd%0abcd%0abcd"]=> - string(14) "abcd%0abcd%0abcd" - [4]=> - float(4.01) - [5]=> - string(1) "5" } Done diff --git a/ext/standard/tests/array/ksort_variation9.phpt b/ext/standard/tests/array/ksort_variation9.phpt index 9322af70f57fa..0023a9e0602ae 100644 --- a/ext/standard/tests/array/ksort_variation9.phpt +++ b/ext/standard/tests/array/ksort_variation9.phpt @@ -81,20 +81,20 @@ array(5) { - With default sort flag - bool(true) array(3) { - ["a"]=> - string(6) "orange" [0]=> string(6) "banana" + ["a"]=> + string(6) "orange" ["c"]=> string(5) "apple" } - Sort flag = SORT_REGULAR - bool(true) array(3) { - ["a"]=> - string(6) "orange" [0]=> string(6) "banana" + ["a"]=> + string(6) "orange" ["c"]=> string(5) "apple" } diff --git a/ext/standard/tests/file/gh9227.phpt b/ext/standard/tests/file/gh9227.phpt new file mode 100644 index 0000000000000..56c54d29fed4b --- /dev/null +++ b/ext/standard/tests/file/gh9227.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug GH-9227 (Trailing dots and spaces in filenames are ignored) +--SKIPIF-- + +--FILE-- + +--CLEAN-- + +--EXPECT-- +bool(false) +int(3) +bool(false) diff --git a/ext/standard/tests/http/gh9316.phpt b/ext/standard/tests/http/gh9316.phpt new file mode 100644 index 0000000000000..126e1bb7bf72f --- /dev/null +++ b/ext/standard/tests/http/gh9316.phpt @@ -0,0 +1,38 @@ +--TEST-- +Bug GH-9316 ($http_response_header is wrong for long status line) +--SKIPIF-- + +--INI-- +allow_url_fopen=1 +--FILE-- + $pid, 'uri' => $uri] = http_server($responses, $output); + +for ($i = 0; $i < count($responses); ++$i) { + $f = @fopen($uri, "r"); + var_dump($http_response_header); + fclose($f); +} + +http_server_kill($pid); + +--EXPECT-- +array(2) { + [0]=> + string(126) "HTTP/1.1 200 Some very long reason-phrase to test that this is properly handled by our code without adding a new header like " + [1]=> + string(12) "Good: Header" +} +array(2) { + [0]=> + string(13) "HTTP/1.1 200 " + [1]=> + string(12) "Good: Header" +} diff --git a/ext/standard/tests/network/bug72071.phpt b/ext/standard/tests/network/bug72071.phpt index 6d19ab46e3767..3940083f06a61 100644 --- a/ext/standard/tests/network/bug72071.phpt +++ b/ext/standard/tests/network/bug72071.phpt @@ -11,4 +11,4 @@ setcookie("name", "value", $date); ?> --EXPECT-- --EXPECTHEADERS-- -Set-Cookie: name=value; expires=Sat, 01-Apr-2017 12:25:39 GMT; Max-Age=0 +Set-Cookie: name=value; expires=Sat, 01 Apr 2017 12:25:39 GMT; Max-Age=0 diff --git a/ext/standard/tests/network/setcookie.phpt b/ext/standard/tests/network/setcookie.phpt index aad67298f143f..f43680a5bceae 100644 --- a/ext/standard/tests/network/setcookie.phpt +++ b/ext/standard/tests/network/setcookie.phpt @@ -21,20 +21,20 @@ setcookie('name', 'value', ['expires' => $tsp]); setcookie('name', 'value', ['expires' => $tsn, 'path' => '/path/', 'domain' => 'domain.tld', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict']); $expected = array( - 'Set-Cookie: name=deleted; expires='.date('D, d-M-Y H:i:s', 1).' GMT; Max-Age=0', - 'Set-Cookie: name=deleted; expires='.date('D, d-M-Y H:i:s', 1).' GMT; Max-Age=0', + 'Set-Cookie: name=deleted; expires='.date('D, d M Y H:i:s', 1).' GMT; Max-Age=0', + 'Set-Cookie: name=deleted; expires='.date('D, d M Y H:i:s', 1).' GMT; Max-Age=0', 'Set-Cookie: name=value', 'Set-Cookie: name=space%20value', 'Set-Cookie: name=value', - 'Set-Cookie: name=value; expires='.date('D, d-M-Y H:i:s', $tsp).' GMT; Max-Age=5', - 'Set-Cookie: name=value; expires='.date('D, d-M-Y H:i:s', $tsn).' GMT; Max-Age=0', - 'Set-Cookie: name=value; expires='.date('D, d-M-Y H:i:s', $tsc).' GMT; Max-Age=0', + 'Set-Cookie: name=value; expires='.date('D, d M Y H:i:s', $tsp).' GMT; Max-Age=5', + 'Set-Cookie: name=value; expires='.date('D, d M Y H:i:s', $tsn).' GMT; Max-Age=0', + 'Set-Cookie: name=value; expires='.date('D, d M Y H:i:s', $tsc).' GMT; Max-Age=0', 'Set-Cookie: name=value; path=/path/', 'Set-Cookie: name=value; domain=domain.tld', 'Set-Cookie: name=value; secure', 'Set-Cookie: name=value; HttpOnly', - 'Set-Cookie: name=value; expires='.date('D, d-M-Y H:i:s', $tsp).' GMT; Max-Age=5', - 'Set-Cookie: name=value; expires='.date('D, d-M-Y H:i:s', $tsn).' GMT; Max-Age=0; path=/path/; domain=domain.tld; secure; HttpOnly; SameSite=Strict' + 'Set-Cookie: name=value; expires='.date('D, d M Y H:i:s', $tsp).' GMT; Max-Age=5', + 'Set-Cookie: name=value; expires='.date('D, d M Y H:i:s', $tsn).' GMT; Max-Age=0; path=/path/; domain=domain.tld; secure; HttpOnly; SameSite=Strict' ); $headers = headers_list(); diff --git a/ext/standard/tests/serialize/bug49649.phpt b/ext/standard/tests/serialize/bug49649.phpt index 7bbba03c1492e..310cd5b8881e3 100644 --- a/ext/standard/tests/serialize/bug49649.phpt +++ b/ext/standard/tests/serialize/bug49649.phpt @@ -33,7 +33,8 @@ class Foo $class = unserialize(base64_decode($serialized)); var_dump($class); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Creation of dynamic property Foo::$notThere is deprecated in %s on line %d object(Foo)#1 (4) { ["public"]=> int(3) diff --git a/ext/standard/tests/serialize/bug49649_1.phpt b/ext/standard/tests/serialize/bug49649_1.phpt index e4f01d3039d5a..ddaff1e960c4f 100644 --- a/ext/standard/tests/serialize/bug49649_1.phpt +++ b/ext/standard/tests/serialize/bug49649_1.phpt @@ -33,7 +33,8 @@ class Foo $class = unserialize(base64_decode($serialized)); var_dump($class); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Creation of dynamic property Foo::$notThere is deprecated in %s on line %d object(Foo)#1 (4) { ["public":protected]=> int(3) diff --git a/ext/standard/tests/serialize/bug49649_2.phpt b/ext/standard/tests/serialize/bug49649_2.phpt index 93b5e298f993e..16a9b4d7c722e 100644 --- a/ext/standard/tests/serialize/bug49649_2.phpt +++ b/ext/standard/tests/serialize/bug49649_2.phpt @@ -33,7 +33,8 @@ class Foo $class = unserialize(base64_decode($serialized)); var_dump($class); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Creation of dynamic property Foo::$notThere is deprecated in %s on line %d object(Foo)#1 (4) { ["public":"Foo":private]=> int(3) diff --git a/ext/standard/tests/serialize/bug62836_1.phpt b/ext/standard/tests/serialize/bug62836_1.phpt index 7d03e9fd187bd..480dbab1df127 100644 --- a/ext/standard/tests/serialize/bug62836_1.phpt +++ b/ext/standard/tests/serialize/bug62836_1.phpt @@ -5,7 +5,7 @@ Bug #62836 (Seg fault or broken object references on unserialize()) $serialized_object='O:1:"A":4:{s:1:"b";O:1:"B":0:{}s:2:"b1";r:2;s:1:"c";O:1:"B":0:{}s:2:"c1";r:4;}'; spl_autoload_register(function ($name) { unserialize("i:4;"); - eval("class $name {} "); + eval("#[AllowDynamicProperties] class $name {} "); }); print_r(unserialize($serialized_object)); diff --git a/ext/standard/tests/serialize/bug62836_2.phpt b/ext/standard/tests/serialize/bug62836_2.phpt index 0634b1dac135b..95bd75bb6fb87 100644 --- a/ext/standard/tests/serialize/bug62836_2.phpt +++ b/ext/standard/tests/serialize/bug62836_2.phpt @@ -8,7 +8,7 @@ ini_set('unserialize_callback_func','mycallback'); function mycallback($classname) { unserialize("i:4;"); - eval ("class $classname {} "); + eval ("#[AllowDynamicProperties] class $classname {} "); } print_r(unserialize($serialized_object)); diff --git a/ext/standard/tests/serialize/bug72663.phpt b/ext/standard/tests/serialize/bug72663.phpt index c50591ca963f4..9c006d50d80ba 100644 --- a/ext/standard/tests/serialize/bug72663.phpt +++ b/ext/standard/tests/serialize/bug72663.phpt @@ -3,6 +3,7 @@ Bug #72663 (1): Don't call __destruct if __wakeup not called or fails --FILE-- +--EXPECT-- +object(__PHP_Incomplete_Class)#1 (2) { + ["__PHP_Incomplete_Class_Name"]=> + string(1) "C" + ["p"]=> + int(1) +} diff --git a/ext/standard/tests/serialize/unserialize_overwrite_undeclared_protected.phpt b/ext/standard/tests/serialize/unserialize_overwrite_undeclared_protected.phpt index b442c922c4153..d9f44c37a1560 100644 --- a/ext/standard/tests/serialize/unserialize_overwrite_undeclared_protected.phpt +++ b/ext/standard/tests/serialize/unserialize_overwrite_undeclared_protected.phpt @@ -12,7 +12,8 @@ O:4:"Test":2:{s:4:"\0*\0x";N;s:4:"\0*\0x";N;} STR; var_dump(unserialize($str)); ?> ---EXPECT-- +--EXPECTF-- +Deprecated: Creation of dynamic property Test::$x is deprecated in %s on line %d object(Test)#1 (2) { ["foo"]=> NULL diff --git a/ext/standard/tests/serialize/unserialize_ref_to_overwritten_declared_prop.phpt b/ext/standard/tests/serialize/unserialize_ref_to_overwritten_declared_prop.phpt index f32b0c12e2f26..c4c3c957d3ee8 100644 --- a/ext/standard/tests/serialize/unserialize_ref_to_overwritten_declared_prop.phpt +++ b/ext/standard/tests/serialize/unserialize_ref_to_overwritten_declared_prop.phpt @@ -3,10 +3,10 @@ Trying to create a reference to an overwritten declared property --FILE-- --EXPECTF-- -Notice: unserialize(): Error at offset 51 of 52 bytes in %s on line %d +Notice: unserialize(): Error at offset 36 of 52 bytes in %s on line %d bool(false) diff --git a/ext/standard/tests/streams/gh8409.phpt b/ext/standard/tests/streams/gh8409.phpt new file mode 100644 index 0000000000000..7f0a28b183f81 --- /dev/null +++ b/ext/standard/tests/streams/gh8409.phpt @@ -0,0 +1,25 @@ +--TEST-- +GH-8409: Error in socket creation when error handler does not clean persistent connection +--FILE-- + +--EXPECTF-- +Fatal error: stream_socket_client(): %s in %sgh8409.php on line %d +OK: persistent stream closed diff --git a/ext/standard/tests/streams/gh8472.phpt b/ext/standard/tests/streams/gh8472.phpt new file mode 100644 index 0000000000000..b03c0ceb5e1da --- /dev/null +++ b/ext/standard/tests/streams/gh8472.phpt @@ -0,0 +1,35 @@ +--TEST-- +GH-8472: The resource returned by stream_socket_accept may have incorrect metadata +--FILE-- + +--EXPECT-- +string(4) "0000" +string(1) "0" diff --git a/ext/standard/var.c b/ext/standard/var.c index 9421a5bb74dce..268c535a80242 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -343,15 +343,17 @@ PHPAPI void php_debug_zval_dump(zval *struc, int level) /* {{{ */ PUTS("}\n"); break; case IS_OBJECT: - myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_DEBUG); - if (myht) { - if (GC_IS_RECURSIVE(myht)) { - PUTS("*RECURSION*\n"); - zend_release_properties(myht); - return; - } - GC_PROTECT_RECURSION(myht); + /* Check if this is already recursing on the object before calling zend_get_properties_for, + * to allow infinite recursion detection to work even if classes return temporary arrays, + * and to avoid the need to update the properties table in place to reflect the state + * if the result won't be used. (https://github.com/php/php-src/issues/8044) */ + if (Z_IS_RECURSIVE_P(struc)) { + PUTS("*RECURSION*\n"); + return; } + Z_PROTECT_RECURSION_P(struc); + + myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_DEBUG); class_name = Z_OBJ_HANDLER_P(struc, get_class_name)(Z_OBJ_P(struc)); php_printf("object(%s)#%d (%d) refcount(%u){\n", ZSTR_VAL(class_name), Z_OBJ_HANDLE_P(struc), myht ? zend_array_count(myht) : 0, Z_REFCOUNT_P(struc)); zend_string_release_ex(class_name, 0); @@ -370,13 +372,13 @@ PHPAPI void php_debug_zval_dump(zval *struc, int level) /* {{{ */ zval_object_property_dump(prop_info, val, index, key, level); } } ZEND_HASH_FOREACH_END(); - GC_UNPROTECT_RECURSION(myht); zend_release_properties(myht); } if (level > 1) { php_printf("%*c", level - 1, ' '); } PUTS("}\n"); + Z_UNPROTECT_RECURSION_P(struc); break; case IS_RESOURCE: { const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(struc)); @@ -552,17 +554,17 @@ PHPAPI void php_var_export_ex(zval *struc, int level, smart_str *buf) /* {{{ */ break; case IS_OBJECT: - myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_VAR_EXPORT); - if (myht) { - if (GC_IS_RECURSIVE(myht)) { - smart_str_appendl(buf, "NULL", 4); - zend_error(E_WARNING, "var_export does not handle circular references"); - zend_release_properties(myht); - return; - } else { - GC_TRY_PROTECT_RECURSION(myht); - } + /* Check if this is already recursing on the object before calling zend_get_properties_for, + * to allow infinite recursion detection to work even if classes return temporary arrays, + * and to avoid the need to update the properties table in place to reflect the state + * if the result won't be used. (https://github.com/php/php-src/issues/8044) */ + if (Z_IS_RECURSIVE_P(struc)) { + smart_str_appendl(buf, "NULL", 4); + zend_error(E_WARNING, "var_export does not handle circular references"); + return; } + Z_PROTECT_RECURSION_P(struc); + myht = zend_get_properties_for(struc, ZEND_PROP_PURPOSE_VAR_EXPORT); if (level > 1) { smart_str_appendc(buf, '\n'); buffer_append_spaces(buf, level - 1); @@ -593,9 +595,9 @@ PHPAPI void php_var_export_ex(zval *struc, int level, smart_str *buf) /* {{{ */ php_object_element_export(val, index, key, level, buf); } ZEND_HASH_FOREACH_END(); } - GC_TRY_UNPROTECT_RECURSION(myht); zend_release_properties(myht); } + Z_UNPROTECT_RECURSION_P(struc); if (level > 1 && !is_enum) { buffer_append_spaces(buf, level - 1); } diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index 0556d5522ce5d..bcf19002fc0a2 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -641,6 +641,20 @@ declared_property: int ret = is_property_visibility_changed(obj->ce, &key); if (EXPECTED(!ret)) { + if (UNEXPECTED(obj->ce->ce_flags & ZEND_ACC_NO_DYNAMIC_PROPERTIES)) { + zend_throw_error(NULL, "Cannot create dynamic property %s::$%s", + ZSTR_VAL(obj->ce->name), zend_get_unmangled_property_name(Z_STR_P(&key))); + zval_ptr_dtor_str(&key); + goto failure; + } else if (!(obj->ce->ce_flags & ZEND_ACC_ALLOW_DYNAMIC_PROPERTIES)) { + zend_error(E_DEPRECATED, "Creation of dynamic property %s::$%s is deprecated", + ZSTR_VAL(obj->ce->name), zend_get_unmangled_property_name(Z_STR_P(&key))); + if (EG(exception)) { + zval_ptr_dtor_str(&key); + goto failure; + } + } + data = zend_hash_add_new(ht, Z_STR(key), &EG(uninitialized_zval)); } else if (ret < 0) { goto failure; diff --git a/ext/sysvmsg/sysvmsg.c b/ext/sysvmsg/sysvmsg.c index d9146f6e78cc3..debb8b675b0c2 100644 --- a/ext/sysvmsg/sysvmsg.c +++ b/ext/sysvmsg/sysvmsg.c @@ -79,7 +79,6 @@ static zend_object *sysvmsg_queue_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &sysvmsg_queue_object_handlers; return &intern->std; } @@ -102,6 +101,7 @@ PHP_MINIT_FUNCTION(sysvmsg) { sysvmsg_queue_ce = register_class_SysvMessageQueue(); sysvmsg_queue_ce->create_object = sysvmsg_queue_create_object; + sysvmsg_queue_ce->default_object_handlers = &sysvmsg_queue_object_handlers; memcpy(&sysvmsg_queue_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); sysvmsg_queue_object_handlers.offset = XtOffsetOf(sysvmsg_queue_t, std); diff --git a/ext/sysvmsg/sysvmsg_arginfo.h b/ext/sysvmsg/sysvmsg_arginfo.h index 35354dc2acfb9..d90c83f29d21f 100644 --- a/ext/sysvmsg/sysvmsg_arginfo.h +++ b/ext/sysvmsg/sysvmsg_arginfo.h @@ -71,11 +71,11 @@ static const zend_function_entry class_SysvMessageQueue_methods[] = { static void register_sysvmsg_symbols(int module_number) { - REGISTER_LONG_CONSTANT("MSG_IPC_NOWAIT", PHP_MSG_IPC_NOWAIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_EAGAIN", EAGAIN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_ENOMSG", ENOMSG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_NOERROR", PHP_MSG_NOERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("MSG_EXCEPT", PHP_MSG_EXCEPT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_IPC_NOWAIT", PHP_MSG_IPC_NOWAIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_EAGAIN", EAGAIN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_ENOMSG", ENOMSG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_NOERROR", PHP_MSG_NOERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MSG_EXCEPT", PHP_MSG_EXCEPT, CONST_PERSISTENT); } static zend_class_entry *register_class_SysvMessageQueue(void) diff --git a/ext/sysvsem/sysvsem.c b/ext/sysvsem/sysvsem.c index 42fb1d96c6fb0..d9369dfa9f6f1 100644 --- a/ext/sysvsem/sysvsem.c +++ b/ext/sysvsem/sysvsem.c @@ -100,7 +100,6 @@ static zend_object *sysvsem_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &sysvsem_object_handlers; return &intern->std; } @@ -152,6 +151,7 @@ PHP_MINIT_FUNCTION(sysvsem) { sysvsem_ce = register_class_SysvSemaphore(); sysvsem_ce->create_object = sysvsem_create_object; + sysvsem_ce->default_object_handlers = &sysvsem_object_handlers; memcpy(&sysvsem_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); sysvsem_object_handlers.offset = XtOffsetOf(sysvsem_sem, std); diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c index 717c75337bb66..bec3af680e0d1 100644 --- a/ext/sysvshm/sysvshm.c +++ b/ext/sysvshm/sysvshm.c @@ -47,7 +47,6 @@ static zend_object *sysvshm_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &sysvshm_object_handlers; return &intern->std; } @@ -101,6 +100,7 @@ PHP_MINIT_FUNCTION(sysvshm) { sysvshm_ce = register_class_SysvSharedMemory(); sysvshm_ce->create_object = sysvshm_create_object; + sysvshm_ce->default_object_handlers = &sysvshm_object_handlers; memcpy(&sysvshm_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); sysvshm_object_handlers.offset = XtOffsetOf(sysvshm_shm, std); diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index a59268680cacb..535ac785cacac 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -89,10 +89,6 @@ } \ } - -#define TIDY_TAG_CONST(tag) REGISTER_LONG_CONSTANT("TIDY_TAG_" #tag, TidyTag_##tag, CONST_CS | CONST_PERSISTENT) -#define TIDY_NODE_CONST(name, type) REGISTER_LONG_CONSTANT("TIDY_NODETYPE_" #name, TidyNode_##type, CONST_CS | CONST_PERSISTENT) - #define TIDY_OPEN_BASE_DIR_CHECK(filename) \ if (php_check_open_basedir(filename)) { \ RETURN_FALSE; \ @@ -157,8 +153,6 @@ static void *php_tidy_get_opt_val(PHPTidyDoc *, TidyOption, TidyOptionType *); static void php_tidy_create_node(INTERNAL_FUNCTION_PARAMETERS, tidy_base_nodetypes); static int _php_tidy_set_tidy_opt(TidyDoc, char *, zval *); static int _php_tidy_apply_config_array(TidyDoc doc, HashTable *ht_options); -static void _php_tidy_register_nodetypes(INIT_FUNC_ARGS); -static void _php_tidy_register_tags(INIT_FUNC_ARGS); static PHP_INI_MH(php_tidy_set_clean_output); static void php_tidy_clean_output_start(const char *name, size_t name_len); static php_output_handler *php_tidy_output_handler_init(const char *handler_name, size_t handler_name_len, size_t chunk_size, int flags); @@ -174,7 +168,7 @@ ZEND_DECLARE_MODULE_GLOBALS(tidy) PHP_INI_BEGIN() STD_PHP_INI_ENTRY("tidy.default_config", "", PHP_INI_SYSTEM, OnUpdateString, default_config, zend_tidy_globals, tidy_globals) -STD_PHP_INI_ENTRY("tidy.clean_output", "0", PHP_INI_USER, php_tidy_set_clean_output, clean_output, zend_tidy_globals, tidy_globals) +STD_PHP_INI_BOOLEAN("tidy.clean_output", "0", PHP_INI_USER, php_tidy_set_clean_output, clean_output, zend_tidy_globals, tidy_globals) PHP_INI_END() static zend_class_entry *tidy_ce_doc, *tidy_ce_node; @@ -850,8 +844,7 @@ static PHP_MINIT_FUNCTION(tidy) tidy_object_handlers_node.offset = tidy_object_handlers_doc.offset = XtOffsetOf(PHPTidyObj, std); tidy_object_handlers_node.free_obj = tidy_object_handlers_doc.free_obj = tidy_object_free_storage; - _php_tidy_register_tags(INIT_FUNC_ARGS_PASSTHRU); - _php_tidy_register_nodetypes(INIT_FUNC_ARGS_PASSTHRU); + register_tidy_symbols(module_number); php_output_handler_alias_register(ZEND_STRL("ob_tidyhandler"), php_tidy_output_handler_init); @@ -1630,175 +1623,4 @@ PHP_METHOD(tidyNode, __construct) } /* }}} */ -static void _php_tidy_register_nodetypes(INIT_FUNC_ARGS) -{ - TIDY_NODE_CONST(ROOT, Root); - TIDY_NODE_CONST(DOCTYPE, DocType); - TIDY_NODE_CONST(COMMENT, Comment); - TIDY_NODE_CONST(PROCINS, ProcIns); - TIDY_NODE_CONST(TEXT, Text); - TIDY_NODE_CONST(START, Start); - TIDY_NODE_CONST(END, End); - TIDY_NODE_CONST(STARTEND, StartEnd); - TIDY_NODE_CONST(CDATA, CDATA); - TIDY_NODE_CONST(SECTION, Section); - TIDY_NODE_CONST(ASP, Asp); - TIDY_NODE_CONST(JSTE, Jste); - TIDY_NODE_CONST(PHP, Php); - TIDY_NODE_CONST(XMLDECL, XmlDecl); -} - -static void _php_tidy_register_tags(INIT_FUNC_ARGS) -{ - TIDY_TAG_CONST(UNKNOWN); - TIDY_TAG_CONST(A); - TIDY_TAG_CONST(ABBR); - TIDY_TAG_CONST(ACRONYM); - TIDY_TAG_CONST(ADDRESS); - TIDY_TAG_CONST(ALIGN); - TIDY_TAG_CONST(APPLET); - TIDY_TAG_CONST(AREA); - TIDY_TAG_CONST(B); - TIDY_TAG_CONST(BASE); - TIDY_TAG_CONST(BASEFONT); - TIDY_TAG_CONST(BDO); - TIDY_TAG_CONST(BGSOUND); - TIDY_TAG_CONST(BIG); - TIDY_TAG_CONST(BLINK); - TIDY_TAG_CONST(BLOCKQUOTE); - TIDY_TAG_CONST(BODY); - TIDY_TAG_CONST(BR); - TIDY_TAG_CONST(BUTTON); - TIDY_TAG_CONST(CAPTION); - TIDY_TAG_CONST(CENTER); - TIDY_TAG_CONST(CITE); - TIDY_TAG_CONST(CODE); - TIDY_TAG_CONST(COL); - TIDY_TAG_CONST(COLGROUP); - TIDY_TAG_CONST(COMMENT); - TIDY_TAG_CONST(DD); - TIDY_TAG_CONST(DEL); - TIDY_TAG_CONST(DFN); - TIDY_TAG_CONST(DIR); - TIDY_TAG_CONST(DIV); - TIDY_TAG_CONST(DL); - TIDY_TAG_CONST(DT); - TIDY_TAG_CONST(EM); - TIDY_TAG_CONST(EMBED); - TIDY_TAG_CONST(FIELDSET); - TIDY_TAG_CONST(FONT); - TIDY_TAG_CONST(FORM); - TIDY_TAG_CONST(FRAME); - TIDY_TAG_CONST(FRAMESET); - TIDY_TAG_CONST(H1); - TIDY_TAG_CONST(H2); - TIDY_TAG_CONST(H3); - TIDY_TAG_CONST(H4); - TIDY_TAG_CONST(H5); - TIDY_TAG_CONST(H6); - TIDY_TAG_CONST(HEAD); - TIDY_TAG_CONST(HR); - TIDY_TAG_CONST(HTML); - TIDY_TAG_CONST(I); - TIDY_TAG_CONST(IFRAME); - TIDY_TAG_CONST(ILAYER); - TIDY_TAG_CONST(IMG); - TIDY_TAG_CONST(INPUT); - TIDY_TAG_CONST(INS); - TIDY_TAG_CONST(ISINDEX); - TIDY_TAG_CONST(KBD); - TIDY_TAG_CONST(KEYGEN); - TIDY_TAG_CONST(LABEL); - TIDY_TAG_CONST(LAYER); - TIDY_TAG_CONST(LEGEND); - TIDY_TAG_CONST(LI); - TIDY_TAG_CONST(LINK); - TIDY_TAG_CONST(LISTING); - TIDY_TAG_CONST(MAP); - TIDY_TAG_CONST(MARQUEE); - TIDY_TAG_CONST(MENU); - TIDY_TAG_CONST(META); - TIDY_TAG_CONST(MULTICOL); - TIDY_TAG_CONST(NOBR); - TIDY_TAG_CONST(NOEMBED); - TIDY_TAG_CONST(NOFRAMES); - TIDY_TAG_CONST(NOLAYER); - TIDY_TAG_CONST(NOSAVE); - TIDY_TAG_CONST(NOSCRIPT); - TIDY_TAG_CONST(OBJECT); - TIDY_TAG_CONST(OL); - TIDY_TAG_CONST(OPTGROUP); - TIDY_TAG_CONST(OPTION); - TIDY_TAG_CONST(P); - TIDY_TAG_CONST(PARAM); - TIDY_TAG_CONST(PLAINTEXT); - TIDY_TAG_CONST(PRE); - TIDY_TAG_CONST(Q); - TIDY_TAG_CONST(RB); - TIDY_TAG_CONST(RBC); - TIDY_TAG_CONST(RP); - TIDY_TAG_CONST(RT); - TIDY_TAG_CONST(RTC); - TIDY_TAG_CONST(RUBY); - TIDY_TAG_CONST(S); - TIDY_TAG_CONST(SAMP); - TIDY_TAG_CONST(SCRIPT); - TIDY_TAG_CONST(SELECT); - TIDY_TAG_CONST(SERVER); - TIDY_TAG_CONST(SERVLET); - TIDY_TAG_CONST(SMALL); - TIDY_TAG_CONST(SPACER); - TIDY_TAG_CONST(SPAN); - TIDY_TAG_CONST(STRIKE); - TIDY_TAG_CONST(STRONG); - TIDY_TAG_CONST(STYLE); - TIDY_TAG_CONST(SUB); - TIDY_TAG_CONST(SUP); - TIDY_TAG_CONST(TABLE); - TIDY_TAG_CONST(TBODY); - TIDY_TAG_CONST(TD); - TIDY_TAG_CONST(TEXTAREA); - TIDY_TAG_CONST(TFOOT); - TIDY_TAG_CONST(TH); - TIDY_TAG_CONST(THEAD); - TIDY_TAG_CONST(TITLE); - TIDY_TAG_CONST(TR); - TIDY_TAG_CONST(TT); - TIDY_TAG_CONST(U); - TIDY_TAG_CONST(UL); - TIDY_TAG_CONST(VAR); - TIDY_TAG_CONST(WBR); - TIDY_TAG_CONST(XMP); -# ifdef HAVE_TIDYBUFFIO_H - TIDY_TAG_CONST(ARTICLE); - TIDY_TAG_CONST(ASIDE); - TIDY_TAG_CONST(AUDIO); - TIDY_TAG_CONST(BDI); - TIDY_TAG_CONST(CANVAS); - TIDY_TAG_CONST(COMMAND); - TIDY_TAG_CONST(DATALIST); - TIDY_TAG_CONST(DETAILS); - TIDY_TAG_CONST(DIALOG); - TIDY_TAG_CONST(FIGCAPTION); - TIDY_TAG_CONST(FIGURE); - TIDY_TAG_CONST(FOOTER); - TIDY_TAG_CONST(HEADER); - TIDY_TAG_CONST(HGROUP); - TIDY_TAG_CONST(MAIN); - TIDY_TAG_CONST(MARK); - TIDY_TAG_CONST(MENUITEM); - TIDY_TAG_CONST(METER); - TIDY_TAG_CONST(NAV); - TIDY_TAG_CONST(OUTPUT); - TIDY_TAG_CONST(PROGRESS); - TIDY_TAG_CONST(SECTION); - TIDY_TAG_CONST(SOURCE); - TIDY_TAG_CONST(SUMMARY); - TIDY_TAG_CONST(TEMPLATE); - TIDY_TAG_CONST(TIME); - TIDY_TAG_CONST(TRACK); - TIDY_TAG_CONST(VIDEO); -# endif -} - #endif diff --git a/ext/tidy/tidy.stub.php b/ext/tidy/tidy.stub.php index 8890522238d86..e00773f2e1d89 100644 --- a/ext/tidy/tidy.stub.php +++ b/ext/tidy/tidy.stub.php @@ -2,6 +2,815 @@ /** @generate-class-entries */ +/** + * @var int + * @cvalue TidyNode_Root + */ +const TIDY_NODETYPE_ROOT = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_DocType + */ +const TIDY_NODETYPE_DOCTYPE = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_Comment + */ +const TIDY_NODETYPE_COMMENT = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_ProcIns + */ +const TIDY_NODETYPE_PROCINS = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_Text + */ +const TIDY_NODETYPE_TEXT = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_Start + */ +const TIDY_NODETYPE_START = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_End + */ +const TIDY_NODETYPE_END = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_StartEnd + */ +const TIDY_NODETYPE_STARTEND = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_CDATA + */ +const TIDY_NODETYPE_CDATA = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_Section + */ +const TIDY_NODETYPE_SECTION = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_Asp + */ +const TIDY_NODETYPE_ASP = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_Jste + */ +const TIDY_NODETYPE_JSTE = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_Php + */ +const TIDY_NODETYPE_PHP = UNKNOWN; +/** + * @var int + * @cvalue TidyNode_XmlDecl + */ +const TIDY_NODETYPE_XMLDECL = UNKNOWN; + +/** + * @var int + * @cvalue TidyTag_UNKNOWN + */ +const TIDY_TAG_UNKNOWN = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_A + */ +const TIDY_TAG_A = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_ABBR + */ +const TIDY_TAG_ABBR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_ACRONYM + */ +const TIDY_TAG_ACRONYM = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_ADDRESS + */ +const TIDY_TAG_ADDRESS = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_ALIGN + */ +const TIDY_TAG_ALIGN = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_APPLET + */ +const TIDY_TAG_APPLET = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_AREA + */ +const TIDY_TAG_AREA = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_B + */ +const TIDY_TAG_B = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BASE + */ +const TIDY_TAG_BASE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BASEFONT + */ +const TIDY_TAG_BASEFONT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BDO + */ +const TIDY_TAG_BDO = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BGSOUND + */ +const TIDY_TAG_BGSOUND = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BIG + */ +const TIDY_TAG_BIG = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BLINK + */ +const TIDY_TAG_BLINK = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BLOCKQUOTE + */ +const TIDY_TAG_BLOCKQUOTE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BODY + */ +const TIDY_TAG_BODY = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BR + */ +const TIDY_TAG_BR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BUTTON + */ +const TIDY_TAG_BUTTON = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_CAPTION + */ +const TIDY_TAG_CAPTION = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_CENTER + */ +const TIDY_TAG_CENTER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_CITE + */ +const TIDY_TAG_CITE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_CODE + */ +const TIDY_TAG_CODE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_COL + */ +const TIDY_TAG_COL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_COLGROUP + */ +const TIDY_TAG_COLGROUP = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_COMMENT + */ +const TIDY_TAG_COMMENT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DD + */ +const TIDY_TAG_DD = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DEL + */ +const TIDY_TAG_DEL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DFN + */ +const TIDY_TAG_DFN = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DIR + */ +const TIDY_TAG_DIR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DIV + */ +const TIDY_TAG_DIV = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DL + */ +const TIDY_TAG_DL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DT + */ +const TIDY_TAG_DT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_EM + */ +const TIDY_TAG_EM = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_EMBED + */ +const TIDY_TAG_EMBED = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FIELDSET + */ +const TIDY_TAG_FIELDSET = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FONT + */ +const TIDY_TAG_FONT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FORM + */ +const TIDY_TAG_FORM = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FRAME + */ +const TIDY_TAG_FRAME = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FRAMESET + */ +const TIDY_TAG_FRAMESET = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_H1 + */ +const TIDY_TAG_H1 = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_H2 + */ +const TIDY_TAG_H2 = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_H3 + */ +const TIDY_TAG_H3 = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_H4 + */ +const TIDY_TAG_H4 = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_H5 + */ +const TIDY_TAG_H5 = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_H6 + */ +const TIDY_TAG_H6 = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_HEAD + */ +const TIDY_TAG_HEAD = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_HR + */ +const TIDY_TAG_HR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_HTML + */ +const TIDY_TAG_HTML = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_I + */ +const TIDY_TAG_I = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_IFRAME + */ +const TIDY_TAG_IFRAME = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_ILAYER + */ +const TIDY_TAG_ILAYER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_IMG + */ +const TIDY_TAG_IMG = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_INPUT + */ +const TIDY_TAG_INPUT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_INS + */ +const TIDY_TAG_INS = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_ISINDEX + */ +const TIDY_TAG_ISINDEX = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_KBD + */ +const TIDY_TAG_KBD = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_KEYGEN + */ +const TIDY_TAG_KEYGEN = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_LABEL + */ +const TIDY_TAG_LABEL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_LAYER + */ +const TIDY_TAG_LAYER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_LEGEND + */ +const TIDY_TAG_LEGEND = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_LI + */ +const TIDY_TAG_LI = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_LINK + */ +const TIDY_TAG_LINK = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_LISTING + */ +const TIDY_TAG_LISTING = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_MAP + */ +const TIDY_TAG_MAP = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_MARQUEE + */ +const TIDY_TAG_MARQUEE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_MENU + */ +const TIDY_TAG_MENU = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_META + */ +const TIDY_TAG_META = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_MULTICOL + */ +const TIDY_TAG_MULTICOL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_NOBR + */ +const TIDY_TAG_NOBR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_NOEMBED + */ +const TIDY_TAG_NOEMBED = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_NOFRAMES + */ +const TIDY_TAG_NOFRAMES = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_NOLAYER + */ +const TIDY_TAG_NOLAYER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_NOSAVE + */ +const TIDY_TAG_NOSAVE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_NOSCRIPT + */ +const TIDY_TAG_NOSCRIPT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_OBJECT + */ +const TIDY_TAG_OBJECT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_OL + */ +const TIDY_TAG_OL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_OPTGROUP + */ +const TIDY_TAG_OPTGROUP = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_OPTION + */ +const TIDY_TAG_OPTION = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_P + */ +const TIDY_TAG_P = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_PARAM + */ +const TIDY_TAG_PARAM = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_PLAINTEXT + */ +const TIDY_TAG_PLAINTEXT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_PRE + */ +const TIDY_TAG_PRE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_Q + */ +const TIDY_TAG_Q = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_RB + */ +const TIDY_TAG_RB = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_RBC + */ +const TIDY_TAG_RBC = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_RP + */ +const TIDY_TAG_RP = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_RT + */ +const TIDY_TAG_RT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_RTC + */ +const TIDY_TAG_RTC = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_RUBY + */ +const TIDY_TAG_RUBY = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_S + */ +const TIDY_TAG_S = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SAMP + */ +const TIDY_TAG_SAMP = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SCRIPT + */ +const TIDY_TAG_SCRIPT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SELECT + */ +const TIDY_TAG_SELECT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SERVER + */ +const TIDY_TAG_SERVER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SERVLET + */ +const TIDY_TAG_SERVLET = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SMALL + */ +const TIDY_TAG_SMALL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SPACER + */ +const TIDY_TAG_SPACER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SPAN + */ +const TIDY_TAG_SPAN = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_STRIKE + */ +const TIDY_TAG_STRIKE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_STRONG + */ +const TIDY_TAG_STRONG = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_STYLE + */ +const TIDY_TAG_STYLE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SUB + */ +const TIDY_TAG_SUB = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SUP + */ +const TIDY_TAG_SUP = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TABLE + */ +const TIDY_TAG_TABLE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TBODY + */ +const TIDY_TAG_TBODY = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TD + */ +const TIDY_TAG_TD = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TEXTAREA + */ +const TIDY_TAG_TEXTAREA = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TFOOT + */ +const TIDY_TAG_TFOOT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TH + */ +const TIDY_TAG_TH = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_THEAD + */ +const TIDY_TAG_THEAD = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TITLE + */ +const TIDY_TAG_TITLE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TR + */ +const TIDY_TAG_TR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TT + */ +const TIDY_TAG_TT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_U + */ +const TIDY_TAG_U = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_UL + */ +const TIDY_TAG_UL = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_VAR + */ +const TIDY_TAG_VAR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_WBR + */ +const TIDY_TAG_WBR = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_XMP + */ +const TIDY_TAG_XMP = UNKNOWN; +#ifdef HAVE_TIDYBUFFIO_H +/** + * @var int + * @cvalue TidyTag_ARTICLE + */ +const TIDY_TAG_ARTICLE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_ASIDE + */ +const TIDY_TAG_ASIDE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_AUDIO + */ +const TIDY_TAG_AUDIO = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_BDI + */ +const TIDY_TAG_BDI = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_CANVAS + */ +const TIDY_TAG_CANVAS = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_COMMAND + */ +const TIDY_TAG_COMMAND = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DATALIST + */ +const TIDY_TAG_DATALIST = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DETAILS + */ +const TIDY_TAG_DETAILS = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_DIALOG + */ +const TIDY_TAG_DIALOG = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FIGCAPTION + */ +const TIDY_TAG_FIGCAPTION = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FIGURE + */ +const TIDY_TAG_FIGURE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_FOOTER + */ +const TIDY_TAG_FOOTER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_HEADER + */ +const TIDY_TAG_HEADER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_HGROUP + */ +const TIDY_TAG_HGROUP = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_MAIN + */ +const TIDY_TAG_MAIN = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_MARK + */ +const TIDY_TAG_MARK = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_MENUITEM + */ +const TIDY_TAG_MENUITEM = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_METER + */ +const TIDY_TAG_METER = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_NAV + */ +const TIDY_TAG_NAV = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_OUTPUT + */ +const TIDY_TAG_OUTPUT = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_PROGRESS + */ +const TIDY_TAG_PROGRESS = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SECTION + */ +const TIDY_TAG_SECTION = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SOURCE + */ +const TIDY_TAG_SOURCE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_SUMMARY + */ +const TIDY_TAG_SUMMARY = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TEMPLATE + */ +const TIDY_TAG_TEMPLATE = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TIME + */ +const TIDY_TAG_TIME = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_TRACK + */ +const TIDY_TAG_TRACK = UNKNOWN; +/** + * @var int + * @cvalue TidyTag_VIDEO + */ +const TIDY_TAG_VIDEO = UNKNOWN; +# endif + function tidy_parse_string(string $string, array|string|null $config = null, ?string $encoding = null): tidy|false {} function tidy_get_error_buffer(tidy $tidy): string|false {} diff --git a/ext/tidy/tidy_arginfo.h b/ext/tidy/tidy_arginfo.h index 72fc6cd566eb1..5fb3494c4cc1a 100644 --- a/ext/tidy/tidy_arginfo.h +++ b/ext/tidy/tidy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 88c2a02073fc4cebabb4ace0d8db25f9bb017209 */ + * Stub hash: 5efa4f23774fac9610f05d895d8f8c6f481cc5a6 */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_tidy_parse_string, 0, 1, tidy, MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) @@ -296,6 +296,227 @@ static const zend_function_entry class_tidyNode_methods[] = { ZEND_FE_END }; +static void register_tidy_symbols(int module_number) +{ + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_ROOT", TidyNode_Root, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_DOCTYPE", TidyNode_DocType, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_COMMENT", TidyNode_Comment, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_PROCINS", TidyNode_ProcIns, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_TEXT", TidyNode_Text, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_START", TidyNode_Start, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_END", TidyNode_End, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_STARTEND", TidyNode_StartEnd, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_CDATA", TidyNode_CDATA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_SECTION", TidyNode_Section, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_ASP", TidyNode_Asp, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_JSTE", TidyNode_Jste, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_PHP", TidyNode_Php, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_NODETYPE_XMLDECL", TidyNode_XmlDecl, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_UNKNOWN", TidyTag_UNKNOWN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_A", TidyTag_A, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_ABBR", TidyTag_ABBR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_ACRONYM", TidyTag_ACRONYM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_ADDRESS", TidyTag_ADDRESS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_ALIGN", TidyTag_ALIGN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_APPLET", TidyTag_APPLET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_AREA", TidyTag_AREA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_B", TidyTag_B, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BASE", TidyTag_BASE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BASEFONT", TidyTag_BASEFONT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BDO", TidyTag_BDO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BGSOUND", TidyTag_BGSOUND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BIG", TidyTag_BIG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BLINK", TidyTag_BLINK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BLOCKQUOTE", TidyTag_BLOCKQUOTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BODY", TidyTag_BODY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BR", TidyTag_BR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_BUTTON", TidyTag_BUTTON, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_CAPTION", TidyTag_CAPTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_CENTER", TidyTag_CENTER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_CITE", TidyTag_CITE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_CODE", TidyTag_CODE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_COL", TidyTag_COL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_COLGROUP", TidyTag_COLGROUP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_COMMENT", TidyTag_COMMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_DD", TidyTag_DD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_DEL", TidyTag_DEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_DFN", TidyTag_DFN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_DIR", TidyTag_DIR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_DIV", TidyTag_DIV, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_DL", TidyTag_DL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_DT", TidyTag_DT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_EM", TidyTag_EM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_EMBED", TidyTag_EMBED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_FIELDSET", TidyTag_FIELDSET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_FONT", TidyTag_FONT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_FORM", TidyTag_FORM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_FRAME", TidyTag_FRAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_FRAMESET", TidyTag_FRAMESET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_H1", TidyTag_H1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_H2", TidyTag_H2, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_H3", TidyTag_H3, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_H4", TidyTag_H4, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_H5", TidyTag_H5, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_H6", TidyTag_H6, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_HEAD", TidyTag_HEAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_HR", TidyTag_HR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_HTML", TidyTag_HTML, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_I", TidyTag_I, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_IFRAME", TidyTag_IFRAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_ILAYER", TidyTag_ILAYER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_IMG", TidyTag_IMG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_INPUT", TidyTag_INPUT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_INS", TidyTag_INS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_ISINDEX", TidyTag_ISINDEX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_KBD", TidyTag_KBD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_KEYGEN", TidyTag_KEYGEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_LABEL", TidyTag_LABEL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_LAYER", TidyTag_LAYER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_LEGEND", TidyTag_LEGEND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_LI", TidyTag_LI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_LINK", TidyTag_LINK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_LISTING", TidyTag_LISTING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_MAP", TidyTag_MAP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_MARQUEE", TidyTag_MARQUEE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_MENU", TidyTag_MENU, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_META", TidyTag_META, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_MULTICOL", TidyTag_MULTICOL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_NOBR", TidyTag_NOBR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_NOEMBED", TidyTag_NOEMBED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_NOFRAMES", TidyTag_NOFRAMES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_NOLAYER", TidyTag_NOLAYER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_NOSAVE", TidyTag_NOSAVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_NOSCRIPT", TidyTag_NOSCRIPT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_OBJECT", TidyTag_OBJECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_OL", TidyTag_OL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_OPTGROUP", TidyTag_OPTGROUP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_OPTION", TidyTag_OPTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_P", TidyTag_P, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_PARAM", TidyTag_PARAM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_PLAINTEXT", TidyTag_PLAINTEXT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_PRE", TidyTag_PRE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_Q", TidyTag_Q, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_RB", TidyTag_RB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_RBC", TidyTag_RBC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_RP", TidyTag_RP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_RT", TidyTag_RT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_RTC", TidyTag_RTC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_RUBY", TidyTag_RUBY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_S", TidyTag_S, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SAMP", TidyTag_SAMP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SCRIPT", TidyTag_SCRIPT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SELECT", TidyTag_SELECT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SERVER", TidyTag_SERVER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SERVLET", TidyTag_SERVLET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SMALL", TidyTag_SMALL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SPACER", TidyTag_SPACER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SPAN", TidyTag_SPAN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_STRIKE", TidyTag_STRIKE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_STRONG", TidyTag_STRONG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_STYLE", TidyTag_STYLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SUB", TidyTag_SUB, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_SUP", TidyTag_SUP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TABLE", TidyTag_TABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TBODY", TidyTag_TBODY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TD", TidyTag_TD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TEXTAREA", TidyTag_TEXTAREA, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TFOOT", TidyTag_TFOOT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TH", TidyTag_TH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_THEAD", TidyTag_THEAD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TITLE", TidyTag_TITLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TR", TidyTag_TR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_TT", TidyTag_TT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_U", TidyTag_U, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_UL", TidyTag_UL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_VAR", TidyTag_VAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_WBR", TidyTag_WBR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TIDY_TAG_XMP", TidyTag_XMP, CONST_PERSISTENT); +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_ARTICLE", TidyTag_ARTICLE, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_ASIDE", TidyTag_ASIDE, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_AUDIO", TidyTag_AUDIO, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_BDI", TidyTag_BDI, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_CANVAS", TidyTag_CANVAS, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_COMMAND", TidyTag_COMMAND, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_DATALIST", TidyTag_DATALIST, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_DETAILS", TidyTag_DETAILS, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_DIALOG", TidyTag_DIALOG, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_FIGCAPTION", TidyTag_FIGCAPTION, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_FIGURE", TidyTag_FIGURE, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_FOOTER", TidyTag_FOOTER, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_HEADER", TidyTag_HEADER, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_HGROUP", TidyTag_HGROUP, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_MAIN", TidyTag_MAIN, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_MARK", TidyTag_MARK, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_MENUITEM", TidyTag_MENUITEM, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_METER", TidyTag_METER, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_NAV", TidyTag_NAV, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_OUTPUT", TidyTag_OUTPUT, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_PROGRESS", TidyTag_PROGRESS, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_SECTION", TidyTag_SECTION, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_SOURCE", TidyTag_SOURCE, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_SUMMARY", TidyTag_SUMMARY, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_TEMPLATE", TidyTag_TEMPLATE, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_TIME", TidyTag_TIME, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_TRACK", TidyTag_TRACK, CONST_PERSISTENT); +#endif +#if defined(HAVE_TIDYBUFFIO_H) + REGISTER_LONG_CONSTANT("TIDY_TAG_VIDEO", TidyTag_VIDEO, CONST_PERSISTENT); +#endif +} + static zend_class_entry *register_class_tidy(void) { zend_class_entry ce, *class_entry; diff --git a/ext/tokenizer/tokenizer_arginfo.h b/ext/tokenizer/tokenizer_arginfo.h index 8e6ed181957ba..1c81923c8fe6e 100644 --- a/ext/tokenizer/tokenizer_arginfo.h +++ b/ext/tokenizer/tokenizer_arginfo.h @@ -62,7 +62,7 @@ static const zend_function_entry class_PhpToken_methods[] = { static void register_tokenizer_symbols(int module_number) { - REGISTER_LONG_CONSTANT("TOKEN_PARSE", TOKEN_PARSE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("TOKEN_PARSE", TOKEN_PARSE, CONST_PERSISTENT); } static zend_class_entry *register_class_PhpToken(zend_class_entry *class_entry_Stringable) diff --git a/ext/tokenizer/tokenizer_data_arginfo.h b/ext/tokenizer/tokenizer_data_arginfo.h index 608184fc9ce61..ef665193b2ff3 100644 --- a/ext/tokenizer/tokenizer_data_arginfo.h +++ b/ext/tokenizer/tokenizer_data_arginfo.h @@ -5,151 +5,151 @@ static void register_tokenizer_data_symbols(int module_number) { - REGISTER_LONG_CONSTANT("T_LNUMBER", T_LNUMBER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DNUMBER", T_DNUMBER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_STRING", T_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NAME_FULLY_QUALIFIED", T_NAME_FULLY_QUALIFIED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NAME_RELATIVE", T_NAME_RELATIVE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NAME_QUALIFIED", T_NAME_QUALIFIED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_VARIABLE", T_VARIABLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INLINE_HTML", T_INLINE_HTML, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENCAPSED_AND_WHITESPACE", T_ENCAPSED_AND_WHITESPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CONSTANT_ENCAPSED_STRING", T_CONSTANT_ENCAPSED_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_STRING_VARNAME", T_STRING_VARNAME, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NUM_STRING", T_NUM_STRING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INCLUDE", T_INCLUDE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INCLUDE_ONCE", T_INCLUDE_ONCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_EVAL", T_EVAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_REQUIRE", T_REQUIRE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_REQUIRE_ONCE", T_REQUIRE_ONCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LOGICAL_OR", T_LOGICAL_OR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LOGICAL_XOR", T_LOGICAL_XOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_YIELD_FROM", T_YIELD_FROM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INSTANCEOF", T_INSTANCEOF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NEW", T_NEW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IF", T_IF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ELSEIF", T_ELSEIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ELSE", T_ELSE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENDIF", T_ENDIF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ECHO", T_ECHO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DO", T_DO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_WHILE", T_WHILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENDWHILE", T_ENDWHILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FOR", T_FOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENDFOR", T_ENDFOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FOREACH", T_FOREACH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENDFOREACH", T_ENDFOREACH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DECLARE", T_DECLARE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENDDECLARE", T_ENDDECLARE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_AS", T_AS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SWITCH", T_SWITCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENDSWITCH", T_ENDSWITCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CASE", T_CASE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DEFAULT", T_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_MATCH", T_MATCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BREAK", T_BREAK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CONTINUE", T_CONTINUE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_GOTO", T_GOTO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FUNCTION", T_FUNCTION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FN", T_FN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CONST", T_CONST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_RETURN", T_RETURN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_TRY", T_TRY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CATCH", T_CATCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FINALLY", T_FINALLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_THROW", T_THROW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_USE", T_USE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INSTEADOF", T_INSTEADOF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_GLOBAL", T_GLOBAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_STATIC", T_STATIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ABSTRACT", T_ABSTRACT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FINAL", T_FINAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PRIVATE", T_PRIVATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PROTECTED", T_PROTECTED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PUBLIC", T_PUBLIC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_READONLY", T_READONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_VAR", T_VAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_UNSET", T_UNSET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ISSET", T_ISSET, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_EMPTY", T_EMPTY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_HALT_COMPILER", T_HALT_COMPILER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CLASS", T_CLASS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_TRAIT", T_TRAIT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INTERFACE", T_INTERFACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ENUM", T_ENUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_EXTENDS", T_EXTENDS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IMPLEMENTS", T_IMPLEMENTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NAMESPACE", T_NAMESPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LIST", T_LIST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ARRAY", T_ARRAY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CALLABLE", T_CALLABLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_LINE", T_LINE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FILE", T_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DIR", T_DIR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CLASS_C", T_CLASS_C, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_TRAIT_C", T_TRAIT_C, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_METHOD_C", T_METHOD_C, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_FUNC_C", T_FUNC_C, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NS_C", T_NS_C, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ATTRIBUTE", T_ATTRIBUTE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PLUS_EQUAL", T_PLUS_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_MINUS_EQUAL", T_MINUS_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_MUL_EQUAL", T_MUL_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DIV_EQUAL", T_DIV_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CONCAT_EQUAL", T_CONCAT_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_MOD_EQUAL", T_MOD_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_AND_EQUAL", T_AND_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_OR_EQUAL", T_OR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_COALESCE_EQUAL", T_COALESCE_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BOOLEAN_OR", T_BOOLEAN_OR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BOOLEAN_AND", T_BOOLEAN_AND, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_EQUAL", T_IS_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_NOT_EQUAL", T_IS_NOT_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_IDENTICAL", T_IS_IDENTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_NOT_IDENTICAL", T_IS_NOT_IDENTICAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_SMALLER_OR_EQUAL", T_IS_SMALLER_OR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_IS_GREATER_OR_EQUAL", T_IS_GREATER_OR_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SPACESHIP", T_SPACESHIP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SL", T_SL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_SR", T_SR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DOUBLE_CAST", T_DOUBLE_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_STRING_CAST", T_STRING_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ARRAY_CAST", T_ARRAY_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_OBJECT_CAST", T_OBJECT_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BOOL_CAST", T_BOOL_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_UNSET_CAST", T_UNSET_CAST, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_OBJECT_OPERATOR", T_OBJECT_OPERATOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NULLSAFE_OBJECT_OPERATOR", T_NULLSAFE_OBJECT_OPERATOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DOUBLE_ARROW", T_DOUBLE_ARROW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_COMMENT", T_COMMENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DOC_COMMENT", T_DOC_COMMENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_OPEN_TAG", T_OPEN_TAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_OPEN_TAG_WITH_ECHO", T_OPEN_TAG_WITH_ECHO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CLOSE_TAG", T_CLOSE_TAG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_WHITESPACE", T_WHITESPACE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_START_HEREDOC", T_START_HEREDOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_END_HEREDOC", T_END_HEREDOC, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DOLLAR_OPEN_CURLY_BRACES", T_DOLLAR_OPEN_CURLY_BRACES, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_CURLY_OPEN", T_CURLY_OPEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_PAAMAYIM_NEKUDOTAYIM", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_NS_SEPARATOR", T_NS_SEPARATOR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_ELLIPSIS", T_ELLIPSIS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_COALESCE", T_COALESCE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_BAD_CHARACTER", T_BAD_CHARACTER, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LNUMBER", T_LNUMBER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DNUMBER", T_DNUMBER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_STRING", T_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NAME_FULLY_QUALIFIED", T_NAME_FULLY_QUALIFIED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NAME_RELATIVE", T_NAME_RELATIVE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NAME_QUALIFIED", T_NAME_QUALIFIED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_VARIABLE", T_VARIABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INLINE_HTML", T_INLINE_HTML, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENCAPSED_AND_WHITESPACE", T_ENCAPSED_AND_WHITESPACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CONSTANT_ENCAPSED_STRING", T_CONSTANT_ENCAPSED_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_STRING_VARNAME", T_STRING_VARNAME, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NUM_STRING", T_NUM_STRING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INCLUDE", T_INCLUDE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INCLUDE_ONCE", T_INCLUDE_ONCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_EVAL", T_EVAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_REQUIRE", T_REQUIRE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_REQUIRE_ONCE", T_REQUIRE_ONCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LOGICAL_OR", T_LOGICAL_OR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LOGICAL_XOR", T_LOGICAL_XOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LOGICAL_AND", T_LOGICAL_AND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PRINT", T_PRINT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_YIELD", T_YIELD, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_YIELD_FROM", T_YIELD_FROM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INSTANCEOF", T_INSTANCEOF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NEW", T_NEW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CLONE", T_CLONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_EXIT", T_EXIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IF", T_IF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ELSEIF", T_ELSEIF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ELSE", T_ELSE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENDIF", T_ENDIF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ECHO", T_ECHO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DO", T_DO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_WHILE", T_WHILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENDWHILE", T_ENDWHILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FOR", T_FOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENDFOR", T_ENDFOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FOREACH", T_FOREACH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENDFOREACH", T_ENDFOREACH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DECLARE", T_DECLARE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENDDECLARE", T_ENDDECLARE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_AS", T_AS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SWITCH", T_SWITCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENDSWITCH", T_ENDSWITCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CASE", T_CASE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DEFAULT", T_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_MATCH", T_MATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BREAK", T_BREAK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CONTINUE", T_CONTINUE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_GOTO", T_GOTO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FUNCTION", T_FUNCTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FN", T_FN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CONST", T_CONST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_RETURN", T_RETURN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_TRY", T_TRY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CATCH", T_CATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FINALLY", T_FINALLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_THROW", T_THROW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_USE", T_USE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INSTEADOF", T_INSTEADOF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_GLOBAL", T_GLOBAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_STATIC", T_STATIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ABSTRACT", T_ABSTRACT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FINAL", T_FINAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PRIVATE", T_PRIVATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PROTECTED", T_PROTECTED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PUBLIC", T_PUBLIC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_READONLY", T_READONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_VAR", T_VAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_UNSET", T_UNSET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ISSET", T_ISSET, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_EMPTY", T_EMPTY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_HALT_COMPILER", T_HALT_COMPILER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CLASS", T_CLASS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_TRAIT", T_TRAIT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INTERFACE", T_INTERFACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ENUM", T_ENUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_EXTENDS", T_EXTENDS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IMPLEMENTS", T_IMPLEMENTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NAMESPACE", T_NAMESPACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LIST", T_LIST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ARRAY", T_ARRAY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CALLABLE", T_CALLABLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_LINE", T_LINE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FILE", T_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DIR", T_DIR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CLASS_C", T_CLASS_C, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_TRAIT_C", T_TRAIT_C, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_METHOD_C", T_METHOD_C, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_FUNC_C", T_FUNC_C, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NS_C", T_NS_C, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ATTRIBUTE", T_ATTRIBUTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PLUS_EQUAL", T_PLUS_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_MINUS_EQUAL", T_MINUS_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_MUL_EQUAL", T_MUL_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DIV_EQUAL", T_DIV_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CONCAT_EQUAL", T_CONCAT_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_MOD_EQUAL", T_MOD_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_AND_EQUAL", T_AND_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_OR_EQUAL", T_OR_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_XOR_EQUAL", T_XOR_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SL_EQUAL", T_SL_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SR_EQUAL", T_SR_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_COALESCE_EQUAL", T_COALESCE_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BOOLEAN_OR", T_BOOLEAN_OR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BOOLEAN_AND", T_BOOLEAN_AND, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_EQUAL", T_IS_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_NOT_EQUAL", T_IS_NOT_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_IDENTICAL", T_IS_IDENTICAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_NOT_IDENTICAL", T_IS_NOT_IDENTICAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_SMALLER_OR_EQUAL", T_IS_SMALLER_OR_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_IS_GREATER_OR_EQUAL", T_IS_GREATER_OR_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SPACESHIP", T_SPACESHIP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SL", T_SL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_SR", T_SR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INC", T_INC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DEC", T_DEC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_INT_CAST", T_INT_CAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DOUBLE_CAST", T_DOUBLE_CAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_STRING_CAST", T_STRING_CAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ARRAY_CAST", T_ARRAY_CAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_OBJECT_CAST", T_OBJECT_CAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BOOL_CAST", T_BOOL_CAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_UNSET_CAST", T_UNSET_CAST, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_OBJECT_OPERATOR", T_OBJECT_OPERATOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NULLSAFE_OBJECT_OPERATOR", T_NULLSAFE_OBJECT_OPERATOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DOUBLE_ARROW", T_DOUBLE_ARROW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_COMMENT", T_COMMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DOC_COMMENT", T_DOC_COMMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_OPEN_TAG", T_OPEN_TAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_OPEN_TAG_WITH_ECHO", T_OPEN_TAG_WITH_ECHO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CLOSE_TAG", T_CLOSE_TAG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_WHITESPACE", T_WHITESPACE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_START_HEREDOC", T_START_HEREDOC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_END_HEREDOC", T_END_HEREDOC, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DOLLAR_OPEN_CURLY_BRACES", T_DOLLAR_OPEN_CURLY_BRACES, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_CURLY_OPEN", T_CURLY_OPEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_PAAMAYIM_NEKUDOTAYIM", T_PAAMAYIM_NEKUDOTAYIM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_NS_SEPARATOR", T_NS_SEPARATOR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_ELLIPSIS", T_ELLIPSIS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_COALESCE", T_COALESCE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_POW", T_POW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_POW_EQUAL", T_POW_EQUAL, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG", T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG", T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_BAD_CHARACTER", T_BAD_CHARACTER, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_PERSISTENT); } diff --git a/ext/xml/xml.c b/ext/xml/xml.c index c3bfa37169b78..5d981c5326189 100644 --- a/ext/xml/xml.c +++ b/ext/xml/xml.c @@ -245,6 +245,7 @@ PHP_MINIT_FUNCTION(xml) { xml_parser_ce = register_class_XMLParser(); xml_parser_ce->create_object = xml_parser_create_object; + xml_parser_ce->default_object_handlers = &xml_parser_object_handlers; memcpy(&xml_parser_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); xml_parser_object_handlers.offset = XtOffsetOf(xml_parser, std); @@ -313,7 +314,6 @@ static zend_object *xml_parser_create_object(zend_class_entry *class_type) { zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &xml_parser_object_handlers; return &intern->std; } diff --git a/ext/xml/xml_arginfo.h b/ext/xml/xml_arginfo.h index 8fcf41b03ea04..f6d3be79fefdc 100644 --- a/ext/xml/xml_arginfo.h +++ b/ext/xml/xml_arginfo.h @@ -140,32 +140,32 @@ static const zend_function_entry class_XMLParser_methods[] = { static void register_xml_symbols(int module_number) { - REGISTER_LONG_CONSTANT("XML_ERROR_NONE", XML_ERROR_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_NO_MEMORY", XML_ERROR_NO_MEMORY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_SYNTAX", XML_ERROR_SYNTAX, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_NO_ELEMENTS", XML_ERROR_NO_ELEMENTS, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_INVALID_TOKEN", XML_ERROR_INVALID_TOKEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_TOKEN", XML_ERROR_UNCLOSED_TOKEN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_PARTIAL_CHAR", XML_ERROR_PARTIAL_CHAR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_TAG_MISMATCH", XML_ERROR_TAG_MISMATCH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_DUPLICATE_ATTRIBUTE", XML_ERROR_DUPLICATE_ATTRIBUTE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_JUNK_AFTER_DOC_ELEMENT", XML_ERROR_JUNK_AFTER_DOC_ELEMENT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_PARAM_ENTITY_REF", XML_ERROR_PARAM_ENTITY_REF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNDEFINED_ENTITY", XML_ERROR_UNDEFINED_ENTITY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_RECURSIVE_ENTITY_REF", XML_ERROR_RECURSIVE_ENTITY_REF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_ASYNC_ENTITY", XML_ERROR_ASYNC_ENTITY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_BAD_CHAR_REF", XML_ERROR_BAD_CHAR_REF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_BINARY_ENTITY_REF", XML_ERROR_BINARY_ENTITY_REF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF", XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_MISPLACED_XML_PI", XML_ERROR_MISPLACED_XML_PI, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNKNOWN_ENCODING", XML_ERROR_UNKNOWN_ENCODING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_INCORRECT_ENCODING", XML_ERROR_INCORRECT_ENCODING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_CDATA_SECTION", XML_ERROR_UNCLOSED_CDATA_SECTION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_ERROR_EXTERNAL_ENTITY_HANDLING", XML_ERROR_EXTERNAL_ENTITY_HANDLING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_OPTION_CASE_FOLDING", PHP_XML_OPTION_CASE_FOLDING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_OPTION_TARGET_ENCODING", PHP_XML_OPTION_TARGET_ENCODING, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_TAGSTART", PHP_XML_OPTION_SKIP_TAGSTART, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_WHITE", PHP_XML_OPTION_SKIP_WHITE, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_NONE", XML_ERROR_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_NO_MEMORY", XML_ERROR_NO_MEMORY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_SYNTAX", XML_ERROR_SYNTAX, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_NO_ELEMENTS", XML_ERROR_NO_ELEMENTS, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_INVALID_TOKEN", XML_ERROR_INVALID_TOKEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_TOKEN", XML_ERROR_UNCLOSED_TOKEN, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_PARTIAL_CHAR", XML_ERROR_PARTIAL_CHAR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_TAG_MISMATCH", XML_ERROR_TAG_MISMATCH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_DUPLICATE_ATTRIBUTE", XML_ERROR_DUPLICATE_ATTRIBUTE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_JUNK_AFTER_DOC_ELEMENT", XML_ERROR_JUNK_AFTER_DOC_ELEMENT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_PARAM_ENTITY_REF", XML_ERROR_PARAM_ENTITY_REF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNDEFINED_ENTITY", XML_ERROR_UNDEFINED_ENTITY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_RECURSIVE_ENTITY_REF", XML_ERROR_RECURSIVE_ENTITY_REF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_ASYNC_ENTITY", XML_ERROR_ASYNC_ENTITY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_BAD_CHAR_REF", XML_ERROR_BAD_CHAR_REF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_BINARY_ENTITY_REF", XML_ERROR_BINARY_ENTITY_REF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF", XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_MISPLACED_XML_PI", XML_ERROR_MISPLACED_XML_PI, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNKNOWN_ENCODING", XML_ERROR_UNKNOWN_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_INCORRECT_ENCODING", XML_ERROR_INCORRECT_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_UNCLOSED_CDATA_SECTION", XML_ERROR_UNCLOSED_CDATA_SECTION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_ERROR_EXTERNAL_ENTITY_HANDLING", XML_ERROR_EXTERNAL_ENTITY_HANDLING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_CASE_FOLDING", PHP_XML_OPTION_CASE_FOLDING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_TARGET_ENCODING", PHP_XML_OPTION_TARGET_ENCODING, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_TAGSTART", PHP_XML_OPTION_SKIP_TAGSTART, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XML_OPTION_SKIP_WHITE", PHP_XML_OPTION_SKIP_WHITE, CONST_PERSISTENT); } static zend_class_entry *register_class_XMLParser(void) diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c index 729a1d2c7c3ad..76ca54d686359 100644 --- a/ext/xmlreader/php_xmlreader.c +++ b/ext/xmlreader/php_xmlreader.c @@ -368,7 +368,6 @@ zend_object *xmlreader_objects_new(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); intern->prop_handler = &xmlreader_prop_handlers; - intern->std.handlers = &xmlreader_object_handlers; return &intern->std; } @@ -1163,6 +1162,7 @@ PHP_MINIT_FUNCTION(xmlreader) xmlreader_class_entry = register_class_XMLReader(); xmlreader_class_entry->create_object = xmlreader_objects_new; + xmlreader_class_entry->default_object_handlers = &xmlreader_object_handlers; memcpy(&xmlreader_open_fn, zend_hash_str_find_ptr(&xmlreader_class_entry->function_table, "open", sizeof("open")-1), sizeof(zend_internal_function)); xmlreader_open_fn.fn_flags &= ~ZEND_ACC_STATIC; diff --git a/ext/xmlwriter/php_xmlwriter.c b/ext/xmlwriter/php_xmlwriter.c index 8d4abb3d26b06..5944abf30a98b 100644 --- a/ext/xmlwriter/php_xmlwriter.c +++ b/ext/xmlwriter/php_xmlwriter.c @@ -82,7 +82,6 @@ static zend_object *xmlwriter_object_new(zend_class_entry *class_type) intern = zend_object_alloc(sizeof(ze_xmlwriter_object), class_type); zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &xmlwriter_object_handlers; return &intern->std; } @@ -1039,6 +1038,7 @@ static PHP_MINIT_FUNCTION(xmlwriter) xmlwriter_object_handlers.clone_obj = NULL; xmlwriter_class_entry_ce = register_class_XMLWriter(); xmlwriter_class_entry_ce->create_object = xmlwriter_object_new; + xmlwriter_class_entry_ce->default_object_handlers = &xmlwriter_object_handlers; return SUCCESS; } diff --git a/ext/xsl/php_xsl.c b/ext/xsl/php_xsl.c index 0c9029c9601df..82e782d18f9d1 100644 --- a/ext/xsl/php_xsl.c +++ b/ext/xsl/php_xsl.c @@ -103,7 +103,6 @@ zend_object *xsl_objects_new(zend_class_entry *class_type) intern->parameter = zend_new_array(0); intern->registered_phpfunctions = zend_new_array(0); - intern->std.handlers = &xsl_object_handlers; return &intern->std; } /* }}} */ @@ -118,6 +117,7 @@ PHP_MINIT_FUNCTION(xsl) xsl_xsltprocessor_class_entry = register_class_XSLTProcessor(); xsl_xsltprocessor_class_entry->create_object = xsl_objects_new; + xsl_xsltprocessor_class_entry->default_object_handlers = &xsl_object_handlers; #ifdef HAVE_XSL_EXSLT exsltRegisterAll(); diff --git a/ext/xsl/php_xsl_arginfo.h b/ext/xsl/php_xsl_arginfo.h index 04b723fbf5b68..546dc3229efa6 100644 --- a/ext/xsl/php_xsl_arginfo.h +++ b/ext/xsl/php_xsl_arginfo.h @@ -86,23 +86,23 @@ static const zend_function_entry class_XSLTProcessor_methods[] = { static void register_php_xsl_symbols(int module_number) { - REGISTER_LONG_CONSTANT("XSL_CLONE_AUTO", 0, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_CLONE_NEVER", -1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_CLONE_ALWAYS", 1, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_SECPREF_NONE", XSL_SECPREF_NONE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_SECPREF_READ_FILE", XSL_SECPREF_READ_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_SECPREF_WRITE_FILE", XSL_SECPREF_WRITE_FILE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_SECPREF_CREATE_DIRECTORY", XSL_SECPREF_CREATE_DIRECTORY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_SECPREF_READ_NETWORK", XSL_SECPREF_READ_NETWORK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_SECPREF_WRITE_NETWORK", XSL_SECPREF_WRITE_NETWORK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("XSL_SECPREF_DEFAULT", XSL_SECPREF_DEFAULT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("LIBXSLT_VERSION", LIBXSLT_VERSION, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("LIBXSLT_DOTTED_VERSION", LIBXSLT_DOTTED_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_CLONE_AUTO", 0, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_CLONE_NEVER", -1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_CLONE_ALWAYS", 1, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_SECPREF_NONE", XSL_SECPREF_NONE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_SECPREF_READ_FILE", XSL_SECPREF_READ_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_SECPREF_WRITE_FILE", XSL_SECPREF_WRITE_FILE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_SECPREF_CREATE_DIRECTORY", XSL_SECPREF_CREATE_DIRECTORY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_SECPREF_READ_NETWORK", XSL_SECPREF_READ_NETWORK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_SECPREF_WRITE_NETWORK", XSL_SECPREF_WRITE_NETWORK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("XSL_SECPREF_DEFAULT", XSL_SECPREF_DEFAULT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBXSLT_VERSION", LIBXSLT_VERSION, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LIBXSLT_DOTTED_VERSION", LIBXSLT_DOTTED_VERSION, CONST_PERSISTENT); #if defined(HAVE_XSL_EXSLT) - REGISTER_LONG_CONSTANT("LIBEXSLT_VERSION", LIBEXSLT_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("LIBEXSLT_VERSION", LIBEXSLT_VERSION, CONST_PERSISTENT); #endif #if defined(HAVE_XSL_EXSLT) - REGISTER_STRING_CONSTANT("LIBEXSLT_DOTTED_VERSION", LIBEXSLT_DOTTED_VERSION, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("LIBEXSLT_DOTTED_VERSION", LIBEXSLT_DOTTED_VERSION, CONST_PERSISTENT); #endif } diff --git a/ext/zend_test/fiber.c b/ext/zend_test/fiber.c index 0254799e2bdb5..f67c0217d050f 100644 --- a/ext/zend_test/fiber.c +++ b/ext/zend_test/fiber.c @@ -150,7 +150,6 @@ static zend_object *zend_test_fiber_object_create(zend_class_entry *ce) memset(fiber, 0, sizeof(zend_test_fiber)); zend_object_std_init(&fiber->std, ce); - fiber->std.handlers = &zend_test_fiber_handlers; return &fiber->std; } @@ -344,6 +343,7 @@ void zend_test_fiber_init(void) { zend_test_fiber_class = register_class__ZendTestFiber(); zend_test_fiber_class->create_object = zend_test_fiber_object_create; + zend_test_fiber_class->default_object_handlers = &zend_test_fiber_handlers; zend_test_fiber_handlers = std_object_handlers; zend_test_fiber_handlers.dtor_obj = zend_test_fiber_object_destroy; diff --git a/ext/zend_test/fiber.stub.php b/ext/zend_test/fiber.stub.php index 4cfe97137d86e..0f6ccf898e29d 100644 --- a/ext/zend_test/fiber.stub.php +++ b/ext/zend_test/fiber.stub.php @@ -1,6 +1,9 @@ \n", 2 * ZT_G(observer_nesting_depth), "", ZSTR_VAL(name)); + } +} + +void declared_class_observer(zend_class_entry *ce, zend_string *name) { + if (ZT_G(observer_observe_declaring)) { + php_printf("%*s\n", 2 * ZT_G(observer_nesting_depth), "", ZSTR_VAL(name)); + } +} + static ZEND_INI_MH(zend_test_observer_OnUpdateCommaList) { zend_array **p = (zend_array **) ZEND_INI_GET_ADDR(); @@ -301,6 +313,7 @@ PHP_INI_BEGIN() STD_PHP_INI_BOOLEAN("zend_test.observer.observe_all", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_observe_all, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.observe_includes", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_observe_includes, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.observe_functions", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_observe_functions, zend_zend_test_globals, zend_test_globals) + STD_PHP_INI_BOOLEAN("zend_test.observer.observe_declaring", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_observe_declaring, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_ENTRY("zend_test.observer.observe_function_names", "", PHP_INI_ALL, zend_test_observer_OnUpdateCommaList, observer_observe_function_names, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.show_return_type", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_show_return_type, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.observer.show_return_value", "0", PHP_INI_SYSTEM, OnUpdateBool, observer_show_return_value, zend_zend_test_globals, zend_test_globals) @@ -334,6 +347,9 @@ void zend_test_observer_init(INIT_FUNC_ARGS) zend_observer_fiber_switch_register(fiber_enter_observer); zend_observer_fiber_switch_register(fiber_suspend_observer); zend_observer_fiber_destroy_register(fiber_destroy_observer); + + zend_observer_function_declared_register(declared_function_observer); + zend_observer_class_linked_register(declared_class_observer); } } diff --git a/ext/zend_test/php_test.h b/ext/zend_test/php_test.h index 1c0b24f0d0849..a5b11a6041dd6 100644 --- a/ext/zend_test/php_test.h +++ b/ext/zend_test/php_test.h @@ -38,6 +38,7 @@ ZEND_BEGIN_MODULE_GLOBALS(zend_test) int observer_observe_all; int observer_observe_includes; int observer_observe_functions; + int observer_observe_declaring; zend_array *observer_observe_function_names; int observer_show_return_type; int observer_show_return_value; @@ -54,6 +55,8 @@ ZEND_BEGIN_MODULE_GLOBALS(zend_test) bool print_stderr_mshutdown; zend_test_fiber *active_fiber; zend_long quantity_value; + zend_string *str_test; + zend_string *not_empty_str_test; ZEND_END_MODULE_GLOBALS(zend_test) extern ZEND_DECLARE_MODULE_GLOBALS(zend_test) diff --git a/ext/zend_test/test.c b/ext/zend_test/test.c index ca60fd82fcd51..27e5a2a69a8c2 100644 --- a/ext/zend_test/test.c +++ b/ext/zend_test/test.c @@ -415,12 +415,35 @@ static ZEND_FUNCTION(zend_test_zend_ini_parse_uquantity) } } -static ZEND_FUNCTION(namespaced_func) +static ZEND_FUNCTION(zend_test_zend_ini_str) +{ + ZEND_PARSE_PARAMETERS_NONE(); + + RETURN_STR(ZT_G(str_test)); +} + +static ZEND_FUNCTION(ZendTestNS2_namespaced_func) +{ + ZEND_PARSE_PARAMETERS_NONE(); + RETURN_TRUE; +} + +static ZEND_FUNCTION(ZendTestNS2_namespaced_deprecated_func) +{ + ZEND_PARSE_PARAMETERS_NONE(); +} + +static ZEND_FUNCTION(ZendTestNS2_ZendSubNS_namespaced_func) { ZEND_PARSE_PARAMETERS_NONE(); RETURN_TRUE; } +static ZEND_FUNCTION(ZendTestNS2_ZendSubNS_namespaced_deprecated_func) +{ + ZEND_PARSE_PARAMETERS_NONE(); +} + static ZEND_FUNCTION(zend_test_parameter_with_attribute) { zend_string *parameter; @@ -616,6 +639,8 @@ PHP_INI_BEGIN() STD_PHP_INI_BOOLEAN("zend_test.register_passes", "0", PHP_INI_SYSTEM, OnUpdateBool, register_passes, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_BOOLEAN("zend_test.print_stderr_mshutdown", "0", PHP_INI_SYSTEM, OnUpdateBool, print_stderr_mshutdown, zend_zend_test_globals, zend_test_globals) STD_PHP_INI_ENTRY("zend_test.quantity_value", "0", PHP_INI_ALL, OnUpdateLong, quantity_value, zend_zend_test_globals, zend_test_globals) + STD_PHP_INI_ENTRY("zend_test.str_test", "", PHP_INI_ALL, OnUpdateStr, str_test, zend_zend_test_globals, zend_test_globals) + STD_PHP_INI_ENTRY("zend_test.not_empty_str_test", "val", PHP_INI_ALL, OnUpdateStrNotEmpty, not_empty_str_test, zend_zend_test_globals, zend_test_globals) PHP_INI_END() void (*old_zend_execute_ex)(zend_execute_data *execute_data); @@ -756,6 +781,7 @@ PHP_MSHUTDOWN_FUNCTION(zend_test) PHP_RINIT_FUNCTION(zend_test) { zend_hash_init(&ZT_G(global_weakmap), 8, NULL, ZVAL_PTR_DTOR, 0); + ZT_G(observer_nesting_depth) = 0; return SUCCESS; } @@ -787,7 +813,7 @@ static PHP_GSHUTDOWN_FUNCTION(zend_test) PHP_MINFO_FUNCTION(zend_test) { php_info_print_table_start(); - php_info_print_table_header(2, "zend_test extension", "enabled"); + php_info_print_table_row(2, "zend_test extension", "enabled"); php_info_print_table_end(); DISPLAY_INI_ENTRIES(); diff --git a/ext/zend_test/test.stub.php b/ext/zend_test/test.stub.php index 45bbaedfc32ca..47442dcaab48d 100644 --- a/ext/zend_test/test.stub.php +++ b/ext/zend_test/test.stub.php @@ -3,9 +3,9 @@ /** * @generate-class-entries static * @generate-legacy-arginfo 80000 + * @undocumentable */ namespace { - /** * @var int * @deprecated @@ -109,6 +109,15 @@ function zend_test_compile_string(string $source_string, string $filename, int $ /** @deprecated */ function zend_test_deprecated(mixed $arg = null): void {} + /** @alias zend_test_void_return */ + function zend_test_aliased(): void {} + + /** + * @deprecated + * @alias zend_test_void_return + */ + function zend_test_deprecated_aliased(): void {} + function zend_create_unterminated_string(string $str): string {} function zend_terminate_string(string &$str): void {} @@ -143,6 +152,8 @@ function zend_call_method(object|string $obj_or_class, string $method, mixed $ar function zend_test_zend_ini_parse_quantity(string $str): int {} function zend_test_zend_ini_parse_uquantity(string $str): int {} + + function zend_test_zend_ini_str(): string {} } namespace ZendTestNS { @@ -168,6 +179,19 @@ class Foo { public function method(): void {} } + function namespaced_func(): bool {} + + /** @deprecated */ + function namespaced_deprecated_func(): void {} + + /** @alias zend_test_void_return */ + function namespaced_aliased_func(): void {} + + /** + * @deprecated + * @alias zend_test_void_return + */ + function namespaced_deprecated_aliased_func(): void {} } namespace ZendTestNS2\ZendSubNS { @@ -178,4 +202,15 @@ public function method(): void {} function namespaced_func(): bool {} + /** @deprecated */ + function namespaced_deprecated_func(): void {} + + /** @alias zend_test_void_return */ + function namespaced_aliased_func(): void {} + + /** + * @deprecated + * @alias zend_test_void_return + */ + function namespaced_deprecated_aliased_func(): void {} } diff --git a/ext/zend_test/test_arginfo.h b/ext/zend_test/test_arginfo.h index 6ea5277061d90..84b73abbc5516 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 the .stub.php file instead. - * Stub hash: daa7be53e9009c66c814fb5b0407a6dfbe09679a */ + * Stub hash: d8c0689141c897c3f31d00550128df7b8c00274f */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_array_return, 0, 0, IS_ARRAY, 0) ZEND_END_ARG_INFO() @@ -20,6 +20,10 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_test_deprecated, 0, 0, IS_V ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, arg, IS_MIXED, 0, "null") ZEND_END_ARG_INFO() +#define arginfo_zend_test_aliased arginfo_zend_test_void_return + +#define arginfo_zend_test_deprecated_aliased arginfo_zend_test_void_return + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_zend_create_unterminated_string, 0, 1, IS_STRING, 0) ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) ZEND_END_ARG_INFO() @@ -91,9 +95,25 @@ ZEND_END_ARG_INFO() #define arginfo_zend_test_zend_ini_parse_uquantity arginfo_zend_test_zend_ini_parse_quantity -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ZendTestNS2_ZendSubNS_namespaced_func, 0, 0, _IS_BOOL, 0) +#define arginfo_zend_test_zend_ini_str arginfo_zend_get_current_func_name + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ZendTestNS2_namespaced_func, 0, 0, _IS_BOOL, 0) ZEND_END_ARG_INFO() +#define arginfo_ZendTestNS2_namespaced_deprecated_func arginfo_zend_test_void_return + +#define arginfo_ZendTestNS2_namespaced_aliased_func arginfo_zend_test_void_return + +#define arginfo_ZendTestNS2_namespaced_deprecated_aliased_func arginfo_zend_test_void_return + +#define arginfo_ZendTestNS2_ZendSubNS_namespaced_func arginfo_ZendTestNS2_namespaced_func + +#define arginfo_ZendTestNS2_ZendSubNS_namespaced_deprecated_func arginfo_zend_test_void_return + +#define arginfo_ZendTestNS2_ZendSubNS_namespaced_aliased_func arginfo_zend_test_void_return + +#define arginfo_ZendTestNS2_ZendSubNS_namespaced_deprecated_aliased_func arginfo_zend_test_void_return + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class__ZendTestClass_is_object, 0, 0, IS_LONG, 0) ZEND_END_ARG_INFO() @@ -108,7 +128,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_class__ZendTestChildClass_returnsThrowable, 0, 0, Exception, 0) ZEND_END_ARG_INFO() -#define arginfo_class__ZendTestTrait_testMethod arginfo_ZendTestNS2_ZendSubNS_namespaced_func +#define arginfo_class__ZendTestTrait_testMethod arginfo_ZendTestNS2_namespaced_func ZEND_BEGIN_ARG_INFO_EX(arginfo_class_ZendTestParameterAttribute___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, parameter, IS_STRING, 0) @@ -162,7 +182,11 @@ static ZEND_FUNCTION(zend_get_current_func_name); static ZEND_FUNCTION(zend_call_method); static ZEND_FUNCTION(zend_test_zend_ini_parse_quantity); static ZEND_FUNCTION(zend_test_zend_ini_parse_uquantity); -static ZEND_FUNCTION(namespaced_func); +static ZEND_FUNCTION(zend_test_zend_ini_str); +static ZEND_FUNCTION(ZendTestNS2_namespaced_func); +static ZEND_FUNCTION(ZendTestNS2_namespaced_deprecated_func); +static ZEND_FUNCTION(ZendTestNS2_ZendSubNS_namespaced_func); +static ZEND_FUNCTION(ZendTestNS2_ZendSubNS_namespaced_deprecated_func); static ZEND_METHOD(_ZendTestClass, is_object); static ZEND_METHOD(_ZendTestClass, __toString); static ZEND_METHOD(_ZendTestClass, returnsStatic); @@ -187,6 +211,8 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(zend_test_void_return, arginfo_zend_test_void_return) ZEND_FE(zend_test_compile_string, arginfo_zend_test_compile_string) ZEND_DEP_FE(zend_test_deprecated, arginfo_zend_test_deprecated) + ZEND_FALIAS(zend_test_aliased, zend_test_void_return, arginfo_zend_test_aliased) + ZEND_DEP_FALIAS(zend_test_deprecated_aliased, zend_test_void_return, arginfo_zend_test_deprecated_aliased) ZEND_FE(zend_create_unterminated_string, arginfo_zend_create_unterminated_string) ZEND_FE(zend_terminate_string, arginfo_zend_terminate_string) ZEND_FE(zend_leak_variable, arginfo_zend_leak_variable) @@ -205,7 +231,15 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(zend_call_method, arginfo_zend_call_method) ZEND_FE(zend_test_zend_ini_parse_quantity, arginfo_zend_test_zend_ini_parse_quantity) ZEND_FE(zend_test_zend_ini_parse_uquantity, arginfo_zend_test_zend_ini_parse_uquantity) - ZEND_NS_FE("ZendTestNS2\\ZendSubNS", namespaced_func, arginfo_ZendTestNS2_ZendSubNS_namespaced_func) + ZEND_FE(zend_test_zend_ini_str, arginfo_zend_test_zend_ini_str) + ZEND_NS_FALIAS("ZendTestNS2", namespaced_func, ZendTestNS2_namespaced_func, arginfo_ZendTestNS2_namespaced_func) + ZEND_NS_DEP_FALIAS("ZendTestNS2", namespaced_deprecated_func, ZendTestNS2_namespaced_deprecated_func, arginfo_ZendTestNS2_namespaced_deprecated_func) + ZEND_NS_FALIAS("ZendTestNS2", namespaced_aliased_func, zend_test_void_return, arginfo_ZendTestNS2_namespaced_aliased_func) + ZEND_NS_DEP_FALIAS("ZendTestNS2", namespaced_deprecated_aliased_func, zend_test_void_return, arginfo_ZendTestNS2_namespaced_deprecated_aliased_func) + ZEND_NS_FALIAS("ZendTestNS2\\ZendSubNS", namespaced_func, ZendTestNS2_ZendSubNS_namespaced_func, arginfo_ZendTestNS2_ZendSubNS_namespaced_func) + ZEND_NS_DEP_FALIAS("ZendTestNS2\\ZendSubNS", namespaced_deprecated_func, ZendTestNS2_ZendSubNS_namespaced_deprecated_func, arginfo_ZendTestNS2_ZendSubNS_namespaced_deprecated_func) + ZEND_NS_FALIAS("ZendTestNS2\\ZendSubNS", namespaced_aliased_func, zend_test_void_return, arginfo_ZendTestNS2_ZendSubNS_namespaced_aliased_func) + ZEND_NS_DEP_FALIAS("ZendTestNS2\\ZendSubNS", namespaced_deprecated_aliased_func, zend_test_void_return, arginfo_ZendTestNS2_ZendSubNS_namespaced_deprecated_aliased_func) ZEND_FE_END }; @@ -307,7 +341,7 @@ static const zend_function_entry class_ZendTestNS2_ZendSubNS_Foo_methods[] = { static void register_test_symbols(int module_number) { - REGISTER_LONG_CONSTANT("ZEND_TEST_DEPRECATED", 42, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED); + REGISTER_LONG_CONSTANT("ZEND_TEST_DEPRECATED", 42, CONST_PERSISTENT | CONST_DEPRECATED); } static zend_class_entry *register_class__ZendTestInterface(void) diff --git a/ext/zend_test/tests/observer_declarations_01.phpt b/ext/zend_test/tests/observer_declarations_01.phpt new file mode 100644 index 0000000000000..6d91834ef9fb2 --- /dev/null +++ b/ext/zend_test/tests/observer_declarations_01.phpt @@ -0,0 +1,54 @@ +--TEST-- +Observer: Observe function and class declarations +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.observe_declaring=1 +--FILE-- + 0) { + function nested() + { + } + + class C + { + } + + class D extends A + { + } +} + +foo(); +?> +--EXPECTF-- + + + + + + + + + + + + +foo + + diff --git a/ext/zend_test/tests/observer_fiber_functions_01.phpt b/ext/zend_test/tests/observer_fiber_functions_01.phpt new file mode 100644 index 0000000000000..d3d395bd302fc --- /dev/null +++ b/ext/zend_test/tests/observer_fiber_functions_01.phpt @@ -0,0 +1,59 @@ +--TEST-- +Observer: Basic function observing in fibers +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.fiber_init=1 +zend_test.observer.fiber_switch=1 +zend_test.observer.fiber_destroy=1 +--FILE-- +start(); +$fiber->resume(); + +?> +--EXPECTF-- + + + + + + + + + + + + <{closure}> + + +int(1) + + + + + + + + + + + + +int(2) + + + + + + + \ No newline at end of file diff --git a/ext/zend_test/tests/observer_fiber_functions_02.phpt b/ext/zend_test/tests/observer_fiber_functions_02.phpt new file mode 100644 index 0000000000000..c2b7eb007fae7 --- /dev/null +++ b/ext/zend_test/tests/observer_fiber_functions_02.phpt @@ -0,0 +1,54 @@ +--TEST-- +Observer: Function observing in fibers with unfinished fiber +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.fiber_init=1 +zend_test.observer.fiber_switch=1 +zend_test.observer.fiber_destroy=1 +--FILE-- +start(); + +?> +--EXPECTF-- + + + + + + + + + + + + <{closure}> + + +int(1) + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ext/zend_test/tests/observer_fiber_functions_03.phpt b/ext/zend_test/tests/observer_fiber_functions_03.phpt new file mode 100644 index 0000000000000..d96390068a2f5 --- /dev/null +++ b/ext/zend_test/tests/observer_fiber_functions_03.phpt @@ -0,0 +1,84 @@ +--TEST-- +Observer: Function observing in fibers with bailout in fiber +--EXTENSIONS-- +zend_test +--INI-- +zend_test.observer.enabled=1 +zend_test.observer.observe_all=1 +zend_test.observer.fiber_init=1 +zend_test.observer.fiber_switch=1 +zend_test.observer.fiber_destroy=1 +memory_limit=100M +--FILE-- +start(); + +$fiber = new Fiber(function (): void { + var_dump(2); + Fiber::suspend(); + str_repeat('A', 200_000_000); +}); + +$fiber->start(); +$fiber->resume(); + +?> +--EXPECTF-- + + + + + + + + + + + + <{closure}> + + +int(1) + + + + + + + + + + + + + + <{closure}> + +int(2) + + + + + + + + + + + + + +Fatal error: Allowed memory size of 104857600 bytes exhausted %s on line %d + + + + + + + \ No newline at end of file diff --git a/ext/zend_test/tests/zend_ini_str_validator_basic.phpt b/ext/zend_test/tests/zend_ini_str_validator_basic.phpt new file mode 100644 index 0000000000000..ab1133dd6d2e8 --- /dev/null +++ b/ext/zend_test/tests/zend_ini_str_validator_basic.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test OnUpdateStr and OnUpdateStrNotEmpty validators. +--EXTENSIONS-- +zend_test +--FILE-- + +--EXPECT-- +str_test INI +string(0) "" +string(0) "" +string(4) "Test" +string(4) "Test" +string(0) "" +not_empty_str_test INI +string(3) "val" +string(3) "val" +string(4) "Test" +bool(false) +string(4) "Test" diff --git a/ext/zend_test/tests/zend_ini_str_validator_return_from_func.phpt b/ext/zend_test/tests/zend_ini_str_validator_return_from_func.phpt new file mode 100644 index 0000000000000..a02748f6d8a5a --- /dev/null +++ b/ext/zend_test/tests/zend_ini_str_validator_return_from_func.phpt @@ -0,0 +1,10 @@ +--TEST-- +Test zend_test_zend_ini_str() to check for GC refcount on global returned +--EXTENSIONS-- +zend_test +--FILE-- + +--EXPECT-- +string(0) "" diff --git a/ext/zip/php_zip.c b/ext/zip/php_zip.c index f0b658426d383..10abf4447b083 100644 --- a/ext/zip/php_zip.c +++ b/ext/zip/php_zip.c @@ -447,11 +447,6 @@ static int php_zip_parse_options(HashTable *options, zip_options *opts) } /* }}} */ -/* {{{ REGISTER_ZIP_CLASS_CONST_LONG */ -#define REGISTER_ZIP_CLASS_CONST_LONG(const_name, value) \ - zend_declare_class_constant_long(zip_class_entry, const_name, sizeof(const_name)-1, (zend_long)value); -/* }}} */ - /* {{{ ZIP_FROM_OBJECT */ #define ZIP_FROM_OBJECT(intern, object) \ { \ @@ -1080,7 +1075,6 @@ static zend_object *php_zip_object_new(zend_class_entry *class_type) /* {{{ */ intern->prop_handler = &zip_prop_handlers; zend_object_std_init(&intern->zo, class_type); object_properties_init(&intern->zo, class_type); - intern->zo.handlers = &zip_object_handlers; intern->last_id = -1; return &intern->zo; @@ -3106,6 +3100,7 @@ static PHP_MINIT_FUNCTION(zip) zip_class_entry = register_class_ZipArchive(zend_ce_countable); zip_class_entry->create_object = php_zip_object_new; + zip_class_entry->default_object_handlers = &zip_object_handlers; zend_hash_init(&zip_prop_handlers, 0, NULL, php_zip_free_prop_handler, 1); php_zip_register_prop_handler(&zip_prop_handlers, "lastId", php_zip_last_id, NULL, IS_LONG); @@ -3115,145 +3110,6 @@ static PHP_MINIT_FUNCTION(zip) php_zip_register_prop_handler(&zip_prop_handlers, "filename", NULL, php_zipobj_get_filename, IS_STRING); php_zip_register_prop_handler(&zip_prop_handlers, "comment", NULL, php_zipobj_get_zip_comment, IS_STRING); - REGISTER_ZIP_CLASS_CONST_LONG("CREATE", ZIP_CREATE); - REGISTER_ZIP_CLASS_CONST_LONG("EXCL", ZIP_EXCL); - REGISTER_ZIP_CLASS_CONST_LONG("CHECKCONS", ZIP_CHECKCONS); - REGISTER_ZIP_CLASS_CONST_LONG("OVERWRITE", ZIP_OVERWRITE); -#ifdef ZIP_RDONLY - REGISTER_ZIP_CLASS_CONST_LONG("RDONLY", ZIP_RDONLY); -#endif - - REGISTER_ZIP_CLASS_CONST_LONG("FL_NOCASE", ZIP_FL_NOCASE); - REGISTER_ZIP_CLASS_CONST_LONG("FL_NODIR", ZIP_FL_NODIR); - REGISTER_ZIP_CLASS_CONST_LONG("FL_COMPRESSED", ZIP_FL_COMPRESSED); - REGISTER_ZIP_CLASS_CONST_LONG("FL_UNCHANGED", ZIP_FL_UNCHANGED); - REGISTER_ZIP_CLASS_CONST_LONG("FL_RECOMPRESS", ZIP_FL_RECOMPRESS); - REGISTER_ZIP_CLASS_CONST_LONG("FL_ENCRYPTED", ZIP_FL_ENCRYPTED); - REGISTER_ZIP_CLASS_CONST_LONG("FL_OVERWRITE", ZIP_FL_OVERWRITE); - REGISTER_ZIP_CLASS_CONST_LONG("FL_LOCAL", ZIP_FL_LOCAL); - REGISTER_ZIP_CLASS_CONST_LONG("FL_CENTRAL", ZIP_FL_CENTRAL); - - /* Default filename encoding policy. */ - REGISTER_ZIP_CLASS_CONST_LONG("FL_ENC_GUESS", ZIP_FL_ENC_GUESS); - REGISTER_ZIP_CLASS_CONST_LONG("FL_ENC_RAW", ZIP_FL_ENC_RAW); - REGISTER_ZIP_CLASS_CONST_LONG("FL_ENC_STRICT", ZIP_FL_ENC_STRICT); - REGISTER_ZIP_CLASS_CONST_LONG("FL_ENC_UTF_8", ZIP_FL_ENC_UTF_8); - REGISTER_ZIP_CLASS_CONST_LONG("FL_ENC_CP437", ZIP_FL_ENC_CP437); - - REGISTER_ZIP_CLASS_CONST_LONG("CM_DEFAULT", ZIP_CM_DEFAULT); - REGISTER_ZIP_CLASS_CONST_LONG("CM_STORE", ZIP_CM_STORE); - REGISTER_ZIP_CLASS_CONST_LONG("CM_SHRINK", ZIP_CM_SHRINK); - REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_1", ZIP_CM_REDUCE_1); - REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_2", ZIP_CM_REDUCE_2); - REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_3", ZIP_CM_REDUCE_3); - REGISTER_ZIP_CLASS_CONST_LONG("CM_REDUCE_4", ZIP_CM_REDUCE_4); - REGISTER_ZIP_CLASS_CONST_LONG("CM_IMPLODE", ZIP_CM_IMPLODE); - REGISTER_ZIP_CLASS_CONST_LONG("CM_DEFLATE", ZIP_CM_DEFLATE); - REGISTER_ZIP_CLASS_CONST_LONG("CM_DEFLATE64", ZIP_CM_DEFLATE64); - REGISTER_ZIP_CLASS_CONST_LONG("CM_PKWARE_IMPLODE", ZIP_CM_PKWARE_IMPLODE); - REGISTER_ZIP_CLASS_CONST_LONG("CM_BZIP2", ZIP_CM_BZIP2); - REGISTER_ZIP_CLASS_CONST_LONG("CM_LZMA", ZIP_CM_LZMA); -#ifdef ZIP_CM_LZMA2 - REGISTER_ZIP_CLASS_CONST_LONG("CM_LZMA2", ZIP_CM_LZMA2); -#endif -#ifdef ZIP_CM_ZSTD - REGISTER_ZIP_CLASS_CONST_LONG("CM_ZSTD", ZIP_CM_ZSTD); -#endif -#ifdef ZIP_CM_XZ - REGISTER_ZIP_CLASS_CONST_LONG("CM_XZ", ZIP_CM_XZ); -#endif - REGISTER_ZIP_CLASS_CONST_LONG("CM_TERSE", ZIP_CM_TERSE); - REGISTER_ZIP_CLASS_CONST_LONG("CM_LZ77", ZIP_CM_LZ77); - REGISTER_ZIP_CLASS_CONST_LONG("CM_WAVPACK", ZIP_CM_WAVPACK); - REGISTER_ZIP_CLASS_CONST_LONG("CM_PPMD", ZIP_CM_PPMD); - - /* Error code */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_OK", ZIP_ER_OK); /* N No error */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_MULTIDISK", ZIP_ER_MULTIDISK); /* N Multi-disk zip archives not supported */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_RENAME", ZIP_ER_RENAME); /* S Renaming temporary file failed */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_CLOSE", ZIP_ER_CLOSE); /* S Closing zip archive failed */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_SEEK", ZIP_ER_SEEK); /* S Seek error */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_READ", ZIP_ER_READ); /* S Read error */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_WRITE", ZIP_ER_WRITE); /* S Write error */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_CRC", ZIP_ER_CRC); /* N CRC error */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_ZIPCLOSED", ZIP_ER_ZIPCLOSED); /* N Containing zip archive was closed */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_NOENT", ZIP_ER_NOENT); /* N No such file */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_EXISTS", ZIP_ER_EXISTS); /* N File already exists */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_OPEN", ZIP_ER_OPEN); /* S Can't open file */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_TMPOPEN", ZIP_ER_TMPOPEN); /* S Failure to create temporary file */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_ZLIB", ZIP_ER_ZLIB); /* Z Zlib error */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_MEMORY", ZIP_ER_MEMORY); /* N Malloc failure */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_CHANGED", ZIP_ER_CHANGED); /* N Entry has been changed */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_COMPNOTSUPP", ZIP_ER_COMPNOTSUPP);/* N Compression method not supported */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_EOF", ZIP_ER_EOF); /* N Premature EOF */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_INVAL", ZIP_ER_INVAL); /* N Invalid argument */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_NOZIP", ZIP_ER_NOZIP); /* N Not a zip archive */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_INTERNAL", ZIP_ER_INTERNAL); /* N Internal error */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_INCONS", ZIP_ER_INCONS); /* N Zip archive inconsistent */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_REMOVE", ZIP_ER_REMOVE); /* S Can't remove file */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_DELETED", ZIP_ER_DELETED); /* N Entry has been deleted */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_ENCRNOTSUPP", ZIP_ER_ENCRNOTSUPP);/* N Encryption method not supported */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_RDONLY", ZIP_ER_RDONLY); /* N Read-only archive */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_NOPASSWD", ZIP_ER_NOPASSWD); /* N Entry has been deleted */ - REGISTER_ZIP_CLASS_CONST_LONG("ER_WRONGPASSWD", ZIP_ER_WRONGPASSWD);/* N Wrong password provided */ -/* since 1.0.0 */ -#ifdef ZIP_ER_OPNOTSUPP - REGISTER_ZIP_CLASS_CONST_LONG("ER_OPNOTSUPP", ZIP_ER_OPNOTSUPP); /* N Operation not supported */ -#endif -#ifdef ZIP_ER_INUSE - REGISTER_ZIP_CLASS_CONST_LONG("ER_INUSE", ZIP_ER_INUSE); /* N Resource still in use */ -#endif -#ifdef ZIP_ER_TELL - REGISTER_ZIP_CLASS_CONST_LONG("ER_TELL", ZIP_ER_TELL); /* S Tell error */ -#endif -/* since 1.6.0 */ -#ifdef ZIP_ER_COMPRESSED_DATA - REGISTER_ZIP_CLASS_CONST_LONG("ER_COMPRESSED_DATA", ZIP_ER_COMPRESSED_DATA);/* N Compressed data invalid */ -#endif -#ifdef ZIP_ER_CANCELLED - REGISTER_ZIP_CLASS_CONST_LONG("ER_CANCELLED", ZIP_ER_CANCELLED); /* N Operation cancelled */ -#endif - -#ifdef ZIP_OPSYS_DEFAULT - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_DOS", ZIP_OPSYS_DOS); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_AMIGA", ZIP_OPSYS_AMIGA); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_OPENVMS", ZIP_OPSYS_OPENVMS); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_UNIX", ZIP_OPSYS_UNIX); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_VM_CMS", ZIP_OPSYS_VM_CMS); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_ATARI_ST", ZIP_OPSYS_ATARI_ST); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_OS_2", ZIP_OPSYS_OS_2); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_MACINTOSH", ZIP_OPSYS_MACINTOSH); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_Z_SYSTEM", ZIP_OPSYS_Z_SYSTEM); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_CPM", ZIP_OPSYS_CPM); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_WINDOWS_NTFS", ZIP_OPSYS_WINDOWS_NTFS); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_MVS", ZIP_OPSYS_MVS); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_VSE", ZIP_OPSYS_VSE); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_ACORN_RISC", ZIP_OPSYS_ACORN_RISC); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_VFAT", ZIP_OPSYS_VFAT); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_ALTERNATE_MVS", ZIP_OPSYS_ALTERNATE_MVS); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_BEOS", ZIP_OPSYS_BEOS); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_TANDEM", ZIP_OPSYS_TANDEM); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_OS_400", ZIP_OPSYS_OS_400); - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_OS_X", ZIP_OPSYS_OS_X); - - REGISTER_ZIP_CLASS_CONST_LONG("OPSYS_DEFAULT", ZIP_OPSYS_DEFAULT); -#endif /* ifdef ZIP_OPSYS_DEFAULT */ - - REGISTER_ZIP_CLASS_CONST_LONG("EM_NONE", ZIP_EM_NONE); - REGISTER_ZIP_CLASS_CONST_LONG("EM_TRAD_PKWARE", ZIP_EM_TRAD_PKWARE); -#ifdef HAVE_ENCRYPTION - REGISTER_ZIP_CLASS_CONST_LONG("EM_AES_128", ZIP_EM_AES_128); - REGISTER_ZIP_CLASS_CONST_LONG("EM_AES_192", ZIP_EM_AES_192); - REGISTER_ZIP_CLASS_CONST_LONG("EM_AES_256", ZIP_EM_AES_256); -#endif - REGISTER_ZIP_CLASS_CONST_LONG("EM_UNKNOWN", ZIP_EM_UNKNOWN); - -#ifdef HAVE_LIBZIP_VERSION - zend_declare_class_constant_string(zip_class_entry, "LIBZIP_VERSION", sizeof("LIBZIP_VERSION")-1, zip_libzip_version()); -#else - zend_declare_class_constant_string(zip_class_entry, "LIBZIP_VERSION", sizeof("LIBZIP_VERSION")-1, LIBZIP_VERSION); -#endif - php_register_url_stream_wrapper("zip", &php_stream_zip_wrapper); le_zip_dir = zend_register_list_destructors_ex(php_zip_free_dir, NULL, le_zip_dir_name, module_number); diff --git a/ext/zip/php_zip.h b/ext/zip/php_zip.h index d13df678522d3..f725752c9afe0 100644 --- a/ext/zip/php_zip.h +++ b/ext/zip/php_zip.h @@ -33,6 +33,12 @@ extern zend_module_entry zip_module_entry; #define PHP_ZIP_VERSION "1.21.0" +#ifdef HAVE_LIBZIP_VERSION +#define LIBZIP_VERSION_STR zip_libzip_version() +#else +#define LIBZIP_VERSION_STR LIBZIP_VERSION +#endif + #define ZIP_OPENBASEDIR_CHECKPATH(filename) php_check_open_basedir(filename) typedef struct _ze_zip_rsrc { diff --git a/ext/zip/php_zip.stub.php b/ext/zip/php_zip.stub.php index aa7d783881035..c225d493cb3d4 100644 --- a/ext/zip/php_zip.stub.php +++ b/ext/zip/php_zip.stub.php @@ -66,6 +66,579 @@ function zip_entry_compressionmethod($zip_entry): string|false {} class ZipArchive implements Countable { + /** + * @var int + * @cvalue ZIP_CREATE + */ + public const CREATE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_EXCL + */ + public const EXCL = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CHECKCONS + */ + public const CHECKCONS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OVERWRITE + */ + public const OVERWRITE = UNKNOWN; +#ifdef ZIP_RDONLY + /** + * @var int + * @cvalue ZIP_RDONLY + */ + public const RDONLY = UNKNOWN; +#endif + + /** + * @var int + * @cvalue ZIP_FL_NOCASE + */ + public const FL_NOCASE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_NODIR + */ + public const FL_NODIR = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_COMPRESSED + */ + public const FL_COMPRESSED = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_UNCHANGED + */ + public const FL_UNCHANGED = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_RECOMPRESS + */ + public const FL_RECOMPRESS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_ENCRYPTED + */ + public const FL_ENCRYPTED = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_OVERWRITE + */ + public const FL_OVERWRITE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_LOCAL + */ + public const FL_LOCAL = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_CENTRAL + */ + public const FL_CENTRAL = UNKNOWN; + + /* Default filename encoding policy. */ + + /** + * @var int + * @cvalue ZIP_FL_ENC_GUESS + */ + public const FL_ENC_GUESS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_ENC_RAW + */ + public const FL_ENC_RAW = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_ENC_STRICT + */ + public const FL_ENC_STRICT = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_ENC_UTF_8 + */ + public const FL_ENC_UTF_8 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_FL_ENC_CP437 + */ + public const FL_ENC_CP437 = UNKNOWN; + + /** + * @var int + * @cvalue ZIP_CM_DEFAULT + */ + public const CM_DEFAULT = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_STORE + */ + public const CM_STORE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_SHRINK + */ + public const CM_SHRINK = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_REDUCE_1 + */ + public const CM_REDUCE_1 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_REDUCE_2 + */ + public const CM_REDUCE_2 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_REDUCE_3 + */ + public const CM_REDUCE_3 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_REDUCE_4 + */ + public const CM_REDUCE_4 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_IMPLODE + */ + public const CM_IMPLODE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_DEFLATE + */ + public const CM_DEFLATE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_DEFLATE64 + */ + public const CM_DEFLATE64 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_PKWARE_IMPLODE + */ + public const CM_PKWARE_IMPLODE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_BZIP2 + */ + public const CM_BZIP2 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_LZMA + */ + public const CM_LZMA = UNKNOWN; +#ifdef ZIP_CM_LZMA2 + /** + * @var int + * @cvalue ZIP_CM_LZMA2 + */ + public const CM_LZMA2 = UNKNOWN; +#endif + +#ifdef ZIP_CM_ZSTD + /** + * @var int + * @cvalue ZIP_CM_ZSTD + */ + public const CM_ZSTD = UNKNOWN; +#endif +#ifdef ZIP_CM_XZ + /** + * @var int + * @cvalue ZIP_CM_XZ + */ + public const CM_XZ = UNKNOWN; +#endif + /** + * @var int + * @cvalue ZIP_CM_TERSE + */ + public const CM_TERSE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_LZ77 + */ + public const CM_LZ77 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_WAVPACK + */ + public const CM_WAVPACK = UNKNOWN; + /** + * @var int + * @cvalue ZIP_CM_PPMD + */ + public const CM_PPMD = UNKNOWN; + + /* Error code */ + + /** + * N No error + * @var int + * @cvalue ZIP_ER_OK + */ + public const ER_OK = UNKNOWN; + /** + * N Multi-disk zip archives not supported + * @var int + * @cvalue ZIP_ER_MULTIDISK + */ + public const ER_MULTIDISK = UNKNOWN; + /** + * S Renaming temporary file failed + * @var int + * @cvalue ZIP_ER_RENAME + */ + public const ER_RENAME = UNKNOWN; + /** + * S Closing zip archive failed + * @var int + * @cvalue ZIP_ER_CLOSE + */ + public const ER_CLOSE = UNKNOWN; + /** + * S Seek error + * @var int + * @cvalue ZIP_ER_SEEK + */ + public const ER_SEEK = UNKNOWN; + /** + * S Read error + * @var int + * @cvalue ZIP_ER_READ + */ + public const ER_READ = UNKNOWN; + /** + * S Write error + * @var int + * @cvalue ZIP_ER_WRITE + */ + public const ER_WRITE = UNKNOWN; + /** + * N CRC error + * @var int + * @cvalue ZIP_ER_CRC + */ + public const ER_CRC = UNKNOWN; + /** + * N Containing zip archive was closed + * @var int + * @cvalue ZIP_ER_ZIPCLOSED + */ + public const ER_ZIPCLOSED = UNKNOWN; + /** + * N No such file + * @var int + * @cvalue ZIP_ER_NOENT + */ + public const ER_NOENT = UNKNOWN; + /** + * N File already exists + * @var int + * @cvalue ZIP_ER_EXISTS + */ + public const ER_EXISTS = UNKNOWN; + /** + * S Can't open file + * @var int + * @cvalue ZIP_ER_OPEN + */ + public const ER_OPEN = UNKNOWN; + /** + * S Failure to create temporary file + * @var int + * @cvalue ZIP_ER_TMPOPEN + */ + public const ER_TMPOPEN = UNKNOWN; + /** + * Z Zlib error + * @var int + * @cvalue ZIP_ER_ZLIB + */ + public const ER_ZLIB = UNKNOWN; + /** + * N Malloc failure + * @var int + * @cvalue ZIP_ER_MEMORY + */ + public const ER_MEMORY = UNKNOWN; + /** + * N Entry has been changed + * @var int + * @cvalue ZIP_ER_CHANGED + */ + public const ER_CHANGED = UNKNOWN; + /** + * N Compression method not supported + * @var int + * @cvalue ZIP_ER_COMPNOTSUPP + */ + public const ER_COMPNOTSUPP = UNKNOWN; + /** + * N Premature EOF + * @var int + * @cvalue ZIP_ER_EOF + */ + public const ER_EOF = UNKNOWN; + /** + * N Invalid argument + * @var int + * @cvalue ZIP_ER_INVAL + */ + public const ER_INVAL = UNKNOWN; + /** + * N Not a zip archive + * @var int + * @cvalue ZIP_ER_NOZIP + */ + public const ER_NOZIP = UNKNOWN; + /** + * N Internal error + * @var int + * @cvalue ZIP_ER_INTERNAL + */ + public const ER_INTERNAL = UNKNOWN; + /** + * N Zip archive inconsistent + * @var int + * @cvalue ZIP_ER_INCONS + */ + public const ER_INCONS = UNKNOWN; + /** + * S Can't remove file + * @var int + * @cvalue ZIP_ER_REMOVE + */ + public const ER_REMOVE = UNKNOWN; + /** + * N Entry has been deleted + * @var int + * @cvalue ZIP_ER_DELETED + */ + public const ER_DELETED = UNKNOWN; + /** + * N Encryption method not supported + * @var int + * @cvalue ZIP_ER_ENCRNOTSUPP + */ + public const ER_ENCRNOTSUPP = UNKNOWN; + /** + * N Read-only archive + * @var int + * @cvalue ZIP_ER_RDONLY + */ + public const ER_RDONLY = UNKNOWN; + /** + * N Entry has been deleted + * @var int + * @cvalue ZIP_ER_NOPASSWD + */ + public const ER_NOPASSWD = UNKNOWN; + /** + * N Wrong password provided + * @var int + * @cvalue ZIP_ER_WRONGPASSWD + */ + public const ER_WRONGPASSWD = UNKNOWN; + + /* since 1.0.0 */ + +#ifdef ZIP_ER_OPNOTSUPP + /** + * N Operation not supported + * @var int + * @cvalue ZIP_ER_OPNOTSUPP + */ + public const ER_OPNOTSUPP = UNKNOWN; +#endif +#ifdef ZIP_ER_INUSE + /** + * N Resource still in use + * @var int + * @cvalue ZIP_ER_INUSE + */ + public const ER_INUSE = UNKNOWN; +#endif +#ifdef ZIP_ER_TELL + /** + * S Tell error + * @var int + * @cvalue ZIP_ER_TELL + */ + public const ER_TELL = UNKNOWN; +#endif + + /* since 1.6.0 */ +#ifdef ZIP_ER_COMPRESSED_DATA + /** + * N Compressed data invalid + * @var int + * @cvalue ZIP_ER_COMPRESSED_DATA + */ + public const ER_COMPRESSED_DATA = UNKNOWN; +#endif +#ifdef ZIP_ER_CANCELLED + /** + * N Operation cancelled + * @var int + * @cvalue ZIP_ER_CANCELLED + */ + public const ER_CANCELLED = UNKNOWN; +#endif + +#ifdef ZIP_OPSYS_DEFAULT + /** + * @var int + * @cvalue ZIP_OPSYS_DOS + */ + public const OPSYS_DOS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_AMIGA + */ + public const OPSYS_AMIGA = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_OPENVMS + */ + public const OPSYS_OPENVMS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_UNIX + */ + public const OPSYS_UNIX = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_VM_CMS + */ + public const OPSYS_VM_CMS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_ATARI_ST + */ + public const OPSYS_ATARI_ST = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_OS_2 + */ + public const OPSYS_OS_2 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_MACINTOSH + */ + public const OPSYS_MACINTOSH = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_Z_SYSTEM + */ + public const OPSYS_Z_SYSTEM = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_CPM + */ + public const OPSYS_CPM = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_WINDOWS_NTFS + */ + public const OPSYS_WINDOWS_NTFS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_MVS + */ + public const OPSYS_MVS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_VSE + */ + public const OPSYS_VSE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_ACORN_RISC + */ + public const OPSYS_ACORN_RISC = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_VFAT + */ + public const OPSYS_VFAT = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_ALTERNATE_MVS + */ + public const OPSYS_ALTERNATE_MVS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_BEOS + */ + public const OPSYS_BEOS = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_TANDEM + */ + public const OPSYS_TANDEM = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_OS_400 + */ + public const OPSYS_OS_400 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_OS_X + */ + public const OPSYS_OS_X = UNKNOWN; + /** + * @var int + * @cvalue ZIP_OPSYS_DEFAULT + */ + public const OPSYS_DEFAULT = UNKNOWN; +#endif + + /** + * @var int + * @cvalue ZIP_EM_NONE + */ + public const EM_NONE = UNKNOWN; + /** + * @var int + * @cvalue ZIP_EM_TRAD_PKWARE + */ + public const EM_TRAD_PKWARE = UNKNOWN; +#ifdef HAVE_ENCRYPTION + /** + * @var int + * @cvalue ZIP_EM_AES_128 + */ + public const EM_AES_128 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_EM_AES_192 + */ + public const EM_AES_192 = UNKNOWN; + /** + * @var int + * @cvalue ZIP_EM_AES_256 + */ + public const EM_AES_256 = UNKNOWN; +#endif + /** + * @var int + * @cvalue ZIP_EM_UNKNOWN + */ + public const EM_UNKNOWN = UNKNOWN; + + /** + * @var string + * @cvalue LIBZIP_VERSION_STR + */ + public const LIBZIP_VERSION = UNKNOWN; + /** @readonly */ public int $lastId; /** @readonly */ diff --git a/ext/zip/php_zip_arginfo.h b/ext/zip/php_zip_arginfo.h index 8fb3bb983bdf4..208ccb9df692a 100644 --- a/ext/zip/php_zip_arginfo.h +++ b/ext/zip/php_zip_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 9c44d8bcf6b97804d539a9dd566d5faca60074ba */ + * Stub hash: d8c14dfe45c7eff2c18fd3c562488a827f658e12 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_zip_open, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0) @@ -494,6 +494,673 @@ static zend_class_entry *register_class_ZipArchive(zend_class_entry *class_entry class_entry = zend_register_internal_class_ex(&ce, NULL); zend_class_implements(class_entry, 1, class_entry_Countable); + zval const_CREATE_value; + ZVAL_LONG(&const_CREATE_value, ZIP_CREATE); + zend_string *const_CREATE_name = zend_string_init_interned("CREATE", sizeof("CREATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CREATE_name, &const_CREATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CREATE_name); + + zval const_EXCL_value; + ZVAL_LONG(&const_EXCL_value, ZIP_EXCL); + zend_string *const_EXCL_name = zend_string_init_interned("EXCL", sizeof("EXCL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EXCL_name, &const_EXCL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EXCL_name); + + zval const_CHECKCONS_value; + ZVAL_LONG(&const_CHECKCONS_value, ZIP_CHECKCONS); + zend_string *const_CHECKCONS_name = zend_string_init_interned("CHECKCONS", sizeof("CHECKCONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CHECKCONS_name, &const_CHECKCONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CHECKCONS_name); + + zval const_OVERWRITE_value; + ZVAL_LONG(&const_OVERWRITE_value, ZIP_OVERWRITE); + zend_string *const_OVERWRITE_name = zend_string_init_interned("OVERWRITE", sizeof("OVERWRITE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OVERWRITE_name, &const_OVERWRITE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OVERWRITE_name); +#if defined(ZIP_RDONLY) + + zval const_RDONLY_value; + ZVAL_LONG(&const_RDONLY_value, ZIP_RDONLY); + zend_string *const_RDONLY_name = zend_string_init_interned("RDONLY", sizeof("RDONLY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_RDONLY_name, &const_RDONLY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_RDONLY_name); +#endif + + zval const_FL_NOCASE_value; + ZVAL_LONG(&const_FL_NOCASE_value, ZIP_FL_NOCASE); + zend_string *const_FL_NOCASE_name = zend_string_init_interned("FL_NOCASE", sizeof("FL_NOCASE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_NOCASE_name, &const_FL_NOCASE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_NOCASE_name); + + zval const_FL_NODIR_value; + ZVAL_LONG(&const_FL_NODIR_value, ZIP_FL_NODIR); + zend_string *const_FL_NODIR_name = zend_string_init_interned("FL_NODIR", sizeof("FL_NODIR") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_NODIR_name, &const_FL_NODIR_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_NODIR_name); + + zval const_FL_COMPRESSED_value; + ZVAL_LONG(&const_FL_COMPRESSED_value, ZIP_FL_COMPRESSED); + zend_string *const_FL_COMPRESSED_name = zend_string_init_interned("FL_COMPRESSED", sizeof("FL_COMPRESSED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_COMPRESSED_name, &const_FL_COMPRESSED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_COMPRESSED_name); + + zval const_FL_UNCHANGED_value; + ZVAL_LONG(&const_FL_UNCHANGED_value, ZIP_FL_UNCHANGED); + zend_string *const_FL_UNCHANGED_name = zend_string_init_interned("FL_UNCHANGED", sizeof("FL_UNCHANGED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_UNCHANGED_name, &const_FL_UNCHANGED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_UNCHANGED_name); + + zval const_FL_RECOMPRESS_value; + ZVAL_LONG(&const_FL_RECOMPRESS_value, ZIP_FL_RECOMPRESS); + zend_string *const_FL_RECOMPRESS_name = zend_string_init_interned("FL_RECOMPRESS", sizeof("FL_RECOMPRESS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_RECOMPRESS_name, &const_FL_RECOMPRESS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_RECOMPRESS_name); + + zval const_FL_ENCRYPTED_value; + ZVAL_LONG(&const_FL_ENCRYPTED_value, ZIP_FL_ENCRYPTED); + zend_string *const_FL_ENCRYPTED_name = zend_string_init_interned("FL_ENCRYPTED", sizeof("FL_ENCRYPTED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_ENCRYPTED_name, &const_FL_ENCRYPTED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_ENCRYPTED_name); + + zval const_FL_OVERWRITE_value; + ZVAL_LONG(&const_FL_OVERWRITE_value, ZIP_FL_OVERWRITE); + zend_string *const_FL_OVERWRITE_name = zend_string_init_interned("FL_OVERWRITE", sizeof("FL_OVERWRITE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_OVERWRITE_name, &const_FL_OVERWRITE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_OVERWRITE_name); + + zval const_FL_LOCAL_value; + ZVAL_LONG(&const_FL_LOCAL_value, ZIP_FL_LOCAL); + zend_string *const_FL_LOCAL_name = zend_string_init_interned("FL_LOCAL", sizeof("FL_LOCAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_LOCAL_name, &const_FL_LOCAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_LOCAL_name); + + zval const_FL_CENTRAL_value; + ZVAL_LONG(&const_FL_CENTRAL_value, ZIP_FL_CENTRAL); + zend_string *const_FL_CENTRAL_name = zend_string_init_interned("FL_CENTRAL", sizeof("FL_CENTRAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_CENTRAL_name, &const_FL_CENTRAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_CENTRAL_name); + + zval const_FL_ENC_GUESS_value; + ZVAL_LONG(&const_FL_ENC_GUESS_value, ZIP_FL_ENC_GUESS); + zend_string *const_FL_ENC_GUESS_name = zend_string_init_interned("FL_ENC_GUESS", sizeof("FL_ENC_GUESS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_ENC_GUESS_name, &const_FL_ENC_GUESS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_ENC_GUESS_name); + + zval const_FL_ENC_RAW_value; + ZVAL_LONG(&const_FL_ENC_RAW_value, ZIP_FL_ENC_RAW); + zend_string *const_FL_ENC_RAW_name = zend_string_init_interned("FL_ENC_RAW", sizeof("FL_ENC_RAW") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_ENC_RAW_name, &const_FL_ENC_RAW_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_ENC_RAW_name); + + zval const_FL_ENC_STRICT_value; + ZVAL_LONG(&const_FL_ENC_STRICT_value, ZIP_FL_ENC_STRICT); + zend_string *const_FL_ENC_STRICT_name = zend_string_init_interned("FL_ENC_STRICT", sizeof("FL_ENC_STRICT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_ENC_STRICT_name, &const_FL_ENC_STRICT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_ENC_STRICT_name); + + zval const_FL_ENC_UTF_8_value; + ZVAL_LONG(&const_FL_ENC_UTF_8_value, ZIP_FL_ENC_UTF_8); + zend_string *const_FL_ENC_UTF_8_name = zend_string_init_interned("FL_ENC_UTF_8", sizeof("FL_ENC_UTF_8") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_ENC_UTF_8_name, &const_FL_ENC_UTF_8_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_ENC_UTF_8_name); + + zval const_FL_ENC_CP437_value; + ZVAL_LONG(&const_FL_ENC_CP437_value, ZIP_FL_ENC_CP437); + zend_string *const_FL_ENC_CP437_name = zend_string_init_interned("FL_ENC_CP437", sizeof("FL_ENC_CP437") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_FL_ENC_CP437_name, &const_FL_ENC_CP437_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_FL_ENC_CP437_name); + + zval const_CM_DEFAULT_value; + ZVAL_LONG(&const_CM_DEFAULT_value, ZIP_CM_DEFAULT); + zend_string *const_CM_DEFAULT_name = zend_string_init_interned("CM_DEFAULT", sizeof("CM_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_DEFAULT_name, &const_CM_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_DEFAULT_name); + + zval const_CM_STORE_value; + ZVAL_LONG(&const_CM_STORE_value, ZIP_CM_STORE); + zend_string *const_CM_STORE_name = zend_string_init_interned("CM_STORE", sizeof("CM_STORE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_STORE_name, &const_CM_STORE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_STORE_name); + + zval const_CM_SHRINK_value; + ZVAL_LONG(&const_CM_SHRINK_value, ZIP_CM_SHRINK); + zend_string *const_CM_SHRINK_name = zend_string_init_interned("CM_SHRINK", sizeof("CM_SHRINK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_SHRINK_name, &const_CM_SHRINK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_SHRINK_name); + + zval const_CM_REDUCE_1_value; + ZVAL_LONG(&const_CM_REDUCE_1_value, ZIP_CM_REDUCE_1); + zend_string *const_CM_REDUCE_1_name = zend_string_init_interned("CM_REDUCE_1", sizeof("CM_REDUCE_1") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_REDUCE_1_name, &const_CM_REDUCE_1_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_REDUCE_1_name); + + zval const_CM_REDUCE_2_value; + ZVAL_LONG(&const_CM_REDUCE_2_value, ZIP_CM_REDUCE_2); + zend_string *const_CM_REDUCE_2_name = zend_string_init_interned("CM_REDUCE_2", sizeof("CM_REDUCE_2") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_REDUCE_2_name, &const_CM_REDUCE_2_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_REDUCE_2_name); + + zval const_CM_REDUCE_3_value; + ZVAL_LONG(&const_CM_REDUCE_3_value, ZIP_CM_REDUCE_3); + zend_string *const_CM_REDUCE_3_name = zend_string_init_interned("CM_REDUCE_3", sizeof("CM_REDUCE_3") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_REDUCE_3_name, &const_CM_REDUCE_3_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_REDUCE_3_name); + + zval const_CM_REDUCE_4_value; + ZVAL_LONG(&const_CM_REDUCE_4_value, ZIP_CM_REDUCE_4); + zend_string *const_CM_REDUCE_4_name = zend_string_init_interned("CM_REDUCE_4", sizeof("CM_REDUCE_4") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_REDUCE_4_name, &const_CM_REDUCE_4_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_REDUCE_4_name); + + zval const_CM_IMPLODE_value; + ZVAL_LONG(&const_CM_IMPLODE_value, ZIP_CM_IMPLODE); + zend_string *const_CM_IMPLODE_name = zend_string_init_interned("CM_IMPLODE", sizeof("CM_IMPLODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_IMPLODE_name, &const_CM_IMPLODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_IMPLODE_name); + + zval const_CM_DEFLATE_value; + ZVAL_LONG(&const_CM_DEFLATE_value, ZIP_CM_DEFLATE); + zend_string *const_CM_DEFLATE_name = zend_string_init_interned("CM_DEFLATE", sizeof("CM_DEFLATE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_DEFLATE_name, &const_CM_DEFLATE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_DEFLATE_name); + + zval const_CM_DEFLATE64_value; + ZVAL_LONG(&const_CM_DEFLATE64_value, ZIP_CM_DEFLATE64); + zend_string *const_CM_DEFLATE64_name = zend_string_init_interned("CM_DEFLATE64", sizeof("CM_DEFLATE64") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_DEFLATE64_name, &const_CM_DEFLATE64_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_DEFLATE64_name); + + zval const_CM_PKWARE_IMPLODE_value; + ZVAL_LONG(&const_CM_PKWARE_IMPLODE_value, ZIP_CM_PKWARE_IMPLODE); + zend_string *const_CM_PKWARE_IMPLODE_name = zend_string_init_interned("CM_PKWARE_IMPLODE", sizeof("CM_PKWARE_IMPLODE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_PKWARE_IMPLODE_name, &const_CM_PKWARE_IMPLODE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_PKWARE_IMPLODE_name); + + zval const_CM_BZIP2_value; + ZVAL_LONG(&const_CM_BZIP2_value, ZIP_CM_BZIP2); + zend_string *const_CM_BZIP2_name = zend_string_init_interned("CM_BZIP2", sizeof("CM_BZIP2") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_BZIP2_name, &const_CM_BZIP2_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_BZIP2_name); + + zval const_CM_LZMA_value; + ZVAL_LONG(&const_CM_LZMA_value, ZIP_CM_LZMA); + zend_string *const_CM_LZMA_name = zend_string_init_interned("CM_LZMA", sizeof("CM_LZMA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_LZMA_name, &const_CM_LZMA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_LZMA_name); +#if defined(ZIP_CM_LZMA2) + + zval const_CM_LZMA2_value; + ZVAL_LONG(&const_CM_LZMA2_value, ZIP_CM_LZMA2); + zend_string *const_CM_LZMA2_name = zend_string_init_interned("CM_LZMA2", sizeof("CM_LZMA2") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_LZMA2_name, &const_CM_LZMA2_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_LZMA2_name); +#endif +#if defined(ZIP_CM_ZSTD) + + zval const_CM_ZSTD_value; + ZVAL_LONG(&const_CM_ZSTD_value, ZIP_CM_ZSTD); + zend_string *const_CM_ZSTD_name = zend_string_init_interned("CM_ZSTD", sizeof("CM_ZSTD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_ZSTD_name, &const_CM_ZSTD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_ZSTD_name); +#endif +#if defined(ZIP_CM_XZ) + + zval const_CM_XZ_value; + ZVAL_LONG(&const_CM_XZ_value, ZIP_CM_XZ); + zend_string *const_CM_XZ_name = zend_string_init_interned("CM_XZ", sizeof("CM_XZ") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_XZ_name, &const_CM_XZ_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_XZ_name); +#endif + + zval const_CM_TERSE_value; + ZVAL_LONG(&const_CM_TERSE_value, ZIP_CM_TERSE); + zend_string *const_CM_TERSE_name = zend_string_init_interned("CM_TERSE", sizeof("CM_TERSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_TERSE_name, &const_CM_TERSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_TERSE_name); + + zval const_CM_LZ77_value; + ZVAL_LONG(&const_CM_LZ77_value, ZIP_CM_LZ77); + zend_string *const_CM_LZ77_name = zend_string_init_interned("CM_LZ77", sizeof("CM_LZ77") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_LZ77_name, &const_CM_LZ77_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_LZ77_name); + + zval const_CM_WAVPACK_value; + ZVAL_LONG(&const_CM_WAVPACK_value, ZIP_CM_WAVPACK); + zend_string *const_CM_WAVPACK_name = zend_string_init_interned("CM_WAVPACK", sizeof("CM_WAVPACK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_WAVPACK_name, &const_CM_WAVPACK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_WAVPACK_name); + + zval const_CM_PPMD_value; + ZVAL_LONG(&const_CM_PPMD_value, ZIP_CM_PPMD); + zend_string *const_CM_PPMD_name = zend_string_init_interned("CM_PPMD", sizeof("CM_PPMD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_CM_PPMD_name, &const_CM_PPMD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_CM_PPMD_name); + + zval const_ER_OK_value; + ZVAL_LONG(&const_ER_OK_value, ZIP_ER_OK); + zend_string *const_ER_OK_name = zend_string_init_interned("ER_OK", sizeof("ER_OK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_OK_name, &const_ER_OK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_OK_name); + + zval const_ER_MULTIDISK_value; + ZVAL_LONG(&const_ER_MULTIDISK_value, ZIP_ER_MULTIDISK); + zend_string *const_ER_MULTIDISK_name = zend_string_init_interned("ER_MULTIDISK", sizeof("ER_MULTIDISK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_MULTIDISK_name, &const_ER_MULTIDISK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_MULTIDISK_name); + + zval const_ER_RENAME_value; + ZVAL_LONG(&const_ER_RENAME_value, ZIP_ER_RENAME); + zend_string *const_ER_RENAME_name = zend_string_init_interned("ER_RENAME", sizeof("ER_RENAME") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_RENAME_name, &const_ER_RENAME_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_RENAME_name); + + zval const_ER_CLOSE_value; + ZVAL_LONG(&const_ER_CLOSE_value, ZIP_ER_CLOSE); + zend_string *const_ER_CLOSE_name = zend_string_init_interned("ER_CLOSE", sizeof("ER_CLOSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_CLOSE_name, &const_ER_CLOSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_CLOSE_name); + + zval const_ER_SEEK_value; + ZVAL_LONG(&const_ER_SEEK_value, ZIP_ER_SEEK); + zend_string *const_ER_SEEK_name = zend_string_init_interned("ER_SEEK", sizeof("ER_SEEK") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_SEEK_name, &const_ER_SEEK_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_SEEK_name); + + zval const_ER_READ_value; + ZVAL_LONG(&const_ER_READ_value, ZIP_ER_READ); + zend_string *const_ER_READ_name = zend_string_init_interned("ER_READ", sizeof("ER_READ") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_READ_name, &const_ER_READ_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_READ_name); + + zval const_ER_WRITE_value; + ZVAL_LONG(&const_ER_WRITE_value, ZIP_ER_WRITE); + zend_string *const_ER_WRITE_name = zend_string_init_interned("ER_WRITE", sizeof("ER_WRITE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_WRITE_name, &const_ER_WRITE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_WRITE_name); + + zval const_ER_CRC_value; + ZVAL_LONG(&const_ER_CRC_value, ZIP_ER_CRC); + zend_string *const_ER_CRC_name = zend_string_init_interned("ER_CRC", sizeof("ER_CRC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_CRC_name, &const_ER_CRC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_CRC_name); + + zval const_ER_ZIPCLOSED_value; + ZVAL_LONG(&const_ER_ZIPCLOSED_value, ZIP_ER_ZIPCLOSED); + zend_string *const_ER_ZIPCLOSED_name = zend_string_init_interned("ER_ZIPCLOSED", sizeof("ER_ZIPCLOSED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_ZIPCLOSED_name, &const_ER_ZIPCLOSED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_ZIPCLOSED_name); + + zval const_ER_NOENT_value; + ZVAL_LONG(&const_ER_NOENT_value, ZIP_ER_NOENT); + zend_string *const_ER_NOENT_name = zend_string_init_interned("ER_NOENT", sizeof("ER_NOENT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_NOENT_name, &const_ER_NOENT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_NOENT_name); + + zval const_ER_EXISTS_value; + ZVAL_LONG(&const_ER_EXISTS_value, ZIP_ER_EXISTS); + zend_string *const_ER_EXISTS_name = zend_string_init_interned("ER_EXISTS", sizeof("ER_EXISTS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_EXISTS_name, &const_ER_EXISTS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_EXISTS_name); + + zval const_ER_OPEN_value; + ZVAL_LONG(&const_ER_OPEN_value, ZIP_ER_OPEN); + zend_string *const_ER_OPEN_name = zend_string_init_interned("ER_OPEN", sizeof("ER_OPEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_OPEN_name, &const_ER_OPEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_OPEN_name); + + zval const_ER_TMPOPEN_value; + ZVAL_LONG(&const_ER_TMPOPEN_value, ZIP_ER_TMPOPEN); + zend_string *const_ER_TMPOPEN_name = zend_string_init_interned("ER_TMPOPEN", sizeof("ER_TMPOPEN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_TMPOPEN_name, &const_ER_TMPOPEN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_TMPOPEN_name); + + zval const_ER_ZLIB_value; + ZVAL_LONG(&const_ER_ZLIB_value, ZIP_ER_ZLIB); + zend_string *const_ER_ZLIB_name = zend_string_init_interned("ER_ZLIB", sizeof("ER_ZLIB") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_ZLIB_name, &const_ER_ZLIB_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_ZLIB_name); + + zval const_ER_MEMORY_value; + ZVAL_LONG(&const_ER_MEMORY_value, ZIP_ER_MEMORY); + zend_string *const_ER_MEMORY_name = zend_string_init_interned("ER_MEMORY", sizeof("ER_MEMORY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_MEMORY_name, &const_ER_MEMORY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_MEMORY_name); + + zval const_ER_CHANGED_value; + ZVAL_LONG(&const_ER_CHANGED_value, ZIP_ER_CHANGED); + zend_string *const_ER_CHANGED_name = zend_string_init_interned("ER_CHANGED", sizeof("ER_CHANGED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_CHANGED_name, &const_ER_CHANGED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_CHANGED_name); + + zval const_ER_COMPNOTSUPP_value; + ZVAL_LONG(&const_ER_COMPNOTSUPP_value, ZIP_ER_COMPNOTSUPP); + zend_string *const_ER_COMPNOTSUPP_name = zend_string_init_interned("ER_COMPNOTSUPP", sizeof("ER_COMPNOTSUPP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_COMPNOTSUPP_name, &const_ER_COMPNOTSUPP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_COMPNOTSUPP_name); + + zval const_ER_EOF_value; + ZVAL_LONG(&const_ER_EOF_value, ZIP_ER_EOF); + zend_string *const_ER_EOF_name = zend_string_init_interned("ER_EOF", sizeof("ER_EOF") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_EOF_name, &const_ER_EOF_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_EOF_name); + + zval const_ER_INVAL_value; + ZVAL_LONG(&const_ER_INVAL_value, ZIP_ER_INVAL); + zend_string *const_ER_INVAL_name = zend_string_init_interned("ER_INVAL", sizeof("ER_INVAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_INVAL_name, &const_ER_INVAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_INVAL_name); + + zval const_ER_NOZIP_value; + ZVAL_LONG(&const_ER_NOZIP_value, ZIP_ER_NOZIP); + zend_string *const_ER_NOZIP_name = zend_string_init_interned("ER_NOZIP", sizeof("ER_NOZIP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_NOZIP_name, &const_ER_NOZIP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_NOZIP_name); + + zval const_ER_INTERNAL_value; + ZVAL_LONG(&const_ER_INTERNAL_value, ZIP_ER_INTERNAL); + zend_string *const_ER_INTERNAL_name = zend_string_init_interned("ER_INTERNAL", sizeof("ER_INTERNAL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_INTERNAL_name, &const_ER_INTERNAL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_INTERNAL_name); + + zval const_ER_INCONS_value; + ZVAL_LONG(&const_ER_INCONS_value, ZIP_ER_INCONS); + zend_string *const_ER_INCONS_name = zend_string_init_interned("ER_INCONS", sizeof("ER_INCONS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_INCONS_name, &const_ER_INCONS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_INCONS_name); + + zval const_ER_REMOVE_value; + ZVAL_LONG(&const_ER_REMOVE_value, ZIP_ER_REMOVE); + zend_string *const_ER_REMOVE_name = zend_string_init_interned("ER_REMOVE", sizeof("ER_REMOVE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_REMOVE_name, &const_ER_REMOVE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_REMOVE_name); + + zval const_ER_DELETED_value; + ZVAL_LONG(&const_ER_DELETED_value, ZIP_ER_DELETED); + zend_string *const_ER_DELETED_name = zend_string_init_interned("ER_DELETED", sizeof("ER_DELETED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_DELETED_name, &const_ER_DELETED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_DELETED_name); + + zval const_ER_ENCRNOTSUPP_value; + ZVAL_LONG(&const_ER_ENCRNOTSUPP_value, ZIP_ER_ENCRNOTSUPP); + zend_string *const_ER_ENCRNOTSUPP_name = zend_string_init_interned("ER_ENCRNOTSUPP", sizeof("ER_ENCRNOTSUPP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_ENCRNOTSUPP_name, &const_ER_ENCRNOTSUPP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_ENCRNOTSUPP_name); + + zval const_ER_RDONLY_value; + ZVAL_LONG(&const_ER_RDONLY_value, ZIP_ER_RDONLY); + zend_string *const_ER_RDONLY_name = zend_string_init_interned("ER_RDONLY", sizeof("ER_RDONLY") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_RDONLY_name, &const_ER_RDONLY_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_RDONLY_name); + + zval const_ER_NOPASSWD_value; + ZVAL_LONG(&const_ER_NOPASSWD_value, ZIP_ER_NOPASSWD); + zend_string *const_ER_NOPASSWD_name = zend_string_init_interned("ER_NOPASSWD", sizeof("ER_NOPASSWD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_NOPASSWD_name, &const_ER_NOPASSWD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_NOPASSWD_name); + + zval const_ER_WRONGPASSWD_value; + ZVAL_LONG(&const_ER_WRONGPASSWD_value, ZIP_ER_WRONGPASSWD); + zend_string *const_ER_WRONGPASSWD_name = zend_string_init_interned("ER_WRONGPASSWD", sizeof("ER_WRONGPASSWD") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_WRONGPASSWD_name, &const_ER_WRONGPASSWD_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_WRONGPASSWD_name); +#if defined(ZIP_ER_OPNOTSUPP) + + zval const_ER_OPNOTSUPP_value; + ZVAL_LONG(&const_ER_OPNOTSUPP_value, ZIP_ER_OPNOTSUPP); + zend_string *const_ER_OPNOTSUPP_name = zend_string_init_interned("ER_OPNOTSUPP", sizeof("ER_OPNOTSUPP") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_OPNOTSUPP_name, &const_ER_OPNOTSUPP_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_OPNOTSUPP_name); +#endif +#if defined(ZIP_ER_INUSE) + + zval const_ER_INUSE_value; + ZVAL_LONG(&const_ER_INUSE_value, ZIP_ER_INUSE); + zend_string *const_ER_INUSE_name = zend_string_init_interned("ER_INUSE", sizeof("ER_INUSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_INUSE_name, &const_ER_INUSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_INUSE_name); +#endif +#if defined(ZIP_ER_TELL) + + zval const_ER_TELL_value; + ZVAL_LONG(&const_ER_TELL_value, ZIP_ER_TELL); + zend_string *const_ER_TELL_name = zend_string_init_interned("ER_TELL", sizeof("ER_TELL") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_TELL_name, &const_ER_TELL_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_TELL_name); +#endif +#if defined(ZIP_ER_COMPRESSED_DATA) + + zval const_ER_COMPRESSED_DATA_value; + ZVAL_LONG(&const_ER_COMPRESSED_DATA_value, ZIP_ER_COMPRESSED_DATA); + zend_string *const_ER_COMPRESSED_DATA_name = zend_string_init_interned("ER_COMPRESSED_DATA", sizeof("ER_COMPRESSED_DATA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_COMPRESSED_DATA_name, &const_ER_COMPRESSED_DATA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_COMPRESSED_DATA_name); +#endif +#if defined(ZIP_ER_CANCELLED) + + zval const_ER_CANCELLED_value; + ZVAL_LONG(&const_ER_CANCELLED_value, ZIP_ER_CANCELLED); + zend_string *const_ER_CANCELLED_name = zend_string_init_interned("ER_CANCELLED", sizeof("ER_CANCELLED") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_ER_CANCELLED_name, &const_ER_CANCELLED_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_ER_CANCELLED_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_DOS_value; + ZVAL_LONG(&const_OPSYS_DOS_value, ZIP_OPSYS_DOS); + zend_string *const_OPSYS_DOS_name = zend_string_init_interned("OPSYS_DOS", sizeof("OPSYS_DOS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_DOS_name, &const_OPSYS_DOS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_DOS_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_AMIGA_value; + ZVAL_LONG(&const_OPSYS_AMIGA_value, ZIP_OPSYS_AMIGA); + zend_string *const_OPSYS_AMIGA_name = zend_string_init_interned("OPSYS_AMIGA", sizeof("OPSYS_AMIGA") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_AMIGA_name, &const_OPSYS_AMIGA_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_AMIGA_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_OPENVMS_value; + ZVAL_LONG(&const_OPSYS_OPENVMS_value, ZIP_OPSYS_OPENVMS); + zend_string *const_OPSYS_OPENVMS_name = zend_string_init_interned("OPSYS_OPENVMS", sizeof("OPSYS_OPENVMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_OPENVMS_name, &const_OPSYS_OPENVMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_OPENVMS_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_UNIX_value; + ZVAL_LONG(&const_OPSYS_UNIX_value, ZIP_OPSYS_UNIX); + zend_string *const_OPSYS_UNIX_name = zend_string_init_interned("OPSYS_UNIX", sizeof("OPSYS_UNIX") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_UNIX_name, &const_OPSYS_UNIX_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_UNIX_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_VM_CMS_value; + ZVAL_LONG(&const_OPSYS_VM_CMS_value, ZIP_OPSYS_VM_CMS); + zend_string *const_OPSYS_VM_CMS_name = zend_string_init_interned("OPSYS_VM_CMS", sizeof("OPSYS_VM_CMS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_VM_CMS_name, &const_OPSYS_VM_CMS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_VM_CMS_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_ATARI_ST_value; + ZVAL_LONG(&const_OPSYS_ATARI_ST_value, ZIP_OPSYS_ATARI_ST); + zend_string *const_OPSYS_ATARI_ST_name = zend_string_init_interned("OPSYS_ATARI_ST", sizeof("OPSYS_ATARI_ST") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_ATARI_ST_name, &const_OPSYS_ATARI_ST_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_ATARI_ST_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_OS_2_value; + ZVAL_LONG(&const_OPSYS_OS_2_value, ZIP_OPSYS_OS_2); + zend_string *const_OPSYS_OS_2_name = zend_string_init_interned("OPSYS_OS_2", sizeof("OPSYS_OS_2") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_OS_2_name, &const_OPSYS_OS_2_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_OS_2_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_MACINTOSH_value; + ZVAL_LONG(&const_OPSYS_MACINTOSH_value, ZIP_OPSYS_MACINTOSH); + zend_string *const_OPSYS_MACINTOSH_name = zend_string_init_interned("OPSYS_MACINTOSH", sizeof("OPSYS_MACINTOSH") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_MACINTOSH_name, &const_OPSYS_MACINTOSH_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_MACINTOSH_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_Z_SYSTEM_value; + ZVAL_LONG(&const_OPSYS_Z_SYSTEM_value, ZIP_OPSYS_Z_SYSTEM); + zend_string *const_OPSYS_Z_SYSTEM_name = zend_string_init_interned("OPSYS_Z_SYSTEM", sizeof("OPSYS_Z_SYSTEM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_Z_SYSTEM_name, &const_OPSYS_Z_SYSTEM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_Z_SYSTEM_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_CPM_value; + ZVAL_LONG(&const_OPSYS_CPM_value, ZIP_OPSYS_CPM); + zend_string *const_OPSYS_CPM_name = zend_string_init_interned("OPSYS_CPM", sizeof("OPSYS_CPM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_CPM_name, &const_OPSYS_CPM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_CPM_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_WINDOWS_NTFS_value; + ZVAL_LONG(&const_OPSYS_WINDOWS_NTFS_value, ZIP_OPSYS_WINDOWS_NTFS); + zend_string *const_OPSYS_WINDOWS_NTFS_name = zend_string_init_interned("OPSYS_WINDOWS_NTFS", sizeof("OPSYS_WINDOWS_NTFS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_WINDOWS_NTFS_name, &const_OPSYS_WINDOWS_NTFS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_WINDOWS_NTFS_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_MVS_value; + ZVAL_LONG(&const_OPSYS_MVS_value, ZIP_OPSYS_MVS); + zend_string *const_OPSYS_MVS_name = zend_string_init_interned("OPSYS_MVS", sizeof("OPSYS_MVS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_MVS_name, &const_OPSYS_MVS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_MVS_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_VSE_value; + ZVAL_LONG(&const_OPSYS_VSE_value, ZIP_OPSYS_VSE); + zend_string *const_OPSYS_VSE_name = zend_string_init_interned("OPSYS_VSE", sizeof("OPSYS_VSE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_VSE_name, &const_OPSYS_VSE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_VSE_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_ACORN_RISC_value; + ZVAL_LONG(&const_OPSYS_ACORN_RISC_value, ZIP_OPSYS_ACORN_RISC); + zend_string *const_OPSYS_ACORN_RISC_name = zend_string_init_interned("OPSYS_ACORN_RISC", sizeof("OPSYS_ACORN_RISC") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_ACORN_RISC_name, &const_OPSYS_ACORN_RISC_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_ACORN_RISC_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_VFAT_value; + ZVAL_LONG(&const_OPSYS_VFAT_value, ZIP_OPSYS_VFAT); + zend_string *const_OPSYS_VFAT_name = zend_string_init_interned("OPSYS_VFAT", sizeof("OPSYS_VFAT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_VFAT_name, &const_OPSYS_VFAT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_VFAT_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_ALTERNATE_MVS_value; + ZVAL_LONG(&const_OPSYS_ALTERNATE_MVS_value, ZIP_OPSYS_ALTERNATE_MVS); + zend_string *const_OPSYS_ALTERNATE_MVS_name = zend_string_init_interned("OPSYS_ALTERNATE_MVS", sizeof("OPSYS_ALTERNATE_MVS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_ALTERNATE_MVS_name, &const_OPSYS_ALTERNATE_MVS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_ALTERNATE_MVS_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_BEOS_value; + ZVAL_LONG(&const_OPSYS_BEOS_value, ZIP_OPSYS_BEOS); + zend_string *const_OPSYS_BEOS_name = zend_string_init_interned("OPSYS_BEOS", sizeof("OPSYS_BEOS") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_BEOS_name, &const_OPSYS_BEOS_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_BEOS_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_TANDEM_value; + ZVAL_LONG(&const_OPSYS_TANDEM_value, ZIP_OPSYS_TANDEM); + zend_string *const_OPSYS_TANDEM_name = zend_string_init_interned("OPSYS_TANDEM", sizeof("OPSYS_TANDEM") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_TANDEM_name, &const_OPSYS_TANDEM_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_TANDEM_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_OS_400_value; + ZVAL_LONG(&const_OPSYS_OS_400_value, ZIP_OPSYS_OS_400); + zend_string *const_OPSYS_OS_400_name = zend_string_init_interned("OPSYS_OS_400", sizeof("OPSYS_OS_400") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_OS_400_name, &const_OPSYS_OS_400_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_OS_400_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_OS_X_value; + ZVAL_LONG(&const_OPSYS_OS_X_value, ZIP_OPSYS_OS_X); + zend_string *const_OPSYS_OS_X_name = zend_string_init_interned("OPSYS_OS_X", sizeof("OPSYS_OS_X") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_OS_X_name, &const_OPSYS_OS_X_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_OS_X_name); +#endif +#if defined(ZIP_OPSYS_DEFAULT) + + zval const_OPSYS_DEFAULT_value; + ZVAL_LONG(&const_OPSYS_DEFAULT_value, ZIP_OPSYS_DEFAULT); + zend_string *const_OPSYS_DEFAULT_name = zend_string_init_interned("OPSYS_DEFAULT", sizeof("OPSYS_DEFAULT") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_OPSYS_DEFAULT_name, &const_OPSYS_DEFAULT_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_OPSYS_DEFAULT_name); +#endif + + zval const_EM_NONE_value; + ZVAL_LONG(&const_EM_NONE_value, ZIP_EM_NONE); + zend_string *const_EM_NONE_name = zend_string_init_interned("EM_NONE", sizeof("EM_NONE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EM_NONE_name, &const_EM_NONE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EM_NONE_name); + + zval const_EM_TRAD_PKWARE_value; + ZVAL_LONG(&const_EM_TRAD_PKWARE_value, ZIP_EM_TRAD_PKWARE); + zend_string *const_EM_TRAD_PKWARE_name = zend_string_init_interned("EM_TRAD_PKWARE", sizeof("EM_TRAD_PKWARE") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EM_TRAD_PKWARE_name, &const_EM_TRAD_PKWARE_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EM_TRAD_PKWARE_name); +#if defined(HAVE_ENCRYPTION) + + zval const_EM_AES_128_value; + ZVAL_LONG(&const_EM_AES_128_value, ZIP_EM_AES_128); + zend_string *const_EM_AES_128_name = zend_string_init_interned("EM_AES_128", sizeof("EM_AES_128") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EM_AES_128_name, &const_EM_AES_128_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EM_AES_128_name); +#endif +#if defined(HAVE_ENCRYPTION) + + zval const_EM_AES_192_value; + ZVAL_LONG(&const_EM_AES_192_value, ZIP_EM_AES_192); + zend_string *const_EM_AES_192_name = zend_string_init_interned("EM_AES_192", sizeof("EM_AES_192") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EM_AES_192_name, &const_EM_AES_192_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EM_AES_192_name); +#endif +#if defined(HAVE_ENCRYPTION) + + zval const_EM_AES_256_value; + ZVAL_LONG(&const_EM_AES_256_value, ZIP_EM_AES_256); + zend_string *const_EM_AES_256_name = zend_string_init_interned("EM_AES_256", sizeof("EM_AES_256") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EM_AES_256_name, &const_EM_AES_256_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EM_AES_256_name); +#endif + + zval const_EM_UNKNOWN_value; + ZVAL_LONG(&const_EM_UNKNOWN_value, ZIP_EM_UNKNOWN); + zend_string *const_EM_UNKNOWN_name = zend_string_init_interned("EM_UNKNOWN", sizeof("EM_UNKNOWN") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_EM_UNKNOWN_name, &const_EM_UNKNOWN_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_EM_UNKNOWN_name); + + zval const_LIBZIP_VERSION_value; + zend_string *const_LIBZIP_VERSION_value_str = zend_string_init(LIBZIP_VERSION_STR, sizeof(LIBZIP_VERSION_STR) - 1, 1); + ZVAL_STR(&const_LIBZIP_VERSION_value, const_LIBZIP_VERSION_value_str); + zend_string *const_LIBZIP_VERSION_name = zend_string_init_interned("LIBZIP_VERSION", sizeof("LIBZIP_VERSION") - 1, 1); + zend_declare_class_constant_ex(class_entry, const_LIBZIP_VERSION_name, &const_LIBZIP_VERSION_value, ZEND_ACC_PUBLIC, NULL); + zend_string_release(const_LIBZIP_VERSION_name); + zval property_lastId_default_value; ZVAL_UNDEF(&property_lastId_default_value); zend_string *property_lastId_name = zend_string_init("lastId", sizeof("lastId") - 1, 1); diff --git a/ext/zlib/zlib.c b/ext/zlib/zlib.c index d80db3194f0d8..0cc566b544d00 100644 --- a/ext/zlib/zlib.c +++ b/ext/zlib/zlib.c @@ -60,7 +60,6 @@ static zend_object *inflate_context_create_object(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &inflate_context_object_handlers; return &intern->std; } @@ -99,7 +98,6 @@ static zend_object *deflate_context_create_object(zend_class_entry *class_type) zend_object_std_init(&intern->std, class_type); object_properties_init(&intern->std, class_type); - intern->std.handlers = &deflate_context_object_handlers; return &intern->std; } @@ -1340,6 +1338,7 @@ static PHP_MINIT_FUNCTION(zlib) inflate_context_ce = register_class_InflateContext(); inflate_context_ce->create_object = inflate_context_create_object; + inflate_context_ce->default_object_handlers = &inflate_context_object_handlers; memcpy(&inflate_context_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); inflate_context_object_handlers.offset = XtOffsetOf(php_zlib_context, std); @@ -1350,6 +1349,7 @@ static PHP_MINIT_FUNCTION(zlib) deflate_context_ce = register_class_DeflateContext(); deflate_context_ce->create_object = deflate_context_create_object; + deflate_context_ce->default_object_handlers = &deflate_context_object_handlers; memcpy(&deflate_context_object_handlers, &std_object_handlers, sizeof(zend_object_handlers)); deflate_context_object_handlers.offset = XtOffsetOf(php_zlib_context, std); @@ -1404,7 +1404,7 @@ static PHP_RSHUTDOWN_FUNCTION(zlib) static PHP_MINFO_FUNCTION(zlib) { php_info_print_table_start(); - php_info_print_table_header(2, "ZLib Support", "enabled"); + php_info_print_table_row(2, "ZLib Support", "enabled"); php_info_print_table_row(2, "Stream Wrapper", "compress.zlib://"); php_info_print_table_row(2, "Stream Filter", "zlib.inflate, zlib.deflate"); php_info_print_table_row(2, "Compiled Version", ZLIB_VERSION); diff --git a/ext/zlib/zlib_arginfo.h b/ext/zlib/zlib_arginfo.h index 35a4961a5669b..cd4ef6d9c2aec 100644 --- a/ext/zlib/zlib_arginfo.h +++ b/ext/zlib/zlib_arginfo.h @@ -210,33 +210,33 @@ static const zend_function_entry class_DeflateContext_methods[] = { static void register_zlib_symbols(int module_number) { - REGISTER_LONG_CONSTANT("FORCE_GZIP", PHP_ZLIB_ENCODING_GZIP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("FORCE_DEFLATE", PHP_ZLIB_ENCODING_DEFLATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_ENCODING_RAW", PHP_ZLIB_ENCODING_RAW, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_ENCODING_GZIP", PHP_ZLIB_ENCODING_GZIP, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_ENCODING_DEFLATE", PHP_ZLIB_ENCODING_DEFLATE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_NO_FLUSH", Z_NO_FLUSH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_PARTIAL_FLUSH", Z_PARTIAL_FLUSH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_SYNC_FLUSH", Z_SYNC_FLUSH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_FULL_FLUSH", Z_FULL_FLUSH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_BLOCK", Z_BLOCK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_FINISH", Z_FINISH, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_FILTERED", Z_FILTERED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_HUFFMAN_ONLY", Z_HUFFMAN_ONLY, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_RLE", Z_RLE, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_FIXED", Z_FIXED, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_DEFAULT_STRATEGY", Z_DEFAULT_STRATEGY, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("ZLIB_VERSION", ZLIB_VERSION, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_VERNUM", ZLIB_VERNUM, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_OK", Z_OK, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_STREAM_END", Z_STREAM_END, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_NEED_DICT", Z_NEED_DICT, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_ERRNO", Z_ERRNO, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_STREAM_ERROR", Z_STREAM_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_DATA_ERROR", Z_DATA_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_MEM_ERROR", Z_MEM_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_BUF_ERROR", Z_BUF_ERROR, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("ZLIB_VERSION_ERROR", Z_VERSION_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FORCE_GZIP", PHP_ZLIB_ENCODING_GZIP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("FORCE_DEFLATE", PHP_ZLIB_ENCODING_DEFLATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_ENCODING_RAW", PHP_ZLIB_ENCODING_RAW, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_ENCODING_GZIP", PHP_ZLIB_ENCODING_GZIP, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_ENCODING_DEFLATE", PHP_ZLIB_ENCODING_DEFLATE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_NO_FLUSH", Z_NO_FLUSH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_PARTIAL_FLUSH", Z_PARTIAL_FLUSH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_SYNC_FLUSH", Z_SYNC_FLUSH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_FULL_FLUSH", Z_FULL_FLUSH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_BLOCK", Z_BLOCK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_FINISH", Z_FINISH, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_FILTERED", Z_FILTERED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_HUFFMAN_ONLY", Z_HUFFMAN_ONLY, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_RLE", Z_RLE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_FIXED", Z_FIXED, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_DEFAULT_STRATEGY", Z_DEFAULT_STRATEGY, CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("ZLIB_VERSION", ZLIB_VERSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_VERNUM", ZLIB_VERNUM, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_OK", Z_OK, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_STREAM_END", Z_STREAM_END, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_NEED_DICT", Z_NEED_DICT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_ERRNO", Z_ERRNO, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_STREAM_ERROR", Z_STREAM_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_DATA_ERROR", Z_DATA_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_MEM_ERROR", Z_MEM_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_BUF_ERROR", Z_BUF_ERROR, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("ZLIB_VERSION_ERROR", Z_VERSION_ERROR, CONST_PERSISTENT); } static zend_class_entry *register_class_InflateContext(void) diff --git a/main/SAPI.c b/main/SAPI.c index 7fe8148b813a1..09b028e55166e 100644 --- a/main/SAPI.c +++ b/main/SAPI.c @@ -489,7 +489,7 @@ static void sapi_send_headers_free(void) } } -SAPI_API void sapi_deactivate(void) +SAPI_API void sapi_deactivate_module(void) { zend_llist_destroy(&SG(sapi_headers).headers); if (SG(request_info).request_body) { @@ -523,6 +523,10 @@ SAPI_API void sapi_deactivate(void) if (sapi_module.deactivate) { sapi_module.deactivate(); } +} + +SAPI_API void sapi_deactivate_destroy(void) +{ if (SG(rfc1867_uploaded_files)) { destroy_uploaded_files_hash(); } @@ -537,6 +541,12 @@ SAPI_API void sapi_deactivate(void) SG(global_request_time) = 0; } +SAPI_API void sapi_deactivate(void) +{ + sapi_deactivate_module(); + sapi_deactivate_destroy(); +} + SAPI_API void sapi_initialize_empty_request(void) { diff --git a/main/SAPI.h b/main/SAPI.h index 77ab84806fe97..098b7c8c94c30 100644 --- a/main/SAPI.h +++ b/main/SAPI.h @@ -143,6 +143,8 @@ extern SAPI_API sapi_globals_struct sapi_globals; SAPI_API void sapi_startup(sapi_module_struct *sf); SAPI_API void sapi_shutdown(void); SAPI_API void sapi_activate(void); +SAPI_API void sapi_deactivate_module(void); +SAPI_API void sapi_deactivate_destroy(void); SAPI_API void sapi_deactivate(void); SAPI_API void sapi_initialize_empty_request(void); SAPI_API void sapi_add_request_header(const char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg); diff --git a/main/main.c b/main/main.c index 30e05dc26a93c..4f7e3f2fbcfcf 100644 --- a/main/main.c +++ b/main/main.c @@ -1865,10 +1865,12 @@ void php_request_shutdown(void *dummy) zend_post_deactivate_modules(); } zend_end_try(); - /* 12. SAPI related shutdown (free stuff) */ + /* 12. SAPI related shutdown*/ zend_try { - sapi_deactivate(); + sapi_deactivate_module(); } zend_end_try(); + /* free SAPI stuff */ + sapi_deactivate_destroy(); /* 13. free virtual CWD memory */ virtual_cwd_deactivate(); diff --git a/main/php.h b/main/php.h index 27eb72389d2c7..6093d2a932951 100644 --- a/main/php.h +++ b/main/php.h @@ -22,7 +22,7 @@ #include #endif -#define PHP_API_VERSION 20210903 +#define PHP_API_VERSION 20220830 #define PHP_HAVE_STREAMS #define YYDEBUG 0 #define PHP_DEFAULT_CHARSET "UTF-8" diff --git a/main/php_version.h b/main/php_version.h index e7993749fd9e5..4d24349b3e7d6 100644 --- a/main/php_version.h +++ b/main/php_version.h @@ -1,8 +1,8 @@ /* automatically generated by configure */ /* edit configure.ac to change version number */ #define PHP_MAJOR_VERSION 8 -#define PHP_MINOR_VERSION 2 +#define PHP_MINOR_VERSION 3 #define PHP_RELEASE_VERSION 0 #define PHP_EXTRA_VERSION "-dev" -#define PHP_VERSION "8.2.0-dev" -#define PHP_VERSION_ID 80200 +#define PHP_VERSION "8.3.0-dev" +#define PHP_VERSION_ID 80300 diff --git a/main/reallocarray.c b/main/reallocarray.c index beee4bfa09705..95500ebdd8591 100644 --- a/main/reallocarray.c +++ b/main/reallocarray.c @@ -26,9 +26,7 @@ PHPAPI void* php_reallocarray(void *p, size_t nmb, size_t siz) #ifndef _WIN32 if (__builtin_mul_overflow(nmb, siz, &r)) { #else - - r = siz * nmb; - if (siz != 0 && r / siz != nmb) { + if (SizeTMult(nmb, siz, &r) != S_OK) { #endif // EOVERFLOW may have been, arguably, more appropriate // but this is what other implementations set diff --git a/main/streams/transports.c b/main/streams/transports.c index de6b968868ed9..35ac4ae27ade5 100644 --- a/main/streams/transports.c +++ b/main/streams/transports.c @@ -61,7 +61,8 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in php_stream_transport_factory factory = NULL; const char *p, *protocol = NULL; size_t n = 0; - int failed = 0; + bool failed = false; + bool bailout = false; zend_string *error_text = NULL; struct timeval default_timeout = { 0, 0 }; @@ -132,46 +133,50 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in context STREAMS_REL_CC); if (stream) { - php_stream_context_set(stream, context); + zend_try { + php_stream_context_set(stream, context); - if ((flags & STREAM_XPORT_SERVER) == 0) { - /* client */ + if ((flags & STREAM_XPORT_SERVER) == 0) { + /* client */ - if (flags & (STREAM_XPORT_CONNECT|STREAM_XPORT_CONNECT_ASYNC)) { - if (-1 == php_stream_xport_connect(stream, name, namelen, - flags & STREAM_XPORT_CONNECT_ASYNC ? 1 : 0, - timeout, &error_text, error_code)) { + if (flags & (STREAM_XPORT_CONNECT|STREAM_XPORT_CONNECT_ASYNC)) { + if (-1 == php_stream_xport_connect(stream, name, namelen, + flags & STREAM_XPORT_CONNECT_ASYNC ? 1 : 0, + timeout, &error_text, error_code)) { - ERR_RETURN(error_string, error_text, "connect() failed: %s"); + ERR_RETURN(error_string, error_text, "connect() failed: %s"); - failed = 1; - } - } - - } else { - /* server */ - if (flags & STREAM_XPORT_BIND) { - if (0 != php_stream_xport_bind(stream, name, namelen, &error_text)) { - ERR_RETURN(error_string, error_text, "bind() failed: %s"); - failed = 1; - } else if (flags & STREAM_XPORT_LISTEN) { - zval *zbacklog = NULL; - int backlog = 32; - - if (PHP_STREAM_CONTEXT(stream) && (zbacklog = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "backlog")) != NULL) { - backlog = zval_get_long(zbacklog); + failed = true; } + } - if (0 != php_stream_xport_listen(stream, backlog, &error_text)) { - ERR_RETURN(error_string, error_text, "listen() failed: %s"); - failed = 1; + } else { + /* server */ + if (flags & STREAM_XPORT_BIND) { + if (0 != php_stream_xport_bind(stream, name, namelen, &error_text)) { + ERR_RETURN(error_string, error_text, "bind() failed: %s"); + failed = true; + } else if (flags & STREAM_XPORT_LISTEN) { + zval *zbacklog = NULL; + int backlog = 32; + + if (PHP_STREAM_CONTEXT(stream) && (zbacklog = php_stream_context_get_option(PHP_STREAM_CONTEXT(stream), "socket", "backlog")) != NULL) { + backlog = zval_get_long(zbacklog); + } + + if (0 != php_stream_xport_listen(stream, backlog, &error_text)) { + ERR_RETURN(error_string, error_text, "listen() failed: %s"); + failed = true; + } } } } - } + } zend_catch { + bailout = true; + } zend_end_try(); } - if (failed) { + if (failed || bailout) { /* failure means that they don't get a stream to play with */ if (persistent_id) { php_stream_pclose(stream); @@ -179,6 +184,9 @@ PHPAPI php_stream *_php_stream_xport_create(const char *name, size_t namelen, in php_stream_close(stream); } stream = NULL; + if (bailout) { + zend_bailout(); + } } return stream; diff --git a/main/streams/xp_socket.c b/main/streams/xp_socket.c index 12567680ff2fa..be41d3dde786d 100644 --- a/main/streams/xp_socket.c +++ b/main/streams/xp_socket.c @@ -842,6 +842,10 @@ static inline int php_tcp_sockop_accept(php_stream *stream, php_netstream_data_t memcpy(clisockdata, sock, sizeof(*clisockdata)); clisockdata->socket = clisock; +#ifdef __linux__ + /* O_NONBLOCK is not inherited on Linux */ + clisockdata->is_blocked = 1; +#endif xparam->outputs.client = php_stream_alloc_rel(stream->ops, clisockdata, NULL, "r+"); if (xparam->outputs.client) { diff --git a/php.ini-development b/php.ini-development index 768b22a933d2e..4a62b5af60e10 100644 --- a/php.ini-development +++ b/php.ini-development @@ -9,8 +9,8 @@ ; PHP attempts to find and load this configuration from a number of locations. ; The following is a summary of its search order: ; 1. SAPI module specific location. -; 2. The PHPRC environment variable. (As of PHP 5.2.0) -; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) +; 2. The PHPRC environment variable. +; 3. A number of predefined registry keys on Windows ; 4. Current working directory (except CLI) ; 5. The web server's directory (for SAPI modules), or directory of PHP ; (otherwise in Windows) @@ -447,7 +447,7 @@ memory_limit = 128M ; development and early testing. ; ; Error Level Constants: -; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) +; E_ALL - All errors and warnings ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) @@ -908,8 +908,8 @@ default_socket_timeout = 60 ; ; Notes for Windows environments : ; -; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) -; extension folders as well as the separate PECL DLL download (PHP 5+). +; - Many DLL files are located in the ext/ +; extension folders as well as the separate PECL DLL download. ; Be sure to appropriately set the extension_dir directive. ; ;extension=bz2 @@ -949,6 +949,7 @@ default_socket_timeout = 60 ;extension=sqlite3 ;extension=tidy ;extension=xsl +;extension=zip ;zend_extension=opcache diff --git a/php.ini-production b/php.ini-production index 89a198db395a6..8a1eb9674e2f3 100644 --- a/php.ini-production +++ b/php.ini-production @@ -9,8 +9,8 @@ ; PHP attempts to find and load this configuration from a number of locations. ; The following is a summary of its search order: ; 1. SAPI module specific location. -; 2. The PHPRC environment variable. (As of PHP 5.2.0) -; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) +; 2. The PHPRC environment variable. +; 3. A number of predefined registry keys on Windows ; 4. Current working directory (except CLI) ; 5. The web server's directory (for SAPI modules), or directory of PHP ; (otherwise in Windows) @@ -449,7 +449,7 @@ memory_limit = 128M ; development and early testing. ; ; Error Level Constants: -; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) +; E_ALL - All errors and warnings ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) @@ -910,8 +910,8 @@ default_socket_timeout = 60 ; ; Notes for Windows environments : ; -; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) -; extension folders as well as the separate PECL DLL download (PHP 5+). +; - Many DLL files are located in the ext/ +; extension folders as well as the separate PECL DLL download. ; Be sure to appropriately set the extension_dir directive. ; ;extension=bz2 @@ -951,6 +951,7 @@ default_socket_timeout = 60 ;extension=sqlite3 ;extension=tidy ;extension=xsl +;extension=zip ;zend_extension=opcache diff --git a/run-tests.php b/run-tests.php index 7e9b61b1c8594..157a821ddfeec 100755 --- a/run-tests.php +++ b/run-tests.php @@ -127,6 +127,9 @@ function show_usage(): void --color --no-color Do/Don't colorize the result type in the test result. + --progress + --no-progress Do/Don't show the current progress. + --repeat [n] Run the tests multiple times in the same process and check the output of the last execution (CLI SAPI only). @@ -159,7 +162,7 @@ function main(): void $temp_source, $temp_target, $test_cnt, $test_dirs, $test_files, $test_idx, $test_list, $test_results, $testfile, $user_tests, $valgrind, $sum_results, $shuffle, $file_cache, $num_repeats, - $bless; + $bless, $show_progress; // Parallel testing global $workers, $workerID; global $context_line_count; @@ -360,6 +363,7 @@ function main(): void $workers = null; $context_line_count = 3; $num_repeats = 1; + $show_progress = true; $cfgtypes = ['show', 'keep']; $cfgfiles = ['skip', 'php', 'clean', 'out', 'diff', 'exp', 'mem']; @@ -600,6 +604,12 @@ function main(): void $repeat = true; } break; + case '--progress': + $show_progress = true; + break; + case '--no-progress': + $show_progress = false; + break; case '--version': echo '$Id$' . "\n"; exit(1); @@ -1331,7 +1341,7 @@ function run_all_tests(array $test_files, array $env, $redir_tested = null): voi */ function run_all_tests_parallel(array $test_files, array $env, $redir_tested): void { - global $workers, $test_idx, $test_cnt, $test_results, $failed_tests_file, $result_tests_file, $PHP_FAILED_TESTS, $shuffle, $SHOW_ONLY_GROUPS, $valgrind; + global $workers, $test_idx, $test_cnt, $test_results, $failed_tests_file, $result_tests_file, $PHP_FAILED_TESTS, $shuffle, $SHOW_ONLY_GROUPS, $valgrind, $show_progress; global $junit; @@ -1578,13 +1588,13 @@ function run_all_tests_parallel(array $test_files, array $env, $redir_tested): v } $test_idx++; - if (!$SHOW_ONLY_GROUPS) { + if ($show_progress) { clear_show_test(); } echo $resultText; - if (!$SHOW_ONLY_GROUPS) { + if ($show_progress) { show_test($test_idx, count($workerProcs) . "/$workers concurrent test workers running"); } @@ -1634,7 +1644,7 @@ function run_all_tests_parallel(array $test_files, array $env, $redir_tested): v } } - if (!$SHOW_ONLY_GROUPS) { + if ($show_progress) { clear_show_test(); } @@ -1780,6 +1790,7 @@ function run_test(string $php, $file, array $env): string global $num_repeats; // Parallel testing global $workerID; + global $show_progress; // Temporary /** @var JUnit */ @@ -1891,7 +1902,7 @@ function run_test(string $php, $file, array $env): string } } - if (!$SHOW_ONLY_GROUPS && !$workerID) { + if ($show_progress && !$workerID) { show_test($test_idx, $shortname); } @@ -3223,22 +3234,22 @@ function show_summary(): void function show_redirect_start(string $tests, string $tested, string $tested_file): void { - global $SHOW_ONLY_GROUPS; + global $SHOW_ONLY_GROUPS, $show_progress; if (!$SHOW_ONLY_GROUPS || in_array('REDIRECT', $SHOW_ONLY_GROUPS)) { echo "REDIRECT $tests ($tested [$tested_file]) begin\n"; - } else { + } elseif ($show_progress) { clear_show_test(); } } function show_redirect_ends(string $tests, string $tested, string $tested_file): void { - global $SHOW_ONLY_GROUPS; + global $SHOW_ONLY_GROUPS, $show_progress; if (!$SHOW_ONLY_GROUPS || in_array('REDIRECT', $SHOW_ONLY_GROUPS)) { echo "REDIRECT $tests ($tested [$tested_file]) done\n"; - } else { + } elseif ($show_progress) { clear_show_test(); } } @@ -3280,7 +3291,7 @@ function show_result( string $extra = '', ?array $temp_filenames = null ): void { - global $SHOW_ONLY_GROUPS, $colorize; + global $SHOW_ONLY_GROUPS, $colorize, $show_progress; if (!$SHOW_ONLY_GROUPS || in_array($result, $SHOW_ONLY_GROUPS)) { if ($colorize) { @@ -3302,10 +3313,9 @@ function show_result( } else { echo "$result $tested [$tested_file] $extra\n"; } - } elseif (!$SHOW_ONLY_GROUPS) { + } elseif ($show_progress) { clear_show_test(); } - } class BorkageException extends Exception diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index 9e063597e6bbe..b45468031fcd0 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -2271,6 +2271,7 @@ consult the installation file that came with this distribution, or visit \n\ case 'a': /* interactive mode */ printf("Interactive mode enabled\n\n"); + fflush(stdout); break; case 'C': /* don't chdir to the script directory */ diff --git a/sapi/cgi/tests/005-win32.phpt b/sapi/cgi/tests/005-win32.phpt deleted file mode 100644 index cafec91d3dbbd..0000000000000 --- a/sapi/cgi/tests/005-win32.phpt +++ /dev/null @@ -1,34 +0,0 @@ ---TEST-- -using invalid combinations of cmdline options ---SKIPIF-- - ---FILE-- - ---EXPECT-- -string(51) "Interactive mode enabled - -No input file specified. -" -string(51) "Interactive mode enabled - -No input file specified. -" -Done diff --git a/sapi/cgi/tests/005.phpt b/sapi/cgi/tests/005.phpt index a46ac912c7063..55247588b3b84 100644 --- a/sapi/cgi/tests/005.phpt +++ b/sapi/cgi/tests/005.phpt @@ -1,14 +1,5 @@ --TEST-- using invalid combinations of cmdline options ---SKIPIF-- - --FILE-- --EXPECT-- -string(51) "No input file specified. -Interactive mode enabled +string(51) "Interactive mode enabled +No input file specified. " -string(51) "No input file specified. -Interactive mode enabled +string(51) "Interactive mode enabled +No input file specified. " Done diff --git a/sapi/cli/php_cli_server.c b/sapi/cli/php_cli_server.c index 7c69fdef1749e..66e31323947c4 100644 --- a/sapi/cli/php_cli_server.c +++ b/sapi/cli/php_cli_server.c @@ -202,6 +202,7 @@ typedef struct php_cli_server_http_response_status_code_pair { static php_cli_server_http_response_status_code_pair template_map[] = { { 400, "

%s

Your browser sent a request that this server could not understand.

" }, { 404, "

%s

The requested resource %s was not found on this server.

" }, + { 405, "

%s

Requested method not allowed.

" }, { 500, "

%s

The server is temporarily unavailable.

" }, { 501, "

%s

Request method not supported.

" } }; @@ -1980,49 +1981,51 @@ static zend_result php_cli_server_send_error_page(php_cli_server *server, php_cl php_cli_server_content_sender_ctor(&client->content_sender); client->content_sender_initialized = true; - escaped_request_uri = php_escape_html_entities_ex((const unsigned char *) ZSTR_VAL(client->request.request_uri), ZSTR_LEN(client->request.request_uri), 0, ENT_QUOTES, NULL, /* double_encode */ 0, /* quiet */ 0); + if (client->request.request_method != PHP_HTTP_HEAD) { + escaped_request_uri = php_escape_html_entities_ex((const unsigned char *) ZSTR_VAL(client->request.request_uri), ZSTR_LEN(client->request.request_uri), 0, ENT_QUOTES, NULL, /* double_encode */ 0, /* quiet */ 0); - { - static const char prologue_template[] = "%d %s"; - php_cli_server_chunk *chunk = php_cli_server_chunk_heap_new_self_contained(strlen(prologue_template) + 3 + strlen(status_string) + 1); - if (!chunk) { - goto fail; + { + static const char prologue_template[] = "%d %s"; + php_cli_server_chunk *chunk = php_cli_server_chunk_heap_new_self_contained(strlen(prologue_template) + 3 + strlen(status_string) + 1); + if (!chunk) { + goto fail; + } + snprintf(chunk->data.heap.p, chunk->data.heap.len, prologue_template, status, status_string); + chunk->data.heap.len = strlen(chunk->data.heap.p); + php_cli_server_buffer_append(&client->content_sender.buffer, chunk); } - snprintf(chunk->data.heap.p, chunk->data.heap.len, prologue_template, status, status_string); - chunk->data.heap.len = strlen(chunk->data.heap.p); - php_cli_server_buffer_append(&client->content_sender.buffer, chunk); - } - { - php_cli_server_chunk *chunk = php_cli_server_chunk_immortal_new(php_cli_server_css, sizeof(php_cli_server_css) - 1); - if (!chunk) { - goto fail; + { + php_cli_server_chunk *chunk = php_cli_server_chunk_immortal_new(php_cli_server_css, sizeof(php_cli_server_css) - 1); + if (!chunk) { + goto fail; + } + php_cli_server_buffer_append(&client->content_sender.buffer, chunk); } - php_cli_server_buffer_append(&client->content_sender.buffer, chunk); - } - { - static const char template[] = ""; - php_cli_server_chunk *chunk = php_cli_server_chunk_immortal_new(template, sizeof(template) - 1); - if (!chunk) { - goto fail; + { + static const char template[] = ""; + php_cli_server_chunk *chunk = php_cli_server_chunk_immortal_new(template, sizeof(template) - 1); + if (!chunk) { + goto fail; + } + php_cli_server_buffer_append(&client->content_sender.buffer, chunk); } - php_cli_server_buffer_append(&client->content_sender.buffer, chunk); - } - { - php_cli_server_chunk *chunk = php_cli_server_chunk_heap_new_self_contained(strlen(content_template) + ZSTR_LEN(escaped_request_uri) + 3 + strlen(status_string) + 1); - if (!chunk) { - goto fail; + { + php_cli_server_chunk *chunk = php_cli_server_chunk_heap_new_self_contained(strlen(content_template) + ZSTR_LEN(escaped_request_uri) + 3 + strlen(status_string) + 1); + if (!chunk) { + goto fail; + } + snprintf(chunk->data.heap.p, chunk->data.heap.len, content_template, status_string, ZSTR_VAL(escaped_request_uri)); + chunk->data.heap.len = strlen(chunk->data.heap.p); + php_cli_server_buffer_append(&client->content_sender.buffer, chunk); } - snprintf(chunk->data.heap.p, chunk->data.heap.len, content_template, status_string, ZSTR_VAL(escaped_request_uri)); - chunk->data.heap.len = strlen(chunk->data.heap.p); - php_cli_server_buffer_append(&client->content_sender.buffer, chunk); - } - { - static const char epilogue_template[] = ""; - php_cli_server_chunk *chunk = php_cli_server_chunk_immortal_new(epilogue_template, sizeof(epilogue_template) - 1); - if (!chunk) { - goto fail; + { + static const char epilogue_template[] = ""; + php_cli_server_chunk *chunk = php_cli_server_chunk_immortal_new(epilogue_template, sizeof(epilogue_template) - 1); + if (!chunk) { + goto fail; + } + php_cli_server_buffer_append(&client->content_sender.buffer, chunk); } - php_cli_server_buffer_append(&client->content_sender.buffer, chunk); } { @@ -2038,6 +2041,15 @@ static zend_result php_cli_server_send_error_page(php_cli_server *server, php_cl smart_str_appends_ex(&buffer, "Content-Length: ", 1); smart_str_append_unsigned_ex(&buffer, php_cli_server_buffer_size(&client->content_sender.buffer), 1); smart_str_appendl_ex(&buffer, "\r\n", 2, 1); + if (status == 405) { + smart_str_appends_ex(&buffer, "Allow: ", 1); + smart_str_appends_ex(&buffer, php_http_method_str(PHP_HTTP_GET), 1); + smart_str_appends_ex(&buffer, ", ", 1); + smart_str_appends_ex(&buffer, php_http_method_str(PHP_HTTP_HEAD), 1); + smart_str_appends_ex(&buffer, ", ", 1); + smart_str_appends_ex(&buffer, php_http_method_str(PHP_HTTP_POST), 1); + smart_str_appendl_ex(&buffer, "\r\n", 2, 1); + } smart_str_appendl_ex(&buffer, "\r\n", 2, 1); chunk = php_cli_server_chunk_heap_new(buffer.s, ZSTR_VAL(buffer.s), ZSTR_LEN(buffer.s)); @@ -2053,14 +2065,18 @@ static zend_result php_cli_server_send_error_page(php_cli_server *server, php_cl if (errstr) { pefree(errstr, 1); } - zend_string_free(escaped_request_uri); + if (escaped_request_uri) { + zend_string_free(escaped_request_uri); + } return SUCCESS; fail: if (errstr) { pefree(errstr, 1); } - zend_string_free(escaped_request_uri); + if (escaped_request_uri) { + zend_string_free(escaped_request_uri); + } return FAILURE; } /* }}} */ @@ -2088,6 +2104,12 @@ static zend_result php_cli_server_begin_send_static(php_cli_server *server, php_ int fd; int status = 200; + if (client->request.request_method == PHP_HTTP_DELETE + || client->request.request_method == PHP_HTTP_PUT + || client->request.request_method == PHP_HTTP_PATCH) { + return php_cli_server_send_error_page(server, client, 405); + } + if (client->request.path_translated && strlen(client->request.path_translated) != client->request.path_translated_len) { /* can't handle paths that contain nul bytes */ return php_cli_server_send_error_page(server, client, 400); @@ -2115,7 +2137,9 @@ static zend_result php_cli_server_begin_send_static(php_cli_server *server, php_ php_cli_server_content_sender_ctor(&client->content_sender); client->content_sender_initialized = true; - client->file_fd = fd; + if (client->request.request_method != PHP_HTTP_HEAD) { + client->file_fd = fd; + } { php_cli_server_chunk *chunk; @@ -2490,10 +2514,6 @@ static zend_result php_cli_server_ctor(php_cli_server *server, const char *addr, { size_t document_root_len = strlen(document_root); _document_root = pestrndup(document_root, document_root_len, 1); - if (!_document_root) { - retval = FAILURE; - goto out; - } server->document_root = _document_root; server->document_root_len = document_root_len; } @@ -2501,10 +2521,6 @@ static zend_result php_cli_server_ctor(php_cli_server *server, const char *addr, if (router) { size_t router_len = strlen(router); _router = pestrndup(router, router_len, 1); - if (!_router) { - retval = FAILURE; - goto out; - } server->router = _router; server->router_len = router_len; } else { diff --git a/sapi/cli/tests/017.phpt b/sapi/cli/tests/017.phpt index 8338f26e5de25..d2d37b18589a0 100644 --- a/sapi/cli/tests/017.phpt +++ b/sapi/cli/tests/017.phpt @@ -8,13 +8,12 @@ include "skipif.inc"; if (readline_info('done') !== NULL) { die ("skip need readline support using libedit"); } -if(substr(PHP_OS, 0, 3) == 'WIN' ) { - die('skip not for Windows'); -} ?> --FILE-- $code) { echo "\n--------------\nSnippet no. $key:\n--------------\n"; - $code = escapeshellarg($code); - echo `echo $code | "$php" -a`, "\n"; + $proc = proc_open("$php $ini -a", $descriptorspec, $pipes); + fwrite($pipes[0], $code); + fclose($pipes[0]); + proc_close($proc); } echo "\nDone\n"; @@ -69,7 +70,6 @@ Interactive shell Hello world - -------------- Snippet no. 2: -------------- @@ -79,7 +79,6 @@ multine single quote - -------------- Snippet no. 3: -------------- @@ -90,7 +89,6 @@ comes the doc - -------------- Snippet no. 4: -------------- @@ -98,7 +96,6 @@ Interactive shell Done - -------------- Snippet no. 5: -------------- @@ -107,5 +104,4 @@ Interactive shell Parse error: Unmatched ')' in php shell code on line 1 - Done diff --git a/sapi/cli/tests/php_cli_server_013.phpt b/sapi/cli/tests/php_cli_server_013.phpt index 8042219afe316..11e3fdf065b1f 100644 --- a/sapi/cli/tests/php_cli_server_013.phpt +++ b/sapi/cli/tests/php_cli_server_013.phpt @@ -58,6 +58,60 @@ HEAD /main/foo/bar HTTP/1.1 Host: {$host} +HEADER +)) { + while (!feof($fp)) { + $output .= fgets($fp); + } +} + +echo preg_replace("/", $output), "\n"; +fclose($fp); + +$output = ''; +$fp = php_cli_server_connect(); + +if(fwrite($fp, <<
(.*?)<\/style>/s", "", $output), "\n"; +fclose($fp); + +$output = ''; +$fp = php_cli_server_connect(); + +if(fwrite($fp, <<
(.*?)<\/style>/s", "", $output), "\n"; +fclose($fp); + +$output = ''; +$fp = php_cli_server_connect(); + +if(fwrite($fp, <<
404 Not Found -

Not Found

The requested resource /main/foo/bar was not found on this server.

+ +HTTP/1.1 405 Method Not Allowed +Host: %s +Date: %s +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: %d +Allow: GET, HEAD, POST + +405 Method Not Allowed +

Method Not Allowed

Requested method not allowed.

+HTTP/1.1 405 Method Not Allowed +Host: %s +Date: %s +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: %d +Allow: GET, HEAD, POST + +405 Method Not Allowed +

Method Not Allowed

Requested method not allowed.

+HTTP/1.1 405 Method Not Allowed +Host: %s +Date: %s +Connection: close +Content-Type: text/html; charset=UTF-8 +Content-Length: %d +Allow: GET, HEAD, POST + +405 Method Not Allowed +

Method Not Allowed

Requested method not allowed.

diff --git a/sapi/fpm/fpm/events/devpoll.c b/sapi/fpm/fpm/events/devpoll.c index 21d9811c3a1a5..c7287b14f705e 100644 --- a/sapi/fpm/fpm/events/devpoll.c +++ b/sapi/fpm/fpm/events/devpoll.c @@ -29,7 +29,7 @@ #include static int fpm_event_devpoll_init(int max); -static int fpm_event_devpoll_clean(); +static int fpm_event_devpoll_clean(void); static int fpm_event_devpoll_wait(struct fpm_event_queue_s *queue, unsigned long int timeout); static int fpm_event_devpoll_add(struct fpm_event_s *ev); static int fpm_event_devpoll_remove(struct fpm_event_s *ev); @@ -51,7 +51,7 @@ static int npollfds = 0; #endif /* HAVE_DEVPOLL */ -struct fpm_event_module_s *fpm_event_devpoll_module(void) /* {{{ */ +struct fpm_event_module_s *fpm_event_devpoll_module(void) { #ifdef HAVE_DEVPOLL return &devpoll_module; @@ -59,7 +59,6 @@ struct fpm_event_module_s *fpm_event_devpoll_module(void) /* {{{ */ return NULL; #endif /* HAVE_DEVPOLL */ } -/* }}} */ #ifdef HAVE_DEVPOLL @@ -113,7 +112,7 @@ static int fpm_event_devpoll_init(int max) /* {{{ */ /* * Clean the module */ -static int fpm_event_devpoll_clean() /* {{{ */ +static int fpm_event_devpoll_clean(void) { /* close /dev/poll if open */ if (dpfd > -1) { @@ -136,7 +135,6 @@ static int fpm_event_devpoll_clean() /* {{{ */ npollfds = 0; return 0; } -/* }}} */ /* * wait for events or timeout diff --git a/sapi/fpm/fpm/events/epoll.c b/sapi/fpm/fpm/events/epoll.c index 4b2d437b8807b..0a6eadb6aebe8 100644 --- a/sapi/fpm/fpm/events/epoll.c +++ b/sapi/fpm/fpm/events/epoll.c @@ -46,7 +46,7 @@ static int epollfd = -1; #endif /* HAVE_EPOLL */ -struct fpm_event_module_s *fpm_event_epoll_module(void) /* {{{ */ +struct fpm_event_module_s *fpm_event_epoll_module(void) { #ifdef HAVE_EPOLL return &epoll_module; @@ -54,7 +54,6 @@ struct fpm_event_module_s *fpm_event_epoll_module(void) /* {{{ */ return NULL; #endif /* HAVE_EPOLL */ } -/* }}} */ #ifdef HAVE_EPOLL @@ -92,7 +91,7 @@ static int fpm_event_epoll_init(int max) /* {{{ */ /* * Clean the module */ -static int fpm_event_epoll_clean() /* {{{ */ +static int fpm_event_epoll_clean(void) { /* free epollfds */ if (epollfds) { @@ -108,7 +107,6 @@ static int fpm_event_epoll_clean() /* {{{ */ return 0; } -/* }}} */ /* * wait for events or timeout diff --git a/sapi/fpm/fpm/events/poll.c b/sapi/fpm/fpm/events/poll.c index cceecbde5edc5..30ebbc785d943 100644 --- a/sapi/fpm/fpm/events/poll.c +++ b/sapi/fpm/fpm/events/poll.c @@ -50,7 +50,7 @@ static int next_free_slot = 0; /* * return the module configuration */ -struct fpm_event_module_s *fpm_event_poll_module(void) /* {{{ */ +struct fpm_event_module_s *fpm_event_poll_module(void) { #ifdef HAVE_POLL return &poll_module; @@ -58,14 +58,13 @@ struct fpm_event_module_s *fpm_event_poll_module(void) /* {{{ */ return NULL; #endif /* HAVE_POLL */ } -/* }}} */ #ifdef HAVE_POLL /* * Init the module */ -static int fpm_event_poll_init(int max) /* {{{ */ +static int fpm_event_poll_init(int max) { int i; @@ -99,12 +98,11 @@ static int fpm_event_poll_init(int max) /* {{{ */ npollfds = max; return 0; } -/* }}} */ /* * Clean the module */ -static int fpm_event_poll_clean() /* {{{ */ +static int fpm_event_poll_clean(void) { /* free pollfds */ if (pollfds) { @@ -121,7 +119,6 @@ static int fpm_event_poll_clean() /* {{{ */ npollfds = 0; return 0; } -/* }}} */ /* * wait for events or timeout diff --git a/sapi/fpm/fpm/events/port.c b/sapi/fpm/fpm/events/port.c index 4ee98807b6daf..0df106250a977 100644 --- a/sapi/fpm/fpm/events/port.c +++ b/sapi/fpm/fpm/events/port.c @@ -26,7 +26,7 @@ #include static int fpm_event_port_init(int max); -static int fpm_event_port_clean(); +static int fpm_event_port_clean(void); static int fpm_event_port_wait(struct fpm_event_queue_s *queue, unsigned long int timeout); static int fpm_event_port_add(struct fpm_event_s *ev); static int fpm_event_port_remove(struct fpm_event_s *ev); @@ -90,7 +90,7 @@ static int fpm_event_port_init(int max) /* {{{ */ /* * Clean the module */ -static int fpm_event_port_clean() /* {{{ */ +static int fpm_event_port_clean(void) { if (pfd > -1) { close(pfd); @@ -105,7 +105,6 @@ static int fpm_event_port_clean() /* {{{ */ nevents = 0; return 0; } -/* }}} */ /* * wait for events or timeout diff --git a/sapi/fpm/fpm/events/select.c b/sapi/fpm/fpm/events/select.c index e8dfafdb642a3..66e8107f07c63 100644 --- a/sapi/fpm/fpm/events/select.c +++ b/sapi/fpm/fpm/events/select.c @@ -53,7 +53,7 @@ static fd_set fds; /* * return the module configuration */ -struct fpm_event_module_s *fpm_event_select_module(void) /* {{{ */ +struct fpm_event_module_s *fpm_event_select_module(void) { #ifdef HAVE_SELECT return &select_module; @@ -61,7 +61,6 @@ struct fpm_event_module_s *fpm_event_select_module(void) /* {{{ */ return NULL; #endif /* HAVE_SELECT */ } -/* }}} */ #ifdef HAVE_SELECT diff --git a/sapi/fpm/fpm/fpm_children.c b/sapi/fpm/fpm/fpm_children.c index bcb5b4cef7a70..741fc27631516 100644 --- a/sapi/fpm/fpm/fpm_children.c +++ b/sapi/fpm/fpm/fpm_children.c @@ -38,7 +38,7 @@ static void fpm_children_cleanup(int which, void *arg) /* {{{ */ } /* }}} */ -static struct fpm_child_s *fpm_child_alloc(void) /* {{{ */ +static struct fpm_child_s *fpm_child_alloc(void) { struct fpm_child_s *ret; @@ -52,7 +52,6 @@ static struct fpm_child_s *fpm_child_alloc(void) /* {{{ */ ret->scoreboard_i = -1; return ret; } -/* }}} */ static void fpm_child_free(struct fpm_child_s *child) /* {{{ */ { @@ -177,7 +176,7 @@ int fpm_children_free(struct fpm_child_s *child) /* {{{ */ } /* }}} */ -void fpm_children_bury() /* {{{ */ +void fpm_children_bury(void) { int status; pid_t pid; @@ -303,7 +302,6 @@ void fpm_children_bury() /* {{{ */ } } } -/* }}} */ static struct fpm_child_s *fpm_resources_prepare(struct fpm_worker_pool_s *wp) /* {{{ */ { @@ -472,7 +470,7 @@ int fpm_children_create_initial(struct fpm_worker_pool_s *wp) /* {{{ */ } /* }}} */ -int fpm_children_init_main() /* {{{ */ +int fpm_children_init_main(void) { if (fpm_global_config.emergency_restart_threshold && fpm_global_config.emergency_restart_interval) { @@ -492,4 +490,3 @@ int fpm_children_init_main() /* {{{ */ return 0; } -/* }}} */ diff --git a/sapi/fpm/fpm/fpm_clock.c b/sapi/fpm/fpm/fpm_clock.c index 72de43e327506..57faccbe9d80d 100644 --- a/sapi/fpm/fpm/fpm_clock.c +++ b/sapi/fpm/fpm/fpm_clock.c @@ -15,7 +15,7 @@ static int monotonic_works; -int fpm_clock_init() /* {{{ */ +int fpm_clock_init(void) { struct timespec ts; @@ -27,7 +27,6 @@ int fpm_clock_init() /* {{{ */ return 0; } -/* }}} */ int fpm_clock_get(struct timeval *tv) /* {{{ */ { @@ -59,7 +58,7 @@ static clock_serv_t mach_clock; /* this code borrowed from here: http://lists.apple.com/archives/Darwin-development/2002/Mar/msg00746.html */ /* mach_clock also should be re-initialized in child process after fork */ -int fpm_clock_init() /* {{{ */ +int fpm_clock_init(void) { kern_return_t ret; mach_timespec_t aTime; @@ -81,7 +80,6 @@ int fpm_clock_init() /* {{{ */ return 0; } -/* }}} */ int fpm_clock_get(struct timeval *tv) /* {{{ */ { @@ -104,11 +102,10 @@ int fpm_clock_get(struct timeval *tv) /* {{{ */ #else /* no clock */ -int fpm_clock_init() /* {{{ */ +int fpm_clock_init(void) { return 0; } -/* }}} */ int fpm_clock_get(struct timeval *tv) /* {{{ */ { diff --git a/sapi/fpm/fpm/fpm_conf.c b/sapi/fpm/fpm/fpm_conf.c index 9eefb95d0c6e7..6888a304b1bc2 100644 --- a/sapi/fpm/fpm/fpm_conf.c +++ b/sapi/fpm/fpm/fpm_conf.c @@ -598,7 +598,7 @@ static char *fpm_conf_set_array(zval *key, zval *value, void **config, int conve } /* }}} */ -static void *fpm_worker_pool_config_alloc(void) /* {{{ */ +static void *fpm_worker_pool_config_alloc(void) { struct fpm_worker_pool_s *wp; @@ -643,7 +643,6 @@ static void *fpm_worker_pool_config_alloc(void) /* {{{ */ current_wp = wp; return wp->config; } -/* }}} */ int fpm_worker_pool_config_free(struct fpm_worker_pool_config_s *wpc) /* {{{ */ { @@ -808,7 +807,7 @@ static int fpm_evaluate_full_path(char **path, struct fpm_worker_pool_s *wp, cha } /* }}} */ -static int fpm_conf_process_all_pools(void) /* {{{ */ +static int fpm_conf_process_all_pools(void) { struct fpm_worker_pool_s *wp, *wp2; @@ -1207,9 +1206,8 @@ static int fpm_conf_process_all_pools(void) /* {{{ */ } return 0; } -/* }}} */ -int fpm_conf_unlink_pid() /* {{{ */ +int fpm_conf_unlink_pid(void) { if (fpm_global_config.pid_file) { if (0 > unlink(fpm_global_config.pid_file)) { @@ -1219,9 +1217,8 @@ int fpm_conf_unlink_pid() /* {{{ */ } return 0; } -/* }}} */ -int fpm_conf_write_pid() /* {{{ */ +int fpm_conf_write_pid(void) { int fd; @@ -1248,7 +1245,6 @@ int fpm_conf_write_pid() /* {{{ */ } return 0; } -/* }}} */ static int fpm_conf_post_process(int force_daemon) /* {{{ */ { @@ -1307,6 +1303,10 @@ static int fpm_conf_post_process(int force_daemon) /* {{{ */ fpm_evaluate_full_path(&fpm_global_config.error_log, NULL, PHP_LOCALSTATEDIR, 0); } + if (0 > fpm_stdio_save_original_stderr()) { + return -1; + } + if (0 > fpm_stdio_open_error_log(0)) { return -1; } @@ -1692,7 +1692,7 @@ int fpm_conf_load_ini_file(char *filename) /* {{{ */ } /* }}} */ -static void fpm_conf_dump(void) /* {{{ */ +static void fpm_conf_dump(void) { struct fpm_worker_pool_s *wp; @@ -1802,7 +1802,6 @@ static void fpm_conf_dump(void) /* {{{ */ zlog(ZLOG_NOTICE, " "); } } -/* }}} */ int fpm_conf_init_main(int test_conf, int force_daemon) /* {{{ */ { diff --git a/sapi/fpm/fpm/fpm_env.c b/sapi/fpm/fpm/fpm_env.c index 7e70e52fd2637..72ed1aa94d383 100644 --- a/sapi/fpm/fpm/fpm_env.c +++ b/sapi/fpm/fpm/fpm_env.c @@ -60,7 +60,7 @@ int setenv(char *name, char *value, int overwrite) /* {{{ */ #endif #ifndef HAVE_CLEARENV -void clearenv() /* {{{ */ +void clearenv(void) { char **envp; char *s; @@ -79,7 +79,6 @@ void clearenv() /* {{{ */ } } -/* }}} */ #endif #ifndef HAVE_UNSETENV @@ -195,7 +194,7 @@ static int fpm_env_conf_wp(struct fpm_worker_pool_s *wp) /* {{{ */ } /* }}} */ -int fpm_env_init_main() /* {{{ */ +int fpm_env_init_main(void) { struct fpm_worker_pool_s *wp; char *title; @@ -273,4 +272,3 @@ int fpm_env_init_main() /* {{{ */ efree(title); return 0; } -/* }}} */ diff --git a/sapi/fpm/fpm/fpm_events.c b/sapi/fpm/fpm/fpm_events.c index dfbd5bd58c495..4cc56067bfc6c 100644 --- a/sapi/fpm/fpm/fpm_events.c +++ b/sapi/fpm/fpm/fpm_events.c @@ -104,6 +104,11 @@ static void fpm_got_signal(struct fpm_event_s *ev, short which, void *arg) /* {{ break; case '1' : /* SIGUSR1 */ zlog(ZLOG_DEBUG, "received SIGUSR1"); + + /* fpm_stdio_init_final tied STDERR fd with error_log fd. This affects logging to the + * access.log if it was configured to write to the stderr. Check #8885. */ + fpm_stdio_restore_original_stderr(0); + if (0 == fpm_stdio_open_error_log(1)) { zlog(ZLOG_NOTICE, "error log file re-opened"); } else { @@ -118,6 +123,9 @@ static void fpm_got_signal(struct fpm_event_s *ev, short which, void *arg) /* {{ } /* else no access log are set */ + /* We need to tie stderr with error_log in the master process after log files reload. Check #8885. */ + fpm_stdio_redirect_stderr_to_error_log(); + break; case '2' : /* SIGUSR2 */ zlog(ZLOG_DEBUG, "received SIGUSR2"); @@ -304,19 +312,17 @@ int fpm_event_pre_init(char *mechanism) /* {{{ */ } /* }}} */ -const char *fpm_event_mechanism_name() /* {{{ */ +const char *fpm_event_mechanism_name(void) { return module ? module->name : NULL; } -/* }}} */ -int fpm_event_support_edge_trigger() /* {{{ */ +int fpm_event_support_edge_trigger(void) { return module ? module->support_edge_trigger : 0; } -/* }}} */ -int fpm_event_init_main() /* {{{ */ +int fpm_event_init_main(void) { struct fpm_worker_pool_s *wp; int max; @@ -352,7 +358,6 @@ int fpm_event_init_main() /* {{{ */ } return 0; } -/* }}} */ void fpm_event_loop(int err) /* {{{ */ { diff --git a/sapi/fpm/fpm/fpm_events.h b/sapi/fpm/fpm/fpm_events.h index 8097477c827f3..5cc2b942ed25b 100644 --- a/sapi/fpm/fpm/fpm_events.h +++ b/sapi/fpm/fpm/fpm_events.h @@ -43,7 +43,7 @@ int fpm_event_init_main(void); int fpm_event_set(struct fpm_event_s *ev, int fd, int flags, void (*callback)(struct fpm_event_s *, short, void *), void *arg); int fpm_event_add(struct fpm_event_s *ev, unsigned long int timeout); int fpm_event_del(struct fpm_event_s *ev); -int fpm_event_pre_init(char *mechanism); +int fpm_event_pre_init(char *machanism); const char *fpm_event_mechanism_name(void); int fpm_event_support_edge_trigger(void); diff --git a/sapi/fpm/fpm/fpm_php.c b/sapi/fpm/fpm/fpm_php.c index 96648f44372db..92b189668206e 100644 --- a/sapi/fpm/fpm/fpm_php.c +++ b/sapi/fpm/fpm/fpm_php.c @@ -155,41 +155,35 @@ static int fpm_php_set_fcgi_mgmt_vars(struct fpm_worker_pool_s *wp) /* {{{ */ /* }}} */ #endif -char *fpm_php_script_filename(void) /* {{{ */ +char *fpm_php_script_filename(void) { return SG(request_info).path_translated; } -/* }}} */ -char *fpm_php_request_uri(void) /* {{{ */ +char *fpm_php_request_uri(void) { return (char *) SG(request_info).request_uri; } -/* }}} */ -char *fpm_php_request_method(void) /* {{{ */ +char *fpm_php_request_method(void) { return (char *) SG(request_info).request_method; } -/* }}} */ -char *fpm_php_query_string(void) /* {{{ */ +char *fpm_php_query_string(void) { return SG(request_info).query_string; } -/* }}} */ -char *fpm_php_auth_user(void) /* {{{ */ +char *fpm_php_auth_user(void) { return SG(request_info).auth_user; } -/* }}} */ -size_t fpm_php_content_length(void) /* {{{ */ +size_t fpm_php_content_length(void) { return SG(request_info).content_length; } -/* }}} */ static void fpm_php_cleanup(int which, void *arg) /* {{{ */ { @@ -201,20 +195,18 @@ static void fpm_php_cleanup(int which, void *arg) /* {{{ */ } /* }}} */ -void fpm_php_soft_quit() /* {{{ */ +void fpm_php_soft_quit(void) { fcgi_terminate(); } -/* }}} */ -int fpm_php_init_main() /* {{{ */ +int fpm_php_init_main(void) { if (0 > fpm_cleanup_add(FPM_CLEANUP_PARENT, fpm_php_cleanup, 0)) { return -1; } return 0; } -/* }}} */ int fpm_php_init_child(struct fpm_worker_pool_s *wp) /* {{{ */ { diff --git a/sapi/fpm/fpm/fpm_process_ctl.c b/sapi/fpm/fpm/fpm_process_ctl.c index 97b96e5e3ea76..48eb0003d4918 100644 --- a/sapi/fpm/fpm/fpm_process_ctl.c +++ b/sapi/fpm/fpm/fpm_process_ctl.c @@ -18,6 +18,7 @@ #include "fpm_worker_pool.h" #include "fpm_scoreboard.h" #include "fpm_sockets.h" +#include "fpm_stdio.h" #include "zlog.h" @@ -63,7 +64,7 @@ static int fpm_pctl_timeout_set(int sec) /* {{{ */ } /* }}} */ -static void fpm_pctl_exit(void) /* {{{ */ +static void fpm_pctl_exit(void) { zlog(ZLOG_NOTICE, "exiting, bye-bye!"); @@ -71,11 +72,10 @@ static void fpm_pctl_exit(void) /* {{{ */ fpm_cleanups_run(FPM_CLEANUP_PARENT_EXIT_MAIN); exit(FPM_EXIT_OK); } -/* }}} */ #define optional_arg(c) (saved_argc > c ? ", \"" : ""), (saved_argc > c ? saved_argv[c] : ""), (saved_argc > c ? "\"" : "") -static void fpm_pctl_exec(void) /* {{{ */ +static void fpm_pctl_exec(void) { zlog(ZLOG_DEBUG, "Blocking some signals before reexec"); if (0 > fpm_signals_block()) { @@ -100,13 +100,15 @@ static void fpm_pctl_exec(void) /* {{{ */ ); fpm_cleanups_run(FPM_CLEANUP_PARENT_EXEC); + + fpm_stdio_restore_original_stderr(1); + execvp(saved_argv[0], saved_argv); zlog(ZLOG_SYSERROR, "failed to reload: execvp() failed"); exit(FPM_EXIT_SOFTWARE); } -/* }}} */ -static void fpm_pctl_action_last(void) /* {{{ */ +static void fpm_pctl_action_last(void) { switch (fpm_state) { case FPM_PCTL_STATE_RELOADING: @@ -119,7 +121,6 @@ static void fpm_pctl_action_last(void) /* {{{ */ break; } } -/* }}} */ int fpm_pctl_kill(pid_t pid, int how) /* {{{ */ { @@ -175,7 +176,7 @@ void fpm_pctl_kill_all(int signo) /* {{{ */ } /* }}} */ -static void fpm_pctl_action_next(void) /* {{{ */ +static void fpm_pctl_action_next(void) { int sig, timeout; @@ -203,7 +204,6 @@ static void fpm_pctl_action_next(void) /* {{{ */ fpm_signal_sent = sig; fpm_pctl_timeout_set(timeout); } -/* }}} */ void fpm_pctl(int new_state, int action) /* {{{ */ { @@ -250,13 +250,12 @@ void fpm_pctl(int new_state, int action) /* {{{ */ } /* }}} */ -int fpm_pctl_can_spawn_children() /* {{{ */ +int fpm_pctl_can_spawn_children(void) { return fpm_state == FPM_PCTL_STATE_NORMAL; } -/* }}} */ -int fpm_pctl_child_exited() /* {{{ */ +int fpm_pctl_child_exited(void) { if (fpm_state == FPM_PCTL_STATE_NORMAL) { return 0; @@ -267,9 +266,8 @@ int fpm_pctl_child_exited() /* {{{ */ } return 0; } -/* }}} */ -int fpm_pctl_init_main() /* {{{ */ +int fpm_pctl_init_main(void) { int i; @@ -295,7 +293,6 @@ int fpm_pctl_init_main() /* {{{ */ } return 0; } -/* }}} */ static void fpm_pctl_check_request_timeout(struct timeval *now) /* {{{ */ { diff --git a/sapi/fpm/fpm/fpm_request.c b/sapi/fpm/fpm/fpm_request.c index 47ebe8e16a5f2..0eb75884d367a 100644 --- a/sapi/fpm/fpm/fpm_request.c +++ b/sapi/fpm/fpm/fpm_request.c @@ -34,7 +34,7 @@ const char *fpm_request_get_stage_name(int stage) { return requests_stages[stage]; } -void fpm_request_accepting() /* {{{ */ +void fpm_request_accepting(void) { struct fpm_scoreboard_proc_s *proc; struct timeval now; @@ -56,9 +56,8 @@ void fpm_request_accepting() /* {{{ */ /* idle++, active-- */ fpm_scoreboard_update_commit(1, -1, 0, 0, 0, 0, 0, FPM_SCOREBOARD_ACTION_INC, NULL); } -/* }}} */ -void fpm_request_reading_headers() /* {{{ */ +void fpm_request_reading_headers(void) { struct fpm_scoreboard_proc_s *proc; @@ -101,9 +100,8 @@ void fpm_request_reading_headers() /* {{{ */ /* idle--, active++, request++ */ fpm_scoreboard_update_commit(-1, 1, 0, 0, 1, 0, 0, FPM_SCOREBOARD_ACTION_INC, NULL); } -/* }}} */ -void fpm_request_info() /* {{{ */ +void fpm_request_info(void) { struct fpm_scoreboard_proc_s *proc; char *request_uri = fpm_php_request_uri(); @@ -151,9 +149,8 @@ void fpm_request_info() /* {{{ */ fpm_scoreboard_proc_release(proc); } -/* }}} */ -void fpm_request_executing() /* {{{ */ +void fpm_request_executing(void) { struct fpm_scoreboard_proc_s *proc; struct timeval now; @@ -170,9 +167,8 @@ void fpm_request_executing() /* {{{ */ proc->tv = now; fpm_scoreboard_proc_release(proc); } -/* }}} */ -void fpm_request_end(void) /* {{{ */ +void fpm_request_end(void) { struct fpm_scoreboard_proc_s *proc; struct timeval now; @@ -204,9 +200,8 @@ void fpm_request_end(void) /* {{{ */ proc->memory = memory; fpm_scoreboard_proc_release(proc); } -/* }}} */ -void fpm_request_finished() /* {{{ */ +void fpm_request_finished(void) { struct fpm_scoreboard_proc_s *proc; struct timeval now; @@ -223,7 +218,6 @@ void fpm_request_finished() /* {{{ */ proc->tv = now; fpm_scoreboard_proc_release(proc); } -/* }}} */ void fpm_request_check_timed_out(struct fpm_child_s *child, struct timeval *now, int terminate_timeout, int slowlog_timeout, int track_finished) /* {{{ */ { diff --git a/sapi/fpm/fpm/fpm_scoreboard.c b/sapi/fpm/fpm/fpm_scoreboard.c index bf847d9dcac98..52d10a0416832 100644 --- a/sapi/fpm/fpm/fpm_scoreboard.c +++ b/sapi/fpm/fpm/fpm_scoreboard.c @@ -21,7 +21,7 @@ static float fpm_scoreboard_tick; #endif -int fpm_scoreboard_init_main() /* {{{ */ +int fpm_scoreboard_init_main(void) { struct fpm_worker_pool_s *wp; @@ -72,7 +72,6 @@ int fpm_scoreboard_init_main() /* {{{ */ } return 0; } -/* }}} */ static struct fpm_scoreboard_s *fpm_scoreboard_get_for_update(struct fpm_scoreboard_s *scoreboard) /* {{{ */ { @@ -186,11 +185,10 @@ void fpm_scoreboard_update( } /* }}} */ -struct fpm_scoreboard_s *fpm_scoreboard_get() /* {{{*/ +struct fpm_scoreboard_s *fpm_scoreboard_get(void) { return fpm_scoreboard; } -/* }}} */ static inline struct fpm_scoreboard_proc_s *fpm_scoreboard_proc_get_ex( struct fpm_scoreboard_s *scoreboard, int child_index, unsigned int nprocs) /* {{{*/ @@ -442,9 +440,8 @@ int fpm_scoreboard_proc_alloc(struct fpm_child_s *child) /* {{{ */ /* }}} */ #ifdef HAVE_TIMES -float fpm_scoreboard_get_tick() /* {{{ */ +float fpm_scoreboard_get_tick(void) { return fpm_scoreboard_tick; } -/* }}} */ #endif diff --git a/sapi/fpm/fpm/fpm_shm.c b/sapi/fpm/fpm/fpm_shm.c index 035f2443e30f0..386fef8c49fa2 100644 --- a/sapi/fpm/fpm/fpm_shm.c +++ b/sapi/fpm/fpm/fpm_shm.c @@ -60,8 +60,7 @@ int fpm_shm_free(void *mem, size_t size) /* {{{ */ } /* }}} */ -size_t fpm_shm_get_size_allocated() /* {{{*/ +size_t fpm_shm_get_size_allocated(void) { return fpm_shm_size; } -/* }}} */ diff --git a/sapi/fpm/fpm/fpm_signals.c b/sapi/fpm/fpm/fpm_signals.c index f5a5ae5ec1743..6aad4403768cf 100644 --- a/sapi/fpm/fpm/fpm_signals.c +++ b/sapi/fpm/fpm/fpm_signals.c @@ -182,7 +182,7 @@ static void sig_handler(int signo) /* {{{ */ } /* }}} */ -int fpm_signals_init_main() /* {{{ */ +int fpm_signals_init_main(void) { struct sigaction act; @@ -222,9 +222,8 @@ int fpm_signals_init_main() /* {{{ */ } return 0; } -/* }}} */ -int fpm_signals_init_child() /* {{{ */ +int fpm_signals_init_child(void) { struct sigaction act, act_dfl; @@ -257,15 +256,13 @@ int fpm_signals_init_child() /* {{{ */ } return 0; } -/* }}} */ -int fpm_signals_get_fd() /* {{{ */ +int fpm_signals_get_fd(void) { return sp[0]; } -/* }}} */ -int fpm_signals_init_mask() /* {{{ */ +int fpm_signals_init_mask(void) { /* Subset of signals from fpm_signals_init_main() and fpm_got_signal() blocked to avoid unexpected death during early init @@ -298,9 +295,8 @@ int fpm_signals_init_mask() /* {{{ */ } return 0; } -/* }}} */ -int fpm_signals_block() /* {{{ */ +int fpm_signals_block(void) { if (0 > sigprocmask(SIG_BLOCK, &block_sigset, NULL)) { zlog(ZLOG_SYSERROR, "failed to block signals"); @@ -308,9 +304,8 @@ int fpm_signals_block() /* {{{ */ } return 0; } -/* }}} */ -int fpm_signals_child_block() /* {{{ */ +int fpm_signals_child_block(void) { if (0 > sigprocmask(SIG_BLOCK, &child_block_sigset, NULL)) { zlog(ZLOG_SYSERROR, "failed to block child signals"); @@ -318,9 +313,8 @@ int fpm_signals_child_block() /* {{{ */ } return 0; } -/* }}} */ -int fpm_signals_unblock() /* {{{ */ +int fpm_signals_unblock(void) { /* Ensure that during reload after upgrade all signals are unblocked. block_sigset could have different value before execve() */ @@ -332,4 +326,3 @@ int fpm_signals_unblock() /* {{{ */ } return 0; } -/* }}} */ diff --git a/sapi/fpm/fpm/fpm_sockets.c b/sapi/fpm/fpm/fpm_sockets.c index 84fb25e234359..66488b9bf000e 100644 --- a/sapi/fpm/fpm/fpm_sockets.c +++ b/sapi/fpm/fpm/fpm_sockets.c @@ -418,7 +418,7 @@ static zend_result fpm_socket_setfib_init(void) } #endif -int fpm_sockets_init_main() /* {{{ */ +int fpm_sockets_init_main(void) { unsigned i, lq_len; struct fpm_worker_pool_s *wp; @@ -523,7 +523,6 @@ int fpm_sockets_init_main() /* {{{ */ } return 0; } -/* }}} */ #if HAVE_FPM_LQ diff --git a/sapi/fpm/fpm/fpm_stdio.c b/sapi/fpm/fpm/fpm_stdio.c index e920923b009bc..89ae308f280ff 100644 --- a/sapi/fpm/fpm/fpm_stdio.c +++ b/sapi/fpm/fpm/fpm_stdio.c @@ -20,10 +20,11 @@ #include "fpm_stdio.h" #include "zlog.h" +static int fd_stderr_original = -1; static int fd_stdout[2]; static int fd_stderr[2]; -int fpm_stdio_init_main() /* {{{ */ +int fpm_stdio_init_main(void) { int fd = open("/dev/null", O_RDWR); @@ -40,9 +41,8 @@ int fpm_stdio_init_main() /* {{{ */ close(fd); return 0; } -/* }}} */ -static inline int fpm_use_error_log(void) { /* {{{ */ +static inline int fpm_use_error_log(void) { /* * the error_log is NOT used when running in foreground * and from a tty (user looking at output). @@ -60,8 +60,54 @@ static inline int fpm_use_error_log(void) { /* {{{ */ return 0; } +int fpm_stdio_init_final(void) +{ + if (0 > fpm_stdio_redirect_stderr_to_error_log() || + 0 > fpm_stdio_redirect_stderr_to_dev_null_for_syslog()) { + + return -1; + } + + zlog_set_launched(); + return 0; +} /* }}} */ -int fpm_stdio_init_final() /* {{{ */ + +int fpm_stdio_save_original_stderr(void) +{ + /* php-fpm loses STDERR fd after call of the fpm_stdio_init_final(). Check #8555. */ + zlog(ZLOG_DEBUG, "saving original STDERR fd: dup()"); + fd_stderr_original = dup(STDERR_FILENO); + if (0 > fd_stderr_original) { + zlog(ZLOG_SYSERROR, "failed to save original STDERR fd, access.log records may appear in error_log: dup()"); + return -1; + } + + return 0; +} + +int fpm_stdio_restore_original_stderr(int close_after_restore) +{ + /* php-fpm loses STDERR fd after call of the fpm_stdio_init_final(). Check #8555. */ + if (-1 != fd_stderr_original) { + zlog(ZLOG_DEBUG, "restoring original STDERR fd: dup2()"); + if (0 > dup2(fd_stderr_original, STDERR_FILENO)) { + zlog(ZLOG_SYSERROR, "failed to restore original STDERR fd, access.log records may appear in error_log: dup2()"); + return -1; + } else { + if (close_after_restore) { + close(fd_stderr_original); + } + } + } else { + zlog(ZLOG_DEBUG, "original STDERR fd is not restored, maybe function is called from a child: dup2()"); + return -1; + } + + return 0; +} + +int fpm_stdio_redirect_stderr_to_error_log(void) { if (fpm_use_error_log()) { /* prevent duping if logging to syslog */ @@ -69,21 +115,28 @@ int fpm_stdio_init_final() /* {{{ */ /* there might be messages to stderr from other parts of the code, we need to log them all */ if (0 > dup2(fpm_globals.error_log_fd, STDERR_FILENO)) { - zlog(ZLOG_SYSERROR, "failed to init stdio: dup2()"); + zlog(ZLOG_SYSERROR, "failed to tie stderr fd with error_log fd: dup2()"); return -1; } } + } + + return 0; +} + +int fpm_stdio_redirect_stderr_to_dev_null_for_syslog(void) +{ + if (fpm_use_error_log()) { #ifdef HAVE_SYSLOG_H - else if (fpm_globals.error_log_fd == ZLOG_SYSLOG) { + if (fpm_globals.error_log_fd == ZLOG_SYSLOG) { /* dup to /dev/null when using syslog */ dup2(STDOUT_FILENO, STDERR_FILENO); } #endif } - zlog_set_launched(); + return 0; } -/* }}} */ int fpm_stdio_init_child(struct fpm_worker_pool_s *wp) /* {{{ */ { @@ -109,11 +162,10 @@ int fpm_stdio_init_child(struct fpm_worker_pool_s *wp) /* {{{ */ #define FPM_STDIO_CMD_FLUSH "\0fscf" -int fpm_stdio_flush_child() /* {{{ */ +int fpm_stdio_flush_child(void) { return write(STDERR_FILENO, FPM_STDIO_CMD_FLUSH, sizeof(FPM_STDIO_CMD_FLUSH)); } -/* }}} */ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg) /* {{{ */ { @@ -218,7 +270,7 @@ static void fpm_stdio_child_said(struct fpm_event_s *ev, short which, void *arg) zlog_stream_finish(log_stream); } if (read_fail < 0) { - zlog(ZLOG_SYSERROR, "unable to read what child say"); + zlog(ZLOG_SYSERROR, "unable to read what child %d said into %s", (int) child->pid, is_stdout ? "stdout" : "stderr"); } fpm_event_del(event); @@ -336,10 +388,6 @@ int fpm_stdio_open_error_log(int reopen) /* {{{ */ } if (reopen) { - if (fpm_use_error_log()) { - dup2(fd, STDERR_FILENO); - } - dup2(fd, fpm_globals.error_log_fd); close(fd); fd = fpm_globals.error_log_fd; /* for FD_CLOSEXEC to work */ diff --git a/sapi/fpm/fpm/fpm_stdio.h b/sapi/fpm/fpm/fpm_stdio.h index c0ff94d3cb609..49be50de562d9 100644 --- a/sapi/fpm/fpm/fpm_stdio.h +++ b/sapi/fpm/fpm/fpm_stdio.h @@ -16,5 +16,9 @@ void fpm_stdio_child_use_pipes(struct fpm_child_s *child); int fpm_stdio_parent_use_pipes(struct fpm_child_s *child); int fpm_stdio_discard_pipes(struct fpm_child_s *child); int fpm_stdio_open_error_log(int reopen); +int fpm_stdio_save_original_stderr(void); +int fpm_stdio_restore_original_stderr(int close_after_restore); +int fpm_stdio_redirect_stderr_to_dev_null_for_syslog(void); +int fpm_stdio_redirect_stderr_to_error_log(void); #endif diff --git a/sapi/fpm/fpm/fpm_systemd.c b/sapi/fpm/fpm/fpm_systemd.c index 31b6a3d27ae65..175312412330f 100644 --- a/sapi/fpm/fpm/fpm_systemd.c +++ b/sapi/fpm/fpm/fpm_systemd.c @@ -11,7 +11,7 @@ #include "fpm_systemd.h" -static void fpm_systemd() /* {{{ */ +static void fpm_systemd(void) { static unsigned long int last=0; struct fpm_worker_pool_s *wp; @@ -43,7 +43,6 @@ static void fpm_systemd() /* {{{ */ last = requests; } -/* }}} */ void fpm_systemd_heartbeat(struct fpm_event_s *ev, short which, void *arg) /* {{{ */ { @@ -79,7 +78,7 @@ void fpm_systemd_heartbeat(struct fpm_event_s *ev, short which, void *arg) /* {{ } /* }}} */ -int fpm_systemd_conf() /* {{{ */ +int fpm_systemd_conf(void) { char *watchdog; int interval = 0; @@ -109,4 +108,3 @@ int fpm_systemd_conf() /* {{{ */ } return 0; } -/* }}} */ diff --git a/sapi/fpm/fpm/fpm_trace_mach.c b/sapi/fpm/fpm/fpm_trace_mach.c index 1ecee23d261e9..092858e287d46 100644 --- a/sapi/fpm/fpm/fpm_trace_mach.c +++ b/sapi/fpm/fpm/fpm_trace_mach.c @@ -18,7 +18,7 @@ static vm_offset_t target_page_base; static vm_offset_t local_page; static mach_msg_type_number_t local_size; -static void fpm_mach_vm_deallocate() /* {{{ */ +static void fpm_mach_vm_deallocate(void) { if (local_page) { mach_vm_deallocate(mach_task_self(), local_page, local_size); @@ -27,7 +27,6 @@ static void fpm_mach_vm_deallocate() /* {{{ */ local_size = 0; } } -/* }}} */ static int fpm_mach_vm_read_page(vm_offset_t page) /* {{{ */ { diff --git a/sapi/fpm/fpm/fpm_unix.c b/sapi/fpm/fpm/fpm_unix.c index 9c94fa1eae038..333265b07bd4a 100644 --- a/sapi/fpm/fpm/fpm_unix.c +++ b/sapi/fpm/fpm/fpm_unix.c @@ -486,7 +486,7 @@ int fpm_unix_init_child(struct fpm_worker_pool_s *wp) /* {{{ */ } /* }}} */ -int fpm_unix_init_main() /* {{{ */ +int fpm_unix_init_main(void) { struct fpm_worker_pool_s *wp; int is_root = !geteuid(); @@ -623,4 +623,3 @@ int fpm_unix_init_main() /* {{{ */ return 0; } -/* }}} */ diff --git a/sapi/fpm/fpm/fpm_worker_pool.c b/sapi/fpm/fpm/fpm_worker_pool.c index 1d902d511366c..974238de296d4 100644 --- a/sapi/fpm/fpm/fpm_worker_pool.c +++ b/sapi/fpm/fpm/fpm_worker_pool.c @@ -62,7 +62,7 @@ static void fpm_worker_pool_cleanup(int which, void *arg) /* {{{ */ } /* }}} */ -struct fpm_worker_pool_s *fpm_worker_pool_alloc() /* {{{ */ +struct fpm_worker_pool_s *fpm_worker_pool_alloc(void) { struct fpm_worker_pool_s *ret; @@ -77,13 +77,11 @@ struct fpm_worker_pool_s *fpm_worker_pool_alloc() /* {{{ */ ret->log_fd = -1; return ret; } -/* }}} */ -int fpm_worker_pool_init_main() /* {{{ */ +int fpm_worker_pool_init_main(void) { if (0 > fpm_cleanup_add(FPM_CLEANUP_ALL, fpm_worker_pool_cleanup, 0)) { return -1; } return 0; } -/* }}} */ diff --git a/sapi/fpm/tests/bug77780-header-sent-error.phpt b/sapi/fpm/tests/bug77780-header-sent-error.phpt new file mode 100644 index 0000000000000..b5e76918547f1 --- /dev/null +++ b/sapi/fpm/tests/bug77780-header-sent-error.phpt @@ -0,0 +1,54 @@ +--TEST-- +FPM: bug77780 - Headers already sent error incorrectly emitted +--SKIPIF-- + +--EXTENSIONS-- +session +--FILE-- +start(); +$tester->expectLogStartNotices(); +$tester + ->request( + headers: [ + 'PHP_VALUE' => "session.cookie_secure=1", + ], + readLimit: 10, + expectError: true + ); +$tester->request( + headers: [ + 'PHP_VALUE' => "session.cookie_secure=1", + ] + ) + ->expectNoError(); +$tester->terminate(); +$tester->close(); + +?> +Done +--EXPECT-- +Done +--CLEAN-- + diff --git a/sapi/fpm/tests/fcgi.inc b/sapi/fpm/tests/fcgi.inc index d17a659dd9c02..7d236c1b03a5e 100644 --- a/sapi/fpm/tests/fcgi.inc +++ b/sapi/fpm/tests/fcgi.inc @@ -26,6 +26,7 @@ namespace Adoy\FastCGI; class TimedOutException extends \Exception {} class ForbiddenException extends \Exception {} +class ReadLimitExceeded extends \Exception {} /** * Handles communication with a FastCGI application @@ -404,16 +405,24 @@ class Client /** * Read a FastCGI Packet * + * @param int $readLimit max content size * @return array + * @throws ReadLimitExceeded */ - private function readPacket() + private function readPacket($readLimit = -1) { if ($packet = fread($this->_sock, self::HEADER_LEN)) { $resp = $this->decodePacketHeader($packet); $resp['content'] = ''; if ($resp['contentLength']) { - $len = $resp['contentLength']; - while ($len && $buf=fread($this->_sock, $len)) { + $len = $resp['contentLength']; + if ($readLimit >= 0 && $len > $readLimit) { + // close connection so it can be re-set reset and throw an error + fclose($this->_sock); + $this->_sock = null; + throw new ReadLimitExceeded("Content has $len bytes but the limit is $readLimit bytes"); + } + while ($len && $buf = fread($this->_sock, $len)) { $len -= strlen($buf); $resp['content'] .= $buf; } @@ -473,15 +482,16 @@ class Client * * @param array $params Array of parameters * @param string $stdin Content + * @param int $readLimit [optional] the number of bytes to accept in a single packet or -1 if unlimited * @return array * @throws ForbiddenException * @throws TimedOutException * @throws \Exception */ - public function request_data(array $params, $stdin) + public function request_data(array $params, $stdin, $readLimit = -1) { $id = $this->async_request($params, $stdin); - return $this->wait_for_response_data($id); + return $this->wait_for_response_data($id, 0, $readLimit); } /** @@ -579,12 +589,13 @@ class Client * * @param int $requestId * @param int $timeoutMs [optional] the number of milliseconds to wait. + * @param int $readLimit [optional] the number of bytes to accept in a single packet or -1 if unlimited * @return array response data * @throws ForbiddenException * @throws TimedOutException * @throws \Exception */ - public function wait_for_response_data($requestId, $timeoutMs = 0) + public function wait_for_response_data($requestId, $timeoutMs = 0, $readLimit = -1) { if (!isset($this->_requests[$requestId])) { throw new \Exception('Invalid request id given'); @@ -608,7 +619,7 @@ class Client // but still not get the response requested $startTime = microtime(true); - while ($resp = $this->readPacket()) { + while ($resp = $this->readPacket($readLimit)) { if ($resp['type'] == self::STDOUT || $resp['type'] == self::STDERR) { if ($resp['type'] == self::STDERR) { $this->_requests[$resp['requestId']]['state'] = self::REQ_STATE_ERR; diff --git a/sapi/fpm/tests/gh8885-stderr-fd-reload-usr1.phpt b/sapi/fpm/tests/gh8885-stderr-fd-reload-usr1.phpt new file mode 100644 index 0000000000000..4ff8d0660936e --- /dev/null +++ b/sapi/fpm/tests/gh8885-stderr-fd-reload-usr1.phpt @@ -0,0 +1,92 @@ +--TEST-- +FPM: GH-8885 - access.log with stderr begins to write logs to error_log after daemon reload +--SKIPIF-- + +--FILE-- + true]); +// getPrefixedFile('err.log') is the same path that returns processTemplate('{{FILE:LOG}}') +$errorLogFile = $tester->getPrefixedFile('err.log'); + +$tester->start(); +$tester->expectNoLogMessages(); + +$content = file_get_contents($errorLogFile); +assert($content !== false && strlen($content) > 0, 'File must not be empty'); + +$errorLogLines = explode("\n", $content); +array_pop($errorLogLines); + +assert(count($errorLogLines) === 2, 'Expected 2 records in the error_log file'); +assert(strpos($errorLogLines[0], 'NOTICE: fpm is running, pid')); +assert(strpos($errorLogLines[1], 'NOTICE: ready to handle connections')); + +$tester->ping('{{ADDR}}'); +$stderrLines = $tester->getLogLines(-1); +assert(count($stderrLines) === 1, 'Expected 1 record in the stderr output (access.log)'); +$stderrLine = $stderrLines[0]; +assert(preg_match('/127.0.0.1 .* "GET \/ping" 200$/', $stderrLine), 'Incorrect format of access.log record'); + +$tester->signal('USR1'); +$tester->expectNoLogMessages(); + +$content = file_get_contents($errorLogFile); +assert($content !== false && strlen($content) > 0, 'File must not be empty'); +$errorLogLines = explode("\n", $content); +array_pop($errorLogLines); + +assert(count($errorLogLines) >= 4, 'Expected at least 4 records in the error_log file'); +assert(strpos($errorLogLines[0], 'NOTICE: fpm is running, pid')); +assert(strpos($errorLogLines[1], 'NOTICE: ready to handle connections')); +assert(strpos($errorLogLines[2], 'NOTICE: error log file re-opened')); +assert(strpos($errorLogLines[3], 'NOTICE: access log file re-opened')); + + +$tester->ping('{{ADDR}}'); +$stderrLines = $tester->getLogLines(-1); +assert(count($stderrLines) === 1, 'Must be only 1 record in the access.log'); +assert(preg_match('/127.0.0.1 .* "GET \/ping" 200$/', $stderrLines[0]), 'Incorrect format of access.log record'); + +$tester->terminate(); +$stderrLines = $tester->expectNoLogMessages(); + +$content = file_get_contents($errorLogFile); +assert($content !== false && strlen($content) > 0, 'File must not be empty'); +$errorLogLines = explode("\n", $content); +array_pop($errorLogLines); +$errorLogLastLine = array_pop($errorLogLines); +assert(strpos($errorLogLastLine, 'NOTICE: exiting, bye-bye')); + +$tester->close(); +?> +Done +--EXPECT-- +Done +--CLEAN-- + diff --git a/sapi/fpm/tests/gh8885-stderr-fd-reload-usr2.phpt b/sapi/fpm/tests/gh8885-stderr-fd-reload-usr2.phpt new file mode 100644 index 0000000000000..68d9f6fa68b64 --- /dev/null +++ b/sapi/fpm/tests/gh8885-stderr-fd-reload-usr2.phpt @@ -0,0 +1,92 @@ +--TEST-- +FPM: GH-8885 - access.log with stderr begins to write logs to error_log after daemon reload +--SKIPIF-- + +--FILE-- + true]); +// getPrefixedFile('err.log') is the same path that returns processTemplate('{{FILE:LOG}}') +$errorLogFile = $tester->getPrefixedFile('err.log'); + +$tester->start(); +$tester->expectNoLogMessages(); + +$content = file_get_contents($errorLogFile); +assert($content !== false && strlen($content) > 0, 'File must not be empty'); + +$errorLogLines = explode("\n", $content); +array_pop($errorLogLines); + +assert(count($errorLogLines) === 2, 'Expected 2 records in the error_log file'); +assert(strpos($errorLogLines[0], 'NOTICE: fpm is running, pid')); +assert(strpos($errorLogLines[1], 'NOTICE: ready to handle connections')); + +$tester->ping('{{ADDR}}'); +$stderrLines = $tester->getLogLines(-1); +assert(count($stderrLines) === 1, 'Expected 1 record in the stderr output (access.log)'); +$stderrLine = $stderrLines[0]; +assert(preg_match('/127.0.0.1 .* "GET \/ping" 200$/', $stderrLine), 'Incorrect format of access.log record'); + +$tester->signal('USR2'); +$tester->expectLogNotice('using inherited socket fd=\d+, "127.0.0.1:\d+"'); + +$content = file_get_contents($errorLogFile); +assert($content !== false && strlen($content) > 0, 'File must not be empty'); +$errorLogLines = explode("\n", $content); +array_pop($errorLogLines); + +assert(count($errorLogLines) >= 5, 'Expected at least 5 records in the error_log file'); +assert(strpos($errorLogLines[0], 'NOTICE: fpm is running, pid')); +assert(strpos($errorLogLines[1], 'NOTICE: ready to handle connections')); +assert(strpos($errorLogLines[2], 'NOTICE: Reloading in progress')); +assert(strpos($errorLogLines[3], 'NOTICE: reloading: execvp')); +assert(strpos($errorLogLines[4], 'NOTICE: using inherited socket')); + +$tester->ping('{{ADDR}}'); +$stderrLines = $tester->getLogLines(-1); +assert(count($stderrLines) === 1, 'Must be only 1 record in the access.log'); +assert(preg_match('/127.0.0.1 .* "GET \/ping" 200$/', $stderrLines[0]), 'Incorrect format of access.log record'); + +$tester->terminate(); +$stderrLines = $tester->expectNoLogMessages(); + +$content = file_get_contents($errorLogFile); +assert($content !== false && strlen($content) > 0, 'File must not be empty'); +$errorLogLines = explode("\n", $content); +array_pop($errorLogLines); +$errorLogLastLine = array_pop($errorLogLines); +assert(strpos($errorLogLastLine, 'NOTICE: exiting, bye-bye')); + +$tester->close(); +?> +Done +--EXPECT-- +Done +--CLEAN-- + diff --git a/sapi/fpm/tests/response.inc b/sapi/fpm/tests/response.inc index b531feacdca7e..1d0783b66ec35 100644 --- a/sapi/fpm/tests/response.inc +++ b/sapi/fpm/tests/response.inc @@ -111,21 +111,31 @@ class Response } /** - * @param string $errorMessage + * @param string|null $errorMessage * @return Response */ public function expectError($errorMessage) { $errorData = $this->getErrorData(); if ($errorData !== $errorMessage) { - $this->error( - "The expected error message '$errorMessage' is not equal to returned error '$errorData'" - ); + $expectedErrorMessage = $errorMessage !== null + ? "The expected error message '$errorMessage' is not equal to returned error '$errorData'" + : "No error message expected but received '$errorData'"; + $this->error($expectedErrorMessage); } return $this; } + /** + * @param string $errorMessage + * @return Response + */ + public function expectNoError() + { + return $this->expectError(null); + } + /** * @param string $contentType * @return string|null diff --git a/sapi/fpm/tests/tester.inc b/sapi/fpm/tests/tester.inc index 0956dd969aaba..71bafcb3bb607 100644 --- a/sapi/fpm/tests/tester.inc +++ b/sapi/fpm/tests/tester.inc @@ -35,6 +35,11 @@ class Tester */ const FILE_EXT_PID = 'pid'; + /** + * Name for the option to manage php-fpm --force-stderr flag + */ + const PHP_FPM_DISABLE_FORCE_STDERR = 'disable-force-stderr'; + /** * @var array */ @@ -375,7 +380,15 @@ class Tester { $configFile = $this->createConfig(); $desc = $this->outDesc ? [] : [1 => array('pipe', 'w'), 2 => array('redirect', 1)]; - $cmd = [self::findExecutable(), '-F', '-O', '-y', $configFile]; + + $cmd = [self::findExecutable(), '-F', '-y', $configFile]; + + if (!(isset($this->options[self::PHP_FPM_DISABLE_FORCE_STDERR]) && + $this->options[self::PHP_FPM_DISABLE_FORCE_STDERR] === true) + ) { + $cmd[] = '-O'; + } + if (getenv('TEST_FPM_RUN_AS_ROOT')) { $cmd[] = '--allow-to-run-as-root'; } @@ -593,6 +606,8 @@ class Tester * @param string|null $errorMessage * @param bool $connKeepAlive * @param string|null $scriptFilename = null + * @param bool $expectError + * @param int $readLimit * @return Response */ public function request( @@ -604,7 +619,9 @@ class Tester string $errorMessage = null, bool $connKeepAlive = false, string $scriptFilename = null, - string $stdin = null + string $stdin = null, + bool $expectError = false, + int $readLimit = -1, ) { if ($this->hasError()) { return new Response(null, true); @@ -614,11 +631,17 @@ class Tester try { $this->response = new Response( - $this->getClient($address, $connKeepAlive)->request_data($params, $stdin) + $this->getClient($address, $connKeepAlive)->request_data($params, $stdin, $readLimit) ); - $this->message($successMessage); + if ($expectError) { + $this->error('Expected request error but the request was successful'); + } else { + $this->message($successMessage); + } } catch (\Exception $exception) { - if ($errorMessage === null) { + if ($expectError) { + $this->message($successMessage); + } elseif ($errorMessage === null) { $this->error("Request failed", $exception); } else { $this->message($errorMessage); @@ -1153,7 +1176,7 @@ class Tester * @param string $prefix * @return string */ - private function getPrefixedFile(string $extension, string $prefix = null) + public function getPrefixedFile(string $extension, string $prefix = null) { $fileName = rtrim($this->fileName, '.'); if (!is_null($prefix)) { diff --git a/sapi/phpdbg/phpdbg.c b/sapi/phpdbg/phpdbg.c index 52eed52fbacb4..0540676e0f5f2 100644 --- a/sapi/phpdbg/phpdbg.c +++ b/sapi/phpdbg/phpdbg.c @@ -170,11 +170,7 @@ static PHP_MINIT_FUNCTION(phpdbg) /* {{{ */ zend_execute_ex = phpdbg_execute_ex; - REGISTER_STRINGL_CONSTANT("PHPDBG_VERSION", PHPDBG_VERSION, sizeof(PHPDBG_VERSION)-1, CONST_CS|CONST_PERSISTENT); - - REGISTER_LONG_CONSTANT("PHPDBG_COLOR_PROMPT", PHPDBG_COLOR_PROMPT, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHPDBG_COLOR_NOTICE", PHPDBG_COLOR_NOTICE, CONST_CS|CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("PHPDBG_COLOR_ERROR", PHPDBG_COLOR_ERROR, CONST_CS|CONST_PERSISTENT); + register_phpdbg_symbols(module_number); return SUCCESS; } /* }}} */ diff --git a/sapi/phpdbg/phpdbg.stub.php b/sapi/phpdbg/phpdbg.stub.php index 40a51d892a166..ad0e42c85c572 100644 --- a/sapi/phpdbg/phpdbg.stub.php +++ b/sapi/phpdbg/phpdbg.stub.php @@ -2,6 +2,28 @@ /** @generate-class-entries */ +/** + * @var string + * @cvalue PHPDBG_VERSION + */ +const PHPDBG_VERSION = UNKNOWN; + +/** + * @var int + * @cvalue PHPDBG_COLOR_PROMPT + */ +const PHPDBG_COLOR_PROMPT = UNKNOWN; +/** + * @var int + * @cvalue PHPDBG_COLOR_NOTICE + */ +const PHPDBG_COLOR_NOTICE = UNKNOWN; +/** + * @var int + * @cvalue PHPDBG_COLOR_ERROR + */ +const PHPDBG_COLOR_ERROR = UNKNOWN; + function phpdbg_break_next(): void {} function phpdbg_break_file(string $file, int $line): void {} diff --git a/sapi/phpdbg/phpdbg_arginfo.h b/sapi/phpdbg/phpdbg_arginfo.h index 043f667459576..4f4861a7442ad 100644 --- a/sapi/phpdbg/phpdbg_arginfo.h +++ b/sapi/phpdbg/phpdbg_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: dc2e5420ea396c6235429c9606875ad2332811cb */ + * Stub hash: 08e29f02953f23bfce6ce04f435227b4e5e61545 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_phpdbg_break_next, 0, 0, IS_VOID, 0) ZEND_END_ARG_INFO() @@ -71,3 +71,11 @@ static const zend_function_entry ext_functions[] = { ZEND_FE(phpdbg_get_executable, arginfo_phpdbg_get_executable) ZEND_FE_END }; + +static void register_phpdbg_symbols(int module_number) +{ + REGISTER_STRING_CONSTANT("PHPDBG_VERSION", PHPDBG_VERSION, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHPDBG_COLOR_PROMPT", PHPDBG_COLOR_PROMPT, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHPDBG_COLOR_NOTICE", PHPDBG_COLOR_NOTICE, CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("PHPDBG_COLOR_ERROR", PHPDBG_COLOR_ERROR, CONST_PERSISTENT); +} diff --git a/travis/test.sh b/travis/test.sh index 313651a2ead37..8aaab2d13417d 100755 --- a/travis/test.sh +++ b/travis/test.sh @@ -7,6 +7,7 @@ if [ -z "$ARM64" ]; then export JOBS=$(nproc); else export JOBS=16; fi export SKIP_IO_CAPTURE_TESTS=1 ./sapi/cli/php run-tests.php -P \ -g "FAIL,BORK,LEAK" --offline --show-diff --show-slow 1000 \ + --no-progress \ --set-timeout 120 -j$JOBS \ -d extension=`pwd`/modules/zend_test.so \ -d zend_extension=`pwd`/modules/opcache.so \ diff --git a/win32/build/Makefile b/win32/build/Makefile index 9d063549113aa..e63a77b121fda 100644 --- a/win32/build/Makefile +++ b/win32/build/Makefile @@ -130,10 +130,10 @@ $(PHPDLL_RES): win32\build\template.rc /I$(BUILD_DIR) /d MC_INCLUDE="\"$(MCFILE)\"" \ win32\build\template.rc -$(BUILD_DIR)\$(PHPDLL): generated_files $(PHPDEF) $(PHP_GLOBAL_OBJS) $(STATIC_EXT_OBJS) $(PHPDLL_RES) $(MCFILE) +$(BUILD_DIR)\$(PHPDLL): generated_files $(PHPDEF) $(PHP_GLOBAL_OBJS) $(STATIC_EXT_OBJS) $(PHPDLL_RES) $(ASM_OBJS) $(MCFILE) @copy win32\build\default.manifest $(BUILD_DIR)\$(PHPDLL).manifest >nul # @$(CC) $(PHP_GLOBAL_OBJS) $(STATIC_EXT_OBJS) $(STATIC_EXT_LIBS) $(LIBS) $(PHPDLL_RES) /link /out:$(BUILD_DIR)\$(PHPDLL) $(PHP8_PGD_OPTION) $(PHP_LDFLAGS) $(LDFLAGS) $(STATIC_EXT_LDFLAGS) - @"$(LINK)" $(PHP_GLOBAL_OBJS_RESP) $(STATIC_EXT_OBJS_RESP) $(STATIC_EXT_LIBS) $(LIBS) $(PHPDLL_RES) /out:$(BUILD_DIR)\$(PHPDLL) $(PHP8_PGD_OPTION) $(PHP_LDFLAGS) $(LDFLAGS) $(STATIC_EXT_LDFLAGS) + @"$(LINK)" $(PHP_GLOBAL_OBJS_RESP) $(STATIC_EXT_OBJS_RESP) $(STATIC_EXT_LIBS) $(LIBS) $(ASM_OBJS) $(PHPDLL_RES) /out:$(BUILD_DIR)\$(PHPDLL) $(PHP8_PGD_OPTION) $(PHP_LDFLAGS) $(LDFLAGS) $(STATIC_EXT_LDFLAGS) -@$(_VC_MANIFEST_EMBED_DLL) $(BUILD_DIR)\$(PHPLIB): $(BUILD_DIR)\$(PHPDLL) diff --git a/win32/build/Makefile.frag.w32 b/win32/build/Makefile.frag.w32 deleted file mode 100644 index 6c74619c986a4..0000000000000 --- a/win32/build/Makefile.frag.w32 +++ /dev/null @@ -1,7 +0,0 @@ -$(BUILD_DIR)\Zend\jump_$(FIBER_ASM_ARCH)_ms_pe_masm.obj: Zend\asm\jump_$(FIBER_ASM_ARCH)_ms_pe_masm.asm - $(FIBER_ASSEMBLER) /DBOOST_CONTEXT_EXPORT=EXPORT /nologo /Fo $(BUILD_DIR)\Zend\jump_$(FIBER_ASM_ARCH)_ms_pe_masm.obj /c Zend\asm\jump_$(FIBER_ASM_ARCH)_ms_pe_masm.asm - -$(BUILD_DIR)\Zend\make_$(FIBER_ASM_ARCH)_ms_pe_masm.obj: Zend\asm\make_$(FIBER_ASM_ARCH)_ms_pe_masm.asm - $(FIBER_ASSEMBLER) /DBOOST_CONTEXT_EXPORT=EXPORT /nologo /Fo $(BUILD_DIR)\Zend\make_$(FIBER_ASM_ARCH)_ms_pe_masm.obj /c Zend\asm\make_$(FIBER_ASM_ARCH)_ms_pe_masm.asm - -$(BUILD_DIR)\$(PHPDLL): $(BUILD_DIR)\Zend\jump_$(FIBER_ASM_ARCH)_ms_pe_masm.obj $(BUILD_DIR)\Zend\make_$(FIBER_ASM_ARCH)_ms_pe_masm.obj diff --git a/win32/build/Makefile.phpize b/win32/build/Makefile.phpize index 37c449a059e3d..762b42444bfb1 100644 --- a/win32/build/Makefile.phpize +++ b/win32/build/Makefile.phpize @@ -42,11 +42,19 @@ _EXTENSION_DLL=$(PECL_TARGETS) _EXTENSION_DLL=$(EXT_TARGETS) !endif +!if $(PHP_TEST_INI_PATH) == "" test: set-tmp-env - $(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -d open_basedir= -d output_buffering=0 run-tests.php $(TESTS) -p "$(PHP_PREFIX)\php.exe" -d extension=$(BUILD_DIR)\$(_EXTENSION_DLL) + $(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -d open_basedir= -d output_buffering=0 run-tests.php -p "$(PHP_PREFIX)\php.exe" -d extension=$(BUILD_DIR)\$(_EXTENSION_DLL) $(TESTS) run: set-tmp-env $(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -n -d extension=$(BUILD_DIR)\\$(_EXTENSION_DLL) $(ARGS) +!else +test: set-tmp-env + $(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -n -d open_basedir= -d output_buffering=0 -d memory_limit=-1 run-tests.php -p "$(PHP_PREFIX)\php.exe" -n -c $(PHP_TEST_INI_PATH) $(TESTS) + +run: set-tmp-env + $(DEBUGGER_CMD) $(DEBUGGER_ARGS) "$(PHP_PREFIX)\php.exe" -n -c $(PHP_TEST_INI_PATH) $(ARGS) +!endif !if $(MT) == "" _VC_MANIFEST_EMBED_EXE= diff --git a/win32/build/config.w32 b/win32/build/config.w32 index c66f1e39af6a6..0b1736c8ab70d 100644 --- a/win32/build/config.w32 +++ b/win32/build/config.w32 @@ -14,8 +14,10 @@ ARG_WITH('cygwin', 'Path to cygwin utilities on your system', '\\cygwin'); toolset_setup_compiler(); -// do we use x64 or 80x86 version of compiler? -X64 = toolset_is_64(); +HOST_ARCH = toolset_host_arch(); +TARGET_ARCH = toolset_target_arch(); +// for compatible only +X64 = TARGET_ARCH != 'x86'; toolset_setup_arch(); toolset_setup_linker(); @@ -212,7 +214,7 @@ if (PHP_ANALYZER == "vs") { pvscfg.WriteLine("exclude-path = " + PROGRAM_FILES + "\\windows kits\\"); } pvscfg.WriteLine("vcinstalldir = " + VCINSTALLDIR); - pvscfg.WriteLine("platform = " + (X64 ? 'x64' : 'Win32')); + pvscfg.WriteLine("platform = " + (TARGET_ARCH == 'x86' ? 'Win32' : 'x64')); pvscfg.WriteLine("preprocessor = visualcpp"); pvscfg.WriteLine("language = C"); pvscfg.WriteLine("skip-cl-exe = no"); @@ -241,16 +243,44 @@ ADD_SOURCES("Zend", "zend_language_parser.c zend_language_scanner.c \ zend_enum.c zend_fibers.c zend_atomic.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 FIBER_ASSEMBLER = X64 ? PATH_PROG('ML64') : PATH_PROG('ML'); -DEFINE('FIBER_ASSEMBLER', FIBER_ASSEMBLER); +var PHP_ASSEMBLER = PATH_PROG({ + 'x64': 'ML64', + 'x86': 'ML', + 'arm64': 'armasm64' +}[TARGET_ARCH]); +if (!PHP_ASSEMBLER) { + ERROR("No assembler found, fiber cannot be built"); +} +DEFINE('PHP_ASSEMBLER', PHP_ASSEMBLER); +DEFINE('FIBER_ASSEMBLER', PHP_ASSEMBLER);// for compatible + +var FIBER_ASM_ARCH = { + 'x64': 'x86_64', + 'x86': 'i386', + 'arm64': 'arm64' +}[TARGET_ARCH]; +DEFINE('FIBER_ASM_ARCH', FIBER_ASM_ARCH); // for compatible only + +var FIBER_ASM_ABI = { + 'x64': 'x86_64_ms_pe_masm', + 'x86': 'i386_ms_pe_masm', + 'arm64': 'arm64_aapcs_pe_armasm' +}[TARGET_ARCH]; +DEFINE('FIBER_ASM_ABI', FIBER_ASM_ABI); + +if (TARGET_ARCH == 'arm64') { + DEFINE('FIBER_ASM_FLAGS', '-nologo -machine ARM64 -o'); +} else { + DEFINE('FIBER_ASM_FLAGS', '/DBOOST_CONTEXT_EXPORT=EXPORT /nologo /c /Fo'); +} -var FIBER_ASM_ARCH = X64 ? 'x86_64' : 'i386'; -DEFINE('FIBER_ASM_ARCH', FIBER_ASM_ARCH); +ADD_FLAG('ASM_OBJS', '$(BUILD_DIR)\\Zend\\jump_' + FIBER_ASM_ABI + '.obj $(BUILD_DIR)\\Zend\\make_' + FIBER_ASM_ABI + '.obj'); -ADD_FLAG('LDFLAGS', '$(BUILD_DIR)\\Zend\\jump_' + FIBER_ASM_ARCH + '_ms_pe_masm.obj'); -ADD_FLAG('LDFLAGS', '$(BUILD_DIR)\\Zend\\make_' + FIBER_ASM_ARCH + '_ms_pe_masm.obj'); +MFO.WriteLine('$(BUILD_DIR)\\Zend\\jump_' + FIBER_ASM_ABI + '.obj: Zend\\asm\\jump_' + FIBER_ASM_ABI + '.asm'); +MFO.WriteLine('\t$(PHP_ASSEMBLER) $(FIBER_ASM_FLAGS) $(BUILD_DIR)\\Zend\\jump_$(FIBER_ASM_ABI).obj Zend\\asm\\jump_$(FIBER_ASM_ABI).asm'); -ADD_MAKEFILE_FRAGMENT('win32/build/Makefile.frag.w32'); +MFO.WriteLine('$(BUILD_DIR)\\Zend\\make_' + FIBER_ASM_ABI + '.obj: Zend\\asm\\make_' + FIBER_ASM_ABI + '.asm'); +MFO.WriteLine('\t$(PHP_ASSEMBLER) $(FIBER_ASM_FLAGS) $(BUILD_DIR)\\Zend\\make_$(FIBER_ASM_ABI).obj Zend\\asm\\make_$(FIBER_ASM_ABI).asm'); ADD_FLAG("CFLAGS_BD_ZEND", "/D ZEND_ENABLE_STATIC_TSRMLS_CACHE=1"); if (VS_TOOLSET && VCVERS >= 1914) { diff --git a/win32/build/config.w32.phpize.in b/win32/build/config.w32.phpize.in index 72205fac34ec0..a820cf10322a5 100644 --- a/win32/build/config.w32.phpize.in +++ b/win32/build/config.w32.phpize.in @@ -14,8 +14,10 @@ var PHP_CYGWIN="notset"; toolset_setup_compiler(); -// do we use x64 or 80x86 version of compiler? -X64 = toolset_is_64(); +HOST_ARCH = toolset_host_arch(); +TARGET_ARCH = toolset_target_arch(); +// for compatible only +X64 = TARGET_ARCH != 'x86'; toolset_setup_arch(); toolset_setup_linker(); @@ -128,6 +130,12 @@ DEFINE("PHP_DIR", PHP_DIR); ARG_WITH("codegen-arch", "Architecture for code generation", "no"); toolset_setup_codegen_arch(); +ARG_ENABLE("test-ini", "Enable automatic php.ini generation. The test.ini will be put \ + into the build dir and used to automatically load the shared extensions.", "no"); + +ARG_WITH("test-ini-ext-exclude", "Comma separated list of shared extensions to \ + be excluded from the test.ini", "no"); + ARG_ENABLE("native-intrinsics", "Comma separated list of intrinsic optimizations to enable. \ Available optimization names are sse, sse2, sse3, ssse3, sse4.1, sse4.2, avx, avx2. \ SSE and SSE2 are enabled by default. The best optimization specified will \ diff --git a/win32/build/confutils.js b/win32/build/confutils.js index c7489924554cb..359c751b7bbca 100644 --- a/win32/build/confutils.js +++ b/win32/build/confutils.js @@ -95,10 +95,10 @@ if (typeof(CWD) == "undefined") { if (!MODE_PHPIZE) { /* defaults; we pick up the precise versions from configure.ac */ var PHP_VERSION = 8; - var PHP_MINOR_VERSION = 2; + var PHP_MINOR_VERSION = 3; var PHP_RELEASE_VERSION = 0; var PHP_EXTRA_VERSION = ""; - var PHP_VERSION_STRING = "8.2.0"; + var PHP_VERSION_STRING = "8.3.0"; } /* Get version numbers and DEFINE as a string */ @@ -168,9 +168,13 @@ function probe_binary(EXE, what) } var version = execute(command + '" 2>&1"'); - if (what == "64") { - if (version.match(/x64/)) { - return 1; + if (what == "arch") { + if (version.match(/x86/)) { + return "x86"; + } else if (version.match(/x64/)) { + return "x64"; + } else if (version.match(/ARM64/)) { + return "arm64"; } } else { if (version.match(/(\d+\.\d+(\.\d+)?(\.\d+)?)/)) { @@ -1665,7 +1669,7 @@ function ADD_SOURCES(dir, file_list, target, obj_dir) } if (PHP_ANALYZER == "clang") { - var analyzer_base_args = X64 ? "-m64" : "-m32"; + var analyzer_base_args = TARGET_ARCH == 'x86' ? "-m32" : "-m64"; var analyzer_base_flags = ""; analyzer_base_args += " --analyze"; @@ -1688,10 +1692,14 @@ function ADD_SOURCES(dir, file_list, target, obj_dir) analyzer_base_flags += " -D _MSC_VER=" + probe_binary(PATH_PROG('cl', null)); } - if (X64) { + if (TARGET_ARCH == 'x64') { analyzer_base_flags += " -D _M_X64 -D _WIN64"; - } else { + } else if (TARGET_ARCH == 'ARM64') { + analyzer_base_flags += " -D _M_ARM64 -D _WIN64"; + } else if (TARGET_ARCH == 'x86') { analyzer_base_flags += " -D _M_IX86 "; + } else { + ERROR("analyzer is not supported at arch " + TARGET_ARCH); } analyzer_base_flags += " -D _WIN32 -D WIN32 -D _WINDOWS"; @@ -1703,8 +1711,8 @@ function ADD_SOURCES(dir, file_list, target, obj_dir) analyzer_base_flags += " -I " + "\"" + vc_incs[i] + "\""; } - var cppcheck_platform = X64 ? "win64" : "win32A"; - var cppcheck_lib = "win32\\build\\cppcheck_" + (X64 ? "x64" : "x86") + ".cfg"; + var cppcheck_platform = TARGET_ARCH == 'x86' ? "win32A" : "win64"; + var cppcheck_lib = "win32\\build\\cppcheck_" + (TARGET_ARCH == 'x86' ? "x86" : "x64") + ".cfg"; // use x64 for arm64 yet analyzer_base_args += "--enable=warning,performance,portability,information,missingInclude " + "--platform=" + cppcheck_platform + " " + "--library=windows.cfg --library=microsoft_sal.cfg " + @@ -1955,7 +1963,8 @@ function write_summary() ar[k++] = ['Build type', PHP_DEBUG == "yes" ? "Debug" : "Release"]; ar[k++] = ['Thread Safety', PHP_ZTS == "yes" ? "Yes" : "No"]; ar[k++] = ['Compiler', COMPILER_NAME_LONG]; - ar[k++] = ['Architecture', X64 ? 'x64' : 'x86']; + ar[k++] = ['Target Architecture', TARGET_ARCH]; + ar[k++] = ['Host Architecture', HOST_ARCH]; if (PHP_PGO == "yes") { ar[k++] = ['Optimization', "PGO"]; } else if (PHP_PGI == "yes") { @@ -2078,9 +2087,7 @@ function generate_files() } STDOUT.WriteLine("Generating files..."); - if (!MODE_PHPIZE) { - generate_tmp_php_ini(); - } + generate_tmp_php_ini(); generate_makefile(); if (!MODE_PHPIZE) { generate_internal_functions(); @@ -2523,11 +2530,9 @@ function generate_makefile() handle_analyzer_makefile_flags(MF, keys[i], val); } - if (!MODE_PHPIZE) { - var val = "yes" == PHP_TEST_INI ? PHP_TEST_INI_PATH : ""; - /* Be sure it's done after generate_tmp_php_ini(). */ - MF.WriteLine("PHP_TEST_INI_PATH=\"" + val + "\""); - } + var val = "yes" == PHP_TEST_INI ? PHP_TEST_INI_PATH : ""; + /* Be sure it's done after generate_tmp_php_ini(). */ + MF.WriteLine("PHP_TEST_INI_PATH=\"" + val + "\""); MF.WriteBlankLines(1); if (MODE_PHPIZE) { @@ -3128,10 +3133,32 @@ function toolset_get_compiler_name(short) } -function toolset_is_64() +function toolset_host_arch() +{ + var command = 'cmd /c "where cl.exe"'; + var clpath = execute(command).split(/\n/)[0].replace(/\s$/, ''); + + var command = 'cmd /c "dumpbin "' + clpath + '" /nologo /headers"'; + var full = execute(command); + + /* + output is something like + FILE HEADER VALUES + 8664 machine (x64) + */ + var matches = full.match(/FILE HEADER VALUES\s+[A-F0-9]{3,4}\smachine \((x64|x86|ARM64)\)/); + + if(!matches){ + ERROR("Unsupported toolset host"); + } + + return matches[1].toLowerCase(); +} + +function toolset_target_arch() { if (VS_TOOLSET) { - return probe_binary(PHP_CL, 64); + return probe_binary(PHP_CL, 'arch'); } else if (CLANG_TOOLSET) { /*var command = 'cmd /c ""' + PHP_CL + '" -v"'; var full = execute(command + '" 2>&1"'); @@ -3141,26 +3168,22 @@ function toolset_is_64() /* Even executed within an environment setup with vcvars32.bat, clang-cl doesn't recognize the arch toolset. But as it needs the VS environment, checking the arch of cl.exe is correct. */ - return probe_binary(PATH_PROG('cl', null), 64); + return probe_binary(PATH_PROG('cl', null), 'arch'); } else if (ICC_TOOLSET) { - var command = 'cmd /c ""' + PHP_CL + '" -v"'; + var command = 'cmd /c "where cl"'; var full = execute(command + '" 2>&1"'); return null != full.match(/Intel\(R\) 64/); } - ERROR("Unsupported toolset"); + ERROR("Unsupported toolset target"); } function toolset_setup_arch() { - if (X64) { - STDOUT.WriteLine(" Detected 64-bit compiler"); - } else { - STDOUT.WriteLine(" Detected 32-bit compiler"); - } - AC_DEFINE('PHP_BUILD_ARCH', X64 ? 'x64' : 'x86', "Detected compiler architecture"); - DEFINE("PHP_ARCHITECTURE", X64 ? 'x64' : 'x86'); + STDOUT.WriteLine(" Detected " + TARGET_ARCH + " compiler" + (TARGET_ARCH == HOST_ARCH ? "" : " (cross compile from " + HOST_ARCH + ")")); + AC_DEFINE('PHP_BUILD_ARCH', TARGET_ARCH, "Detected compiler architecture"); + DEFINE("PHP_ARCHITECTURE", TARGET_ARCH); } function toolset_setup_codegen_arch() @@ -3174,7 +3197,7 @@ function toolset_setup_codegen_arch() if ("IA32" != arc) { ERROR("Only IA32 arch is supported by --with-codegen-arch, got '" + arc + "'"); - } else if (X64) { + } else if (TARGET_ARCH != 'x86') { ERROR("IA32 arch is only supported with 32-bit build"); } ADD_FLAG("CFLAGS", "/arch:" + arc); @@ -3234,10 +3257,10 @@ function toolset_setup_common_cflags() // fun stuff: MS deprecated ANSI stdio and similar functions // disable annoying warnings. In addition, time_t defaults // to 64-bit. Ask for 32-bit. - if (X64) { - ADD_FLAG('CFLAGS', ' /wd4996 '); - } else { + if (TARGET_ARCH == 'x86') { ADD_FLAG('CFLAGS', ' /wd4996 /D_USE_32BIT_TIME_T=1 '); + } else { + ADD_FLAG('CFLAGS', ' /wd4996 '); } if (PHP_DEBUG == "yes") { @@ -3289,10 +3312,10 @@ function toolset_setup_common_cflags() ADD_FLAG("CFLAGS", "/Zc:wchar_t"); } else if (CLANG_TOOLSET) { - if (X64) { - ADD_FLAG('CFLAGS', '-m64'); - } else { + if (TARGET_ARCH == 'x86') { ADD_FLAG('CFLAGS', '-m32'); + } else { + ADD_FLAG('CFLAGS', '-m64'); } ADD_FLAG("CFLAGS", " /fallback "); ADD_FLAG("CFLAGS", "-Xclang -fmodules"); @@ -3322,6 +3345,14 @@ function toolset_setup_intrinsic_cflags() 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 offically 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; } @@ -3349,7 +3380,7 @@ function toolset_setup_intrinsic_cflags() } } } - if (!X64) { + 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. */ @@ -3420,7 +3451,7 @@ function toolset_setup_build_mode() { if (PHP_DEBUG == "yes") { ADD_FLAG("CFLAGS", "/LDd /MDd /Od /D _DEBUG /D ZEND_DEBUG=1 " + - (X64?"/Zi":"/ZI")); + (TARGET_ARCH == 'x86'?"/ZI":"/Zi")); ADD_FLAG("LDFLAGS", "/debug"); // Avoid problems when linking to release libraries that use the release // version of the libc @@ -3455,11 +3486,16 @@ function object_out_dir_option_handle() } else { PHP_OBJECT_OUT_DIR = FSO.GetAbsolutePathName(".") + '\\'; - if (X64) { + if (TARGET_ARCH == 'x64') { PHP_OBJECT_OUT_DIR += 'x64\\'; if (!FSO.FolderExists(PHP_OBJECT_OUT_DIR)) { FSO.CreateFolder(PHP_OBJECT_OUT_DIR); } + } else if (TARGET_ARCH == 'arm64') { + PHP_OBJECT_OUT_DIR += 'arm64\\'; + if (!FSO.FolderExists(PHP_OBJECT_OUT_DIR)) { + FSO.CreateFolder(PHP_OBJECT_OUT_DIR); + } } } } @@ -3516,7 +3552,7 @@ function php_build_option_handle() if (FSO.FolderExists("..\\php_build")) { PHP_PHP_BUILD = "..\\php_build"; } else { - if (X64) { + if (TARGET_ARCH != 'x86') { if (FSO.FolderExists("..\\win64build")) { PHP_PHP_BUILD = "..\\win64build"; } else if (FSO.FolderExists("..\\php-win64-dev\\php_build")) { @@ -3678,7 +3714,7 @@ function get_clang_lib_dir() ERROR("Failed to determine clang lib path"); } - if (X64) { + if (TARGET_ARCH != 'x86') { ret = PROGRAM_FILES + "\\LLVM\\lib\\clang\\" + ver + "\\lib"; if (!FSO.FolderExists(ret)) { ret = null; @@ -3715,10 +3751,13 @@ function add_asan_opts(cflags_name, libs_name, ldflags_name) ADD_FLAG(cflags_name, "-fsanitize=address,undefined"); } if (!!libs_name) { - if (X64) { + if (TARGET_ARCH == 'x64') { ADD_FLAG(libs_name, "clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib"); - } else { + } else if (TARGET_ARCH == 'x86') { ADD_FLAG(libs_name, "clang_rt.asan_dynamic-i386.lib clang_rt.asan_dynamic_runtime_thunk-i386.lib"); + } else { + // TODO: support arm64? + ERROR("Failed to determine clang lib path"); } }