diff --git a/NEWS.md b/NEWS.md index b314a9dab..2b20bdd64 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,8 +2,35 @@ ## Unreleased +* **發佈重點**:轉換熱路徑大幅加速(純文字語料的整體轉換時間最多降至原本的 1/7),修復大端序平台載入 legacy `.ocd` 字典得到空字典的問題,並新增兩個實驗性 API(詞級候選查詢與一對多歧義標註,含 CLI `--ambiguities`)。詞庫方面修正了 `s2twp` 的數處貪婪匹配錯誤與 `tw2t`/`tw2s` 對簡體「么」的破壞性轉換,並補充臺灣/香港地區詞。C++ ABI 與 1.4.1 相同(SOVERSION 1.4),實驗性 API 皆位於未安裝的私有標頭或巨集開關之後,下游程式無需重新連結。 +* **詞庫更新**: + * 修復 `tw2t`/`tw2s`/`tw2sp` 會把已是簡體的「什么」轉成「什幺」的問題:生成的 `TWVariantsRev` 含 `么 -> 幺`(臺灣標準 `幺 -> 么` 的反向),在 `TWVariantsRevPhrases.txt` 補上「什么/怎么/这么/那么/多么/要么/好么/甚么」等例外映射至「麼」形,同時保留「老么 → 老幺」等真正的 yao1 詞([#1469](https://github.com/BYVoid/OpenCC/issues/1469), [#1473](https://github.com/BYVoid/OpenCC/pull/1473))。 + * 修復 `s2twp` 因較短詞條先命中而拆錯詞的問題:補上「互联网络」「快闪存储器」「老挝人民民主共和国」的完整詞條,並將「老撾人民民主共和國」對應到臺灣官方譯名「寮人民民主共和國」([#1467](https://github.com/BYVoid/OpenCC/issues/1467), [#1468](https://github.com/BYVoid/OpenCC/pull/1468))。 + * 「梁/樑」:新增臺灣地區用字映射與人名、地名保護詞條([#1407](https://github.com/BYVoid/OpenCC/pull/1407));並將 `TWVariantsRevPhrases` 與 `STPhrases` 對齊,補上 41 條梁(棟梁義)的反向詞組映射,使 `tw2t` 能從上下文還原「橋樑」而不誤傷姓氏、地名([#1424](https://github.com/BYVoid/OpenCC/pull/1424))。 + * 新增奧斯卡最佳導演與最佳影片製片人的臺灣/香港譯名詞條(取自中文維基百科 `NoteTA` 地區詞表並以 Wikidata 交叉核對,僅收錄真正存在音譯差異者,如 卡梅隆/卡麥隆/金馬倫)([#1466](https://github.com/BYVoid/OpenCC/pull/1466))。 + * 新增地區詞「內存條 → 記憶體模組」(`s2twp`/`s2hkp`,含反向詞條)([#1475](https://github.com/BYVoid/OpenCC/pull/1475))、「数字人文 → 數位人文」(`s2twp`/`tw2sp`)([#1465](https://github.com/BYVoid/OpenCC/pull/1465))。 + * `s2t`:「小丑」不再預設轉換為「小醜」([#1423](https://github.com/BYVoid/OpenCC/pull/1423));「雇」改為 `STCharacters` 中「僱」以外的非預設候選([#906](https://github.com/BYVoid/OpenCC/pull/906));新增「这周/那周/若干周/几周/周线 → 週」等指示與量化用法,並補上「周围/周边/周遭」的分詞保護詞條([#1428](https://github.com/BYVoid/OpenCC/pull/1428));新增顯式詞條「复盘 → 復盤」,使其不再只依賴 `复` 的候選順序([#1427](https://github.com/BYVoid/OpenCC/pull/1427))。 + * `t2s`:修正過度轉換「乾斷食 → 干断食」「乾紅 → 干红」([#621](https://github.com/BYVoid/OpenCC/issues/621), [#1429](https://github.com/BYVoid/OpenCC/pull/1429))。 + * 修正「鑒」相關詞條與若干提稱語,如「郝铭鉴 → 郝銘鑒」([#1421](https://github.com/BYVoid/OpenCC/pull/1421))。 +* **效能**: + * 轉換熱路徑跳過不可能匹配的字元區段:`PrefixMatch` 在建構時建立 key 起始字元表並提供 `SkipUnmatchable()`,讓 `Conversion::AppendConverted` 與 `MaxMatchSegmentation` 一次消化整段不可能作為詞條開頭的字元(ASCII、標點、emoji 以及不作為任何 key 開頭的漢字),取代逐字元的 trie 查詢。過濾以精確碼位而非 UTF-8 首位元組進行(`0xE4..0xE9` 這些常見漢字首位元組幾乎都有 key,按首位元組只能跳過約 10%,按碼位則有 69–76% 的位置不匹配任何 key)。22 MB 繁體語料的整體 CLI 時間(含字典載入):`t2s` 3.40s → 0.52s、`t2tw` 3.43s → 0.30s、`s2twp` 8.40s → 4.86s;4 MB 中英混合語料的 `t2s` 0.83s → 0.11s。啟動時間、最大 RSS 與缺頁次數不變,轉換輸出逐位元組不變(以對照逐字元參考實作的差分 fuzz 測試保證)([#1464](https://github.com/BYVoid/OpenCC/pull/1464))。 +* **實驗性 API / CLI**: + * 新增 librime 風格的詞級候選查詢 `Converter::GetConversionCandidates`,列舉單一詞經整條轉換鏈後的所有形式(如 `s2t` 的 `里` 展開為 `里`、`裏`)。該 API 以 `OPENCC_ENABLE_UNSTABLE_API` 巨集開關隔離,不進入已安裝標頭與 `OPENCC_ABI_VERSION` 契約;成員刻意設為非虛擬,開啟巨集不改變 `Converter` 的 vtable([#1431](https://github.com/BYVoid/OpenCC/pull/1431))。 + * 新增一對多歧義標註與 CLI `--ambiguities` 模式:轉換結果與 `Converter::Convert` 完全一致,同時標出每一個字典匹配為一對多的輸出區段(如 `STPhrases` 的 `文丑 -> 文丑 文醜`、`TSCharacters` 的 `鍾 -> 钟 锺`),呼叫方可據此定位歧義位置並按需以 `GetAllConversions` 取得候選。檔案輸入輸出 JSONL 記錄且記憶體用量有界,互動式 stdin 則逐行輸出 JSON 封包。實作位於未安裝的私有標頭,不改變已安裝標頭與 ABI,轉換熱路徑不受影響([#1461](https://github.com/BYVoid/OpenCC/pull/1461), [#1462](https://github.com/BYVoid/OpenCC/pull/1462))。 +* **`.ocd` 字典格式**: + * 修復大端序平台(s390x、ppc64、sparc64、hppa)上 legacy 64-bit `.ocd` 佈局的偵測:原本以探測位元組 [4..7] 是否為零來判斷,該寫法僅在小端序主機成立,導致大端序平台將舊檔誤判為固定寬度格式並載入為空字典。三處判斷統一改用 `LooksLikeLegacy64Field()`,以原生 `uint64_t` 讀取探測值並檢查高 32 位,在兩種位元組序下皆正確([#1471](https://github.com/BYVoid/OpenCC/issues/1471), [#1472](https://github.com/BYVoid/OpenCC/pull/1472))。 * **Node.js**: - * npm 套件的源碼編譯 fallback 從 node-gyp 改為 Bazel:原生 addon 優先透過 `@opencc/opencc--` 預編譯 scoped 套件安裝(涵蓋 macOS x64/arm64、Linux x64/arm64、Windows x64,均以 Bazel 構建,字典隨包預編譯);沒有預編譯二進位套件的平台,`npm install` 會以 Bazel 完整地從源碼構建——編譯 `//node:opencc` 並重新生成字典(`bazel` / `bazelisk` 取自 PATH,或經 `npx` 自動下載 bazelisk;字典生成腳本的 Python 由 Bazel hermetic 工具鏈提供)。`binding.gyp` 與 `.gypi` 構建定義刪除,`node-gyp`、`node-gyp-build`、`node-addon-api`、`prebuildify` 依賴與 `prebuild` npm script 一併移除;tarball 不再攜帶 `deps/`(C++ 三方依賴改由 Bazel Central Registry 提供),改為攜帶 Bazel workspace、`src/` C++ 源碼與 `data/` 字典源檔。 + * npm 套件的源碼編譯 fallback 從 node-gyp 改為 Bazel:原生 addon 優先透過 `@opencc/opencc--` 預編譯 scoped 套件安裝(涵蓋 macOS x64/arm64、Linux x64/arm64、Windows x64,均以 Bazel 構建,字典隨包預編譯);沒有預編譯二進位套件的平台,`npm install` 會以 Bazel 完整地從源碼構建——編譯 `//node:opencc` 並重新生成字典(`bazel` / `bazelisk` 取自 PATH,或經 `npx` 自動下載 bazelisk;字典生成腳本的 Python 由 Bazel hermetic 工具鏈提供)。`binding.gyp` 與 `.gypi` 構建定義刪除,`node-gyp`、`node-gyp-build`、`node-addon-api`、`prebuildify` 依賴與 `prebuild` npm script 一併移除;tarball 不再攜帶 `deps/`(C++ 三方依賴改由 Bazel Central Registry 提供),改為攜帶 Bazel workspace、`src/` C++ 源碼與 `data/` 字典源檔([#1426](https://github.com/BYVoid/OpenCC/pull/1426), [#1430](https://github.com/BYVoid/OpenCC/pull/1430))。 + * CI 測試任務、Makefile target 與源碼 checkout 的開發構建一併改用 Bazel,與 npm 發佈所用的構建路徑一致;Windows CI 任務移至 `windows-2025-vs2026`([#1426](https://github.com/BYVoid/OpenCC/pull/1426))。 +* **打包 / 構建系統**: + * `packaging/debian/` 同步至 Debian 的 `1.4.1+ds1-7`。Debian 已採納上游先前提出的兩項提案:jieba 插件打包(拆為 `opencc-jieba` 與 arch:all 的 `opencc-jieba-data` 兩個套件,內嵌 cppjieba 的理由記於 `debian/README.source`)與 `*.ocd2` 移入 `libopencc-data`;Debian 端亦重新啟用了 autopkgtest。`packaging/debian/SPLIT_PROPOSAL.md` 隨提案落地移除。 + * Debian 套件構建改在 `debian:sid` 容器中進行(同步來的打包以 unstable 為目標,Ubuntu LTS runner 無法滿足),並在 `dpkg-buildpackage` 前套用 `debian/patches` quilt series(自動跳過已在樹中的補丁);arm64 改用 `ubuntu-24.04-arm` runner 原生構建,取代先前的交叉構建([#1420](https://github.com/BYVoid/OpenCC/pull/1420))。 + * 新增 `packaging/freebsd/`:FreeBSD ports tree `chinese/opencc` 條目的參考副本,供上游審閱與準備提交給 port maintainer 的改動。 + * 新增精簡 C++ 源碼包發佈流程(`release-source.yml`):以 `OPENCC_SOURCE_PACKAGE_PROFILE=opencc` 產生僅含 C++ 核心的 CPack 壓縮包(不含 Node.js、Python、文檔、packaging 與 plugins),並以 CMake 與 Bazel 雙路徑冒煙測試後上傳至 draft release;為此保留 Bazel workspace 檔案與頂層 `patches/`,僅排除可能含 API key 的 `.bazelrc.user`。 + * 修正 `cmake/GitVersion.cmake` 的 fallback 版本號:1.4.1 發佈時仍停留在 1.4.0,導致從釋出的 tarball(無 git 資訊)構建時版本回報為 1.4.0。 + * Windows 發佈簽章改用 SignPath 的 release-signing policy,並新增對 win32-x64 npm 二進位(`opencc.node`、`opencc-jieba.dll`)的 Authenticode 簽章([#1458](https://github.com/BYVoid/OpenCC/pull/1458), [#1459](https://github.com/BYVoid/OpenCC/pull/1459))。 +* **測試**: + * `PrefixMatchTest` 改用測試專屬的字典檔名,避免與 `MarisaDictTest` 在共享工作目錄下爭用同一個 `dict.ocd2`,該競爭會使並行 ctest(如 `dh_auto_test` 的 `ctest -j8`)偶發失敗。 ## Version 1.4.1 diff --git a/packaging/debian/README.md b/packaging/debian/README.md index 0b9df613f..331560917 100644 --- a/packaging/debian/README.md +++ b/packaging/debian/README.md @@ -11,23 +11,28 @@ To keep proposals reviewable as deltas, `debian/` here is periodically synced to the packaging Debian currently ships: - Upstream: BYVoid/OpenCC `ver.1.4.1` -- Debian source package: `opencc 1.4.1+ds1-1~exp1` (experimental) +- Debian source package: `opencc 1.4.1+ds1-7` (unstable) - Debian packaging repository: https://salsa.debian.org/debian/opencc - Patch reference index: https://udd.debian.org/patches.cgi?src=opencc -On top of that baseline, upstream proposals not (yet) adopted by Debian -are applied as deltas. Currently: - -- **`opencc-jieba` binary package** (see `SPLIT_PROPOSAL.md`): the - `debian/control` stanza, `-DBUILD_OPENCC_JIEBA_PLUGIN=ON` in - `debian/rules`, and `debian/opencc-jieba.install`. -- **`*.ocd2` dictionaries moved into `libopencc-data`**: Debian - currently ships them in the `Architecture: any` `libopencc1.4` - package; this tree moves them to the arch-independent data package - (`libopencc-data.install` / `libopencc1.4.install`) so multi-arch - installs do not duplicate dictionary data per architecture. +As of this sync there are **no outstanding upstream deltas**: `debian/` +is a verbatim copy of the Debian packaging repository. The two proposals +previously carried here have been adopted, with implementation changes: + +- **Jieba plugin packaging** (Debian bug + [#1141451](https://bugs.debian.org/1141451)): adopted in + `1.4.1+ds1-5`, but split into two binary packages instead of the + single `Architecture: any` package upstream proposed — + `opencc-jieba` (arch:any, the plugin) and `opencc-jieba-data` + (arch:all, the merged Jieba dictionary and `*_jieba.json` configs). + The bundled `cppjieba` question is documented in + `debian/README.source` rather than treated as a blocker. +- **`*.ocd2` dictionaries in `libopencc-data`**: adopted in + `1.4.1+ds1-4`. `debian/libopencc-data.install` now lists the non-Jieba + configurations explicitly instead of globbing `usr/share/opencc/*.json`, + which would otherwise also capture the `*_jieba.json` files. ## 2. Patch set @@ -39,9 +44,11 @@ Current quilt patch set (see `debian/patches/series`): - 0009-setup.py-Handle-python-binding-instead-of-cmake.patch - 0010-fix-git-version-fallback.patch - 0011-drop-python-cli-entry-point.patch +- 0012-fix-legacy-dict-detection-on-big-endian.patch Patch numbering reflects historical Debian quilt ordering and is not -contiguous. +contiguous. 0012 is `Applied-Upstream` (commit `8aeb5e69`) and can be +dropped once Debian moves to a release containing it. ## 3. Binary packages (in this tree) @@ -50,16 +57,24 @@ contiguous. renamed from `libopencc1.3`, with a regenerated `.symbols` file) - `libopencc-dev` — headers, pkg-config, CMake package config - `libopencc-data` — JSON configs and `*.ocd2` dictionaries - (arch-independent; the `*.ocd2` placement is an upstream proposal — - Debian currently ships them in `libopencc1.4`) + (arch-independent) - `libopencc-doc` — Doxygen HTML API docs - `python3-opencc` — Python bindings built via pybuild/pyproject -- `opencc-jieba` — Jieba segmentation plugin, merged Jieba dictionary, - and `*_jieba.json` configs (upstream proposal, not shipped by Debian; - blocked on the `cppjieba` bundling question — see `SPLIT_PROPOSAL.md`) +- `opencc-jieba` — Jieba segmentation plugin (`libopencc-jieba.so`) +- `opencc-jieba-data` — merged Jieba dictionary and `*_jieba.json` + configurations (arch-independent) ## 4. Notes on the current packaging +The runtime package name tracks `OPENCC_ABI_VERSION` from +`CMakeLists.txt`, so an ABI-incompatible change to the public C++ +interface means both a version bump upstream and a rename of +`libopencc1.4` here. `libopencc-dev` depends on `libopencc-data`, not +just on `libopencc1.4`, because the installed `OpenCCConfig.cmake` bakes +in `DIR_SHARE_OPENCC`; it is deliberately *not* `Multi-Arch: same`, +since those generated CMake files embed the architecture triplet and so +are not byte-identical across architectures. + Several historical Debian patches correspond to functionality now covered by upstream CMake options (e.g. `USE_SYSTEM_*`); `debian/rules` builds with those options against Debian-packaged libraries. The exception is @@ -70,10 +85,21 @@ google/sentencepiece hardening, added upstream in 1.4.0). Debian has no darts-clone package at all — its `darts` package is a different upstream (Taku Kudo's Darts) — so building against a system header is not possible, and `deps/darts-clone-*` is no longer stripped from the +ds1 -tarball. +tarball. `plugins/jieba/deps/cppjieba` stays bundled for the reasons +spelled out in `debian/README.source`. + +Autopkgtest was re-enabled in `1.4.1+ds1-7`: `debian/tests/control` now +runs `cli-smoke` (installed CLI checks), `integration` (the forked +`CommandLineConvertTest` built against `libopencc-dev` and run over +`test/testcases/testcases.json`), and `jieba-plugin` (plugin loading and +`*_jieba.json` conversions). The forked test reads configurations from +`/usr/share/opencc` and passes `--include-tofu-risk-dictionaries`, so +changes to `test/testcases/testcases.json` or to the CLI's config +resolution can break it — see `debian/tests/README.md`. ## 5. Refreshing the baseline Copy the `debian/` directory from the salsa repository checkout over -`packaging/debian/debian/`, re-apply the upstream proposal deltas listed -in section 1, and update the baseline section above. +`packaging/debian/debian/`, re-apply any upstream proposal deltas that +Debian has not adopted (currently none), and update the baseline section +above. diff --git a/packaging/debian/SPLIT_PROPOSAL.md b/packaging/debian/SPLIT_PROPOSAL.md deleted file mode 100644 index 2b9171c9d..000000000 --- a/packaging/debian/SPLIT_PROPOSAL.md +++ /dev/null @@ -1,143 +0,0 @@ -# Proposed Debian binary package split for opencc 1.4.x - -> **Status (2026-08): partially adopted by Debian.** This document is an -> upstream proposal; adoption is entirely up to the Debian maintainers. -> The Debian packaging now used as the baseline in -> `packaging/debian/debian/` (source package `1.4.1+ds1-1~exp1`) has -> since adopted the `libopencc1.3` → `libopencc1.4` rename with a proper -> `.symbols` file, and additionally ships a `python3-opencc` binary -> package built via pybuild. The proposed `opencc-jieba` package was not -> adopted (the `cppjieba` bundling blocker below still stands). On -> darts-clone, the claim below that "there is no `USE_SYSTEM_DARTS` -> option" is outdated: upstream added that option, but the Debian -> packaging must keep it `OFF` — `src/DartsDict.cpp` calls `validate()`, -> which only exists in the vendored `deps/darts-clone-0.32h` header -> (v0.32h plus sentencepiece hardening, added upstream in 1.4.0), and -> Debian ships no darts-clone package (its `darts` package is a -> different upstream). The `opencc-jieba` section below remains an -> active upstream proposal for a future upload and is applied as a -> delta in this directory (`debian/control` stanza, `debian/rules` -> plugin flag, `debian/opencc-jieba.install`), together with moving the -> `*.ocd2` dictionaries into `libopencc-data` as proposed in the table -> below. `debian/README.source`, referenced below, was removed when the -> baseline was resynced to the Debian packaging repository. - -This is a proposal from upstream, not a Debian upload. It was produced by -overlaying the top-level `debian/` directory onto a clean checkout of -upstream `BYVoid/OpenCC` at `master` (1.4.1) and actually running -`dpkg-buildpackage -us -uc -b` there, on Ubuntu 24.04 with debhelper -13.14. All six binary packages built, `dh_missing --fail-missing` found -nothing unclaimed, `ctest` passed 19/19, and `lintian --pedantic` -reported no errors (only expected first-upload and missing-manpage -warnings). See `debian/README.source` for the gaps this recreation still -has before it would be upload-ready. - -## Why keep the existing 5-package split - -Debian's `opencc` source package already ships five binary packages -(`opencc`, `libopencc1.1`, `libopencc-dev`, `libopencc-data`, -`libopencc-doc`); see `https://tracker.debian.org/pkg/opencc`. That split -already follows Debian's standard shared-library layout, so this proposal -keeps it as-is rather than inventing a new scheme, with one change: the -runtime package name tracks `OPENCC_ABI_VERSION` from `CMakeLists.txt`, -which is `1.4` as of this release (`libopencc1.1` -> `libopencc1.4`). -`OPENCC_ABI_VERSION` (and therefore this package name) must be bumped -again any time a change modifies the public C++ interface in an -ABI-incompatible way — this includes changes to installed headers under -`include/opencc/`, exported virtual interfaces, class layout, -constructor/destructor signatures, inline public methods, or any other -public symbol that downstream C++ consumers may have compiled against. - -| Package | Arch | Section | Contents | -|---|---|---|---| -| `opencc` | any | utils | `opencc`, `opencc_dict`, `opencc_phrase_extract` CLI binaries | -| `libopencc1.4` | any | libs | `libopencc.so.1.4*` runtime only | -| `libopencc-dev` | any | libdevel | headers, unversioned `.so` symlink, `opencc.pc`, CMake package config | -| `libopencc-data` | all, Multi-Arch: foreign | libs | `*.ocd2` dictionaries and the non-Jieba `*.json` configs | -| `libopencc-doc` | all | doc | Doxygen HTML API docs | - -Rationale, matching what the install-rule inventory in CMake already -implies (see the file-by-file mapping validated in -`packaging/debian/debian/*.install`): - -- `libopencc-data` is `Architecture: all` and `Multi-Arch: foreign` - because dictionaries and JSON configs are architecture-independent; - splitting them out means a multi-arch install (e.g. `:i386` alongside - `:amd64`) does not duplicate ~5 MB of dictionary data per architecture. -- `libopencc-dev` depends on `libopencc-data` (not just `libopencc1.4`) - because `OpenCCConfig.cmake` bakes in `DIR_SHARE_OPENCC`, so a - from-source consumer of the CMake package config needs the data - present at configure/link time too, matching upstream's own - `PATH_VARS DIR_INCLUDE DIR_PLUGIN DIR_SHARE_OPENCC` in `CMakeLists.txt`. -- Not proposing `Multi-Arch: same` for `libopencc-dev`: the installed - `OpenCCConfig.cmake` / `OpenCCTargets.cmake` files embed the - architecture triplet in `DIR_LIBRARY`-derived paths, so they are not - byte-identical across architectures. Marking it `Multi-Arch: same` - would violate Debian Policy's co-installability requirement unless - those generated files are made architecture-independent first - (out of scope here). - -## Proposed new package: `opencc-jieba` - -Debian does not currently package the Jieba segmentation plugin -(`plugins/jieba`) at all — it isn't listed in the existing source -package. This proposal adds it as a sixth binary package, matching the -name already used by this repository's own `scripts/build-deb-packages.sh` -release artifact for continuity: - -| Package | Arch | Section | Contents | -|---|---|---|---| -| `opencc-jieba` | any | utils | `libopencc-jieba.so` plugin, merged Jieba `.ocd2`, `*_jieba.json` configs | - -Depends: `opencc (= ${binary:Version})`, `libopencc-data (>= ${source:Version})`. - -The merged Jieba dictionary (`jieba_dict/jieba_merged.ocd2`) is generated -at build time by upstream's own `opencc_dict` tool -(`--from cppjieba_utf8`), which is built in-tree during the package build -and already shipped in the `opencc` binary package; no additional -dictionary tool is built or shipped. - -Known blocker for a real Debian upload: `plugins/jieba/deps/cppjieba` is -a header-only C++ library with **no existing Debian package** to build -against, so `opencc-jieba` would have to bundle it (see the -`debian/copyright` entry for the license and rationale). Two paths -forward, in order of preference: - -1. Someone packages `cppjieba` for Debian first (it is small and - header-only, so this is plausible), and `opencc-jieba`'s - build-dependency becomes `libcppjieba-dev` instead of a bundled copy. -2. `opencc-jieba` ships with the bundled copy and goes through Debian's - embedded-code-copy review during upload (`Files-Excluded` does not - apply here since there is no external package to fall back to). - -## What the `debian/rules` in this proposal actually builds - -`-DUSE_SYSTEM_MARISA=ON -DUSE_SYSTEM_RAPIDJSON=ON -DUSE_SYSTEM_TCLAP=ON --DUSE_SYSTEM_GTEST=ON -DBUILD_PYTHON=OFF -DBUILD_DOCUMENTATION=ON --DBUILD_OPENCC_JIEBA_PLUGIN=ON`, i.e. every bundled `deps/` copy that has -an upstream `USE_SYSTEM_*` toggle is switched off in favor of the -Debian-packaged library (`libmarisa-dev`, `rapidjson-dev`, -`libtclap-dev`, `googletest`/`libgtest-dev`). `deps/darts-clone-0.32h` -has no such toggle (Darts support is always compiled in; there is no -`USE_SYSTEM_DARTS` option) and stays bundled — same situation as -`cppjieba` above, but lower risk since darts-clone is tiny and already -used this way by the real Debian package's patch queue history. - -Python bindings (`setup.py`, `python/opencc`) are intentionally left out -of this proposal: Debian does not currently ship a `python3-opencc` -binary from the `opencc` source package either (the module is -PyPI-only), and `packaging/debian/patches/0005` and `0009` exist to keep -`setup.py`-based builds (used by pip/PyPI, not by this `debian/rules`) -working when CMake's own build is disabled — see those patches' -descriptions. - -## Suggested next steps for whoever picks this up on the Debian side - -1. Decide on the `cppjieba` bundling question above before adding - `opencc-jieba` to an actual upload. -2. Add a `debian/libopencc1.4.symbols` file for finer-grained - `${shlibs:Depends}` versioning (this recreation relies on the - auto-generated shlibs file only). -3. Add man pages for `opencc`, `opencc_dict`, and `opencc_phrase_extract` - (flagged by `lintian --pedantic` as `no-manual-page`; not currently - shipped anywhere in this repository). diff --git a/packaging/debian/debian/README.source b/packaging/debian/debian/README.source new file mode 100644 index 000000000..2d9404625 --- /dev/null +++ b/packaging/debian/debian/README.source @@ -0,0 +1,38 @@ +Embedded copy of cppjieba +========================= + +The Jieba segmentation plugin (binary packages opencc-jieba and +opencc-jieba-data, built from plugins/jieba) is compiled against the +copy of cppjieba embedded at plugins/jieba/deps/cppjieba, rather than +against a system-wide cppjieba. There is currently no cppjieba package +in Debian; see also https://bugs.debian.org/1141451 for the upstream +proposal that introduced these binary packages. + +Packaging cppjieba on its own would not be sufficient to drop the +embedded copy. The embedded tree is not a pristine copy of upstream +cppjieba: it carries a local fork adding a DictTrie::PrecomputedDict +struct, a matching DictTrie constructor and Init() overload, and a +corresponding cppjieba::Jieba constructor. That API lets the plugin hand +cppjieba an already-parsed marisa-backed dictionary (the generated +jieba_dict/jieba_merged.ocd2) instead of re-parsing several megabytes of +text at every startup, and it is used unconditionally from +plugins/jieba/src/JiebaSegmentation.cpp. None of it exists in upstream +cppjieba, and it cannot be supplied from outside the library because it +writes DictTrie members that are private. + +De-vendoring therefore needs, in order: + + 1. DictTrie::PrecomputedDict (or an equivalent way of constructing a + DictTrie from an in-memory dictionary) accepted into upstream + cppjieba, https://github.com/yanyiwu/cppjieba + 2. a cppjieba source package in Debian, new enough to carry it + 3. a USE_SYSTEM_CPPJIEBA option in OpenCC, matching the existing + USE_SYSTEM_{DARTS,GTEST,MARISA,PYBIND11,RAPIDJSON,TCLAP} options; + plugins/jieba/CMakeLists.txt currently hardcodes the include path to + deps/cppjieba/include in two places + +Until then the embedded copy is built and shipped. It is covered by the +"Files: plugins/jieba/deps/cppjieba/*" stanza in debian/copyright. Note +that a security update to cppjieba would require rebuilding opencc. + + -- Boyuan Yang , Wed, 12 Aug 2026 11:04:33 -0400 diff --git a/packaging/debian/debian/TODO b/packaging/debian/debian/TODO index 202e6b7b5..a2899b0cd 100644 --- a/packaging/debian/debian/TODO +++ b/packaging/debian/debian/TODO @@ -1,2 +1 @@ -* We need to re-enable autopkgtest with updated opencc 1.2.0+ src. * We need to pack nodejs module provided by opencc when possible. diff --git a/packaging/debian/debian/changelog b/packaging/debian/debian/changelog index 741b1c2eb..f6d9d6e18 100644 --- a/packaging/debian/debian/changelog +++ b/packaging/debian/debian/changelog @@ -1,3 +1,108 @@ +opencc (1.4.1+ds1-7) unstable; urgency=medium + + * Team upload. + * debian/tests/: Re-enable autopkgtest (debian/TODO item): + - debian/tests/control: Restore from control.disabled, with the + integration test plus new cli-smoke and jieba-plugin tests. + - debian/tests/CommandLineConvertTest.cpp: Parse testcases.json with + rapidjson comment/trailing-comma flags like the upstream test, + read the testcases from the top-level source tree, use the + installed configurations in /usr/share/opencc, and pass + --include-tofu-risk-dictionaries as the upstream test does (the + testcases are written against those conversions). + - debian/tests/CMakeLists.txt: Add the top-level source tree to the + include path for src/Common.hpp, and require C++17. + - debian/tests/integration: Build out-of-tree in AUTOPKGTEST_TMP and + stop masking test failures (previously "make test || true"). + - debian/tests/cli-smoke: New quick checks of the installed CLI. + - debian/tests/jieba-plugin: New checks that the Jieba plugin loads + and the *_jieba.json configurations work. + + -- Frank Lin Wed, 12 Aug 2026 12:30:00 -0700 + +opencc (1.4.1+ds1-6) unstable; urgency=medium + + * debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch: + Stop setting ext.runtime_library_dirs. It baked the build directory + into the DT_RUNPATH of the python extension; deleting that entry with + chrpath afterwards still left the build path string behind in .dynstr + (lintian: file-references-package-build-path). Only -L is needed at + link time, and the installed extension finds libopencc.so.1.4 through + the regular linker search path. + * debian/rules: Drop the now unneeded chrpath call, and set + LD_LIBRARY_PATH for the pybuild test run so the freshly built + libopencc is still picked up without an RPATH. + * debian/control: Drop the chrpath build dependency accordingly. + * debian/control: Let opencc suggests opencc-jieba package, and let + opencc-jieba declare Enhances: opencc. + + -- Boyuan Yang Wed, 12 Aug 2026 14:18:45 -0400 + +opencc (1.4.1+ds1-5) unstable; urgency=medium + + * debian/rules: Build with -DBUILD_OPENCC_JIEBA_PLUGIN=ON to enable the + Jieba word segmentation plugin, as proposed by upstream. + (Closes: #1141451) + * debian/control: Add new binary packages opencc-jieba (arch:any, the + plugin itself) and opencc-jieba-data (arch:all, the merged Jieba + dictionary and the *_jieba.json configurations). Upstream proposed a + single arch:any package, but the dictionary data is architecture- + independent and is split out for the same reason as the .ocd2 files + in 1.4.1+ds1-4. + * debian/opencc-jieba.install, debian/opencc-jieba-data.install: + New files. + * debian/libopencc-data.install: List the non-Jieba configurations + explicitly instead of globbing usr/share/opencc/*.json, which would + otherwise also match the *_jieba.json files. + * debian/README.source: New file, documenting why the embedded copy of + cppjieba cannot currently be replaced with a system library. + * debian/patches/0012-fix-legacy-dict-detection-on-big-endian.patch: + Add Applied-Upstream metatdata. + + -- Boyuan Yang Wed, 12 Aug 2026 12:01:45 -0400 + +opencc (1.4.1+ds1-4) unstable; urgency=medium + + * debian/*.install: Move the architecture-independent .ocd2 files + from the libopencc arch:any package to libopencc-data arch:all package. + + -- Boyuan Yang Wed, 12 Aug 2026 10:05:58 -0400 + +opencc (1.4.1+ds1-3) unstable; urgency=medium + + * debian/control: Bump version requirement for marisa in order to + fix the build reproducibility problem in ocd2 files. + + -- Boyuan Yang Thu, 06 Aug 2026 10:43:10 -0400 + +opencc (1.4.1+ds1-2) unstable; urgency=medium + + * debian/libopencc1.4.symbols: Reconfirm symbols. + + -- Boyuan Yang Wed, 05 Aug 2026 15:04:16 -0400 + +opencc (1.4.1+ds1-1) unstable; urgency=medium + + * Upload to unstable. + + -- Boyuan Yang Wed, 05 Aug 2026 13:42:49 -0400 + +opencc (1.4.1+ds1-1~exp3) experimental; urgency=medium + + * d/patches: Replace 0012-fix-legacy-dict-detection-on-big-endian.patch + with the proposed upstream fix from + https://github.com/BYVoid/OpenCC/pull/1472 (upstream bug #1471). + + -- Boyuan Yang Tue, 04 Aug 2026 16:18:35 -0400 + +opencc (1.4.1+ds1-1~exp2) experimental; urgency=medium + + * d/patches: Add 0012-fix-legacy-dict-detection-on-big-endian.patch to + fix the FTBFS on big-endian architectures (s390x, powerpc, ppc64, + sparc64, hppa). + + -- Boyuan Yang Tue, 04 Aug 2026 13:36:34 -0400 + opencc (1.4.1+ds1-1~exp1) experimental; urgency=medium * debian/control: Bump debhelper compat to v14. diff --git a/packaging/debian/debian/control b/packaging/debian/debian/control index 7d9d26fb5..81ed1610f 100644 --- a/packaging/debian/debian/control +++ b/packaging/debian/debian/control @@ -12,13 +12,12 @@ Uploaders: Section: libs Testsuite: autopkgtest-pkg-pybuild Build-Depends: - chrpath, cmake, debhelper-compat (= 14), dh-sequence-python3, doxygen , googletest , - libmarisa-dev (>> 0.3), + libmarisa-dev (>= 0.3.1), libtclap-dev, opencc , dh-sequence-pkgkde-symbolshelper, @@ -95,6 +94,7 @@ Section: utils Depends: libopencc1.4 (= ${binary:Version}), Suggests: + opencc-jieba, libopencc-doc, Description: simplified-traditional Chinese conversion tool ${source:Extended-Description} @@ -103,17 +103,28 @@ Description: simplified-traditional Chinese conversion tool Package: opencc-jieba Architecture: any -Multi-Arch: foreign Section: utils Depends: opencc (= ${binary:Version}), + opencc-jieba-data (= ${source:Version}), +Enhances: + opencc, Description: ${source:Synopsis} - Jieba segmentation plugin ${source:Extended-Description} . This package provides the optional Jieba-based word segmentation plugin - (libopencc-jieba.so) with the merged Jieba dictionary and the - *_jieba.json configurations that enable word-segmentation-aware - regional phrase conversion. + (libopencc-jieba.so) that enables word-segmentation-aware regional phrase + conversion. + +Package: opencc-jieba-data +Architecture: all +Multi-Arch: foreign +Section: utils +Description: ${source:Synopsis} - Jieba plugin data files + ${source:Extended-Description} + . + This package provides the merged Jieba dictionary and the *_jieba.json + configurations used by the Jieba-based word segmentation plugin. Package: python3-opencc Architecture: any diff --git a/packaging/debian/debian/libopencc1.4.symbols b/packaging/debian/debian/libopencc1.4.symbols index 41143ad3c..2a7ce3a4a 100644 --- a/packaging/debian/debian/libopencc1.4.symbols +++ b/packaging/debian/debian/libopencc1.4.symbols @@ -1,55 +1,81 @@ -# SymbolsHelper-Confirmed: 1.4.1+ds1-1 amd64 i386 +# SymbolsHelper-Confirmed: 1.4.1 armhf riscv64 libopencc.so.1.4 libopencc1.4 #MINVER# * Build-Depends-Package: libopencc-dev + (regex)"^_ZN6opencc10BinaryDict13NewFromBufferEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZN6opencc10MarisaDict13NewFromBufferEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZN6opencc16ResourceProvider8ResourceC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc[mj]St10shared_ptrIKvES7_@Base$" 1.4.1 + (regex)"^_ZN6opencc16ResourceProvider8ResourceC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc[mj]St10shared_ptrIKvES7_@Base$" 1.4.1 + (regex)"^_ZN6opencc16SerializedValues13NewFromBufferEPKc[mj]P[mj]@Base$" 1.3.1 + (regex)"^_ZN6opencc7Lexicon22ParseLexiconFromBufferEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZN6opencc8TextDict13NewFromBufferEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZN6opencc9DartsDict13NewFromBufferEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc10BinaryDict15ConstructBufferERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI[mj]SaI[mj]EER[mj]S7_SB_SC_@Base$" 1.4.1 + (regex)"^_ZNK6opencc10MarisaDict11MatchPrefixEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc10MarisaDict16MatchAllPrefixesEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc10MarisaDict16MatchPrefixValueEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc10MarisaDict5MatchEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc11PrefixMatch11MatchPrefixEPKc[mj]@Base$" 1.3.1 + (regex)"^_ZNK6opencc11PrefixMatch15MatchPrefixViewEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc13PhraseExtract16CalculateEntropyERKSt13unordered_mapINS_19UTF8StringSliceBaseIhEE[mj]NS3_6HasherESt8equal_toIS3_ESaISt4pairIKS3_[mj]EEE@Base$" 1.4.1 + (regex)"^_ZNK6opencc14UnionDictGroup11MatchPrefixEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc15SimpleConverter7ConvertB5cxx11EPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc15SimpleConverter7ConvertEPKc[mj]Pc@Base$" 1.4.1 + (regex)"^_ZNK6opencc4Dict11MatchPrefixEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc4Dict16MatchAllPrefixesEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc8TextDict5MatchEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc9DartsDict11MatchPrefixEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc9DartsDict16MatchPrefixValueEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc9DartsDict5MatchEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc9DictGroup11MatchPrefixEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc9DictGroup16MatchAllPrefixesEPKc[mj]@Base$" 1.4.1 + (regex)"^_ZNK6opencc9DictGroup5MatchEPKc[mj]@Base$" 1.4.1 _Z11ConvertDictRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrIN6opencc4DictEE@Base 1.2.0 - _Z12BuildMatcherRKSt10shared_ptrIN6opencc4DictEE@Base 1.4.1+ds1 + _Z12BuildMatcherRKSt10shared_ptrIN6opencc4DictEE@Base 1.4.1 _Z14LoadDictionaryRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_@Base 1.2.0 - _Z17CanFlattenAsUnionRKSt10shared_ptrIN6opencc4DictEE@Base 1.4.1+ds1 - _Z19CollectAllLeafDictsRKSt10shared_ptrIN6opencc4DictEEP11LeafMatcher@Base 1.4.1+ds1 + _Z17CanFlattenAsUnionRKSt10shared_ptrIN6opencc4DictEE@Base 1.4.1 + _Z19CollectAllLeafDictsRKSt10shared_ptrIN6opencc4DictEEP11LeafMatcher@Base 1.4.1 _Z20opencc_open_internalPKc@Base 1.2.0 - _ZGVZN9rapidjson21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES5_E15HandleRefSchemaERKNS_14GenericPointerIS7_S5_EEPPKNS_8internal6SchemaIS8_EERKS7_SK_E9kRefValue@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE11GetTypelessEvE8typeless@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE12GetNotStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetEnumStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetNullStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetTypeStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAllOfStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAnyOfStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetArrayStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetItemsStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetOneOfStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetNumberStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetObjectStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetStringStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetBooleanStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetIntegerStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMaximumStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMinimumStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetPatternStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMaxItemsStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMinItemsStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetRequiredStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMaxLengthStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMinLengthStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetMultipleOfStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE20GetUniqueItemsStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE21GetDependenciesStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMaxPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMinPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE24GetAdditionalItemsStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMaximumStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMinimumStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE26GetPatternPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE29GetAdditionalPropertiesStringEvE1v@Base 1.4.1+ds1 + _ZGVZN9rapidjson21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES5_E15HandleRefSchemaERKNS_14GenericPointerIS7_S5_EEPPKNS_8internal6SchemaIS8_EERKS7_SK_E9kRefValue@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE11GetTypelessEvE8typeless@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE12GetNotStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetEnumStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetNullStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetTypeStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAllOfStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAnyOfStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetArrayStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetItemsStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetOneOfStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetNumberStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetObjectStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetStringStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetBooleanStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetIntegerStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMaximumStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMinimumStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetPatternStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMaxItemsStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMinItemsStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetRequiredStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMaxLengthStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMinLengthStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetMultipleOfStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetPropertiesStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE20GetUniqueItemsStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE21GetDependenciesStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMaxPropertiesStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMinPropertiesStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE24GetAdditionalItemsStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMaximumStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMinimumStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE26GetPatternPropertiesStringEvE1v@Base 1.4.1 + _ZGVZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE29GetAdditionalPropertiesStringEvE1v@Base 1.4.1 _ZN6opencc10BinaryDict11NewFromFileEP8_IO_FILE@Base 1.2.0 - (regex)"^_ZN6opencc10BinaryDict13NewFromBufferEPKc[mj]@Base$" 1.4.1+ds1 _ZN6opencc10ConversionC1ESt10shared_ptrINS_4DictEE@Base 1.3.1 _ZN6opencc10ConversionC2ESt10shared_ptrINS_4DictEE@Base 1.3.1 _ZN6opencc10MarisaDict11NewFromDictERKNS_4DictE@Base 1.2.0 _ZN6opencc10MarisaDict11NewFromFileEP8_IO_FILE@Base 1.2.0 - (regex)"^_ZN6opencc10MarisaDict13NewFromBufferEPKc[mj]@Base$" 1.4.1+ds1 - _ZN6opencc10MarisaDict20LoadFromMappedBufferEv@Base 1.4.1+ds1 + _ZN6opencc10MarisaDict20LoadFromMappedBufferEv@Base 1.4.1 _ZN6opencc10MarisaDictC1Ev@Base 1.2.0 _ZN6opencc10MarisaDictC2Ev@Base 1.2.0 _ZN6opencc10MarisaDictD0Ev@Base 1.2.0 @@ -77,74 +103,69 @@ libopencc.so.1.4 libopencc1.4 #MINVER# _ZN6opencc13PhraseExtractD0Ev@Base 1.2.0 _ZN6opencc13PhraseExtractD1Ev@Base 1.2.0 _ZN6opencc13PhraseExtractD2Ev@Base 1.2.0 - _ZN6opencc14UnionDictGroupC1ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.4.1+ds1 - _ZN6opencc14UnionDictGroupC2ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.4.1+ds1 + _ZN6opencc14UnionDictGroupC1ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.4.1 + _ZN6opencc14UnionDictGroupC2ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.4.1 _ZN6opencc15ConversionChainC1ENSt7__cxx114listISt10shared_ptrINS_10ConversionEESaIS5_EEE@Base 1.2.0 _ZN6opencc15ConversionChainC2ENSt7__cxx114listISt10shared_ptrINS_10ConversionEESaIS5_EEE@Base 1.2.0 - _ZN6opencc15ConverterStream12ConvertChunkB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZN6opencc15ConverterStream6FinishB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZN6opencc15ConverterStream6FinishB5cxx11Ev@Base 1.4.1+ds1 + _ZN6opencc15ConverterStream12ConvertChunkB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZN6opencc15ConverterStream6FinishB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZN6opencc15ConverterStream6FinishB5cxx11Ev@Base 1.4.1 _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.2.0 - _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 + _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_17ConfigLoadOptionsE@Base 1.4.1 _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EE@Base 1.2.0 _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKc@Base 1.2.0 - _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKcRKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 - _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 - _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1+ds1 - _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 + _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKcRKNS_17ConfigLoadOptionsE@Base 1.4.1 + _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EERKNS_17ConfigLoadOptionsE@Base 1.4.1 + _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1 + _ZN6opencc15SimpleConverterC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1 _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.2.0 - _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 + _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_17ConfigLoadOptionsE@Base 1.4.1 _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EE@Base 1.2.0 _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKc@Base 1.2.0 - _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKcRKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 - _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 - _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1+ds1 - _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 + _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKcRKNS_17ConfigLoadOptionsE@Base 1.4.1 + _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EERKNS_17ConfigLoadOptionsE@Base 1.4.1 + _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1 + _ZN6opencc15SimpleConverterC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1 _ZN6opencc15SimpleConverterD1Ev@Base 1.2.0 _ZN6opencc15SimpleConverterD2Ev@Base 1.2.0 - (regex)"^_ZN6opencc16ResourceProvider8ResourceC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc[mj]St10shared_ptrIKvES7_@Base$" 1.4.1+ds1 - (regex)"^_ZN6opencc16ResourceProvider8ResourceC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc[mj]St10shared_ptrIKvES7_@Base$" 1.4.1+ds1 _ZN6opencc16SerializedValues11NewFromFileEP8_IO_FILE@Base 1.2.0 - (regex)"^_ZN6opencc16SerializedValues13NewFromBufferEPKc[mj]P[mj]@Base$" 1.3.1 _ZN6opencc17ConvertDictionaryERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_S7_S7_@Base 1.2.0 - _ZN6opencc17ConvertDictionaryERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EERKS6_SC_SC_@Base 1.4.1+ds1 - _ZN6opencc19ZipResourceProvider8Internal5IndexEv@Base 1.4.1+ds1 - _ZN6opencc19ZipResourceProviderC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.4.1+ds1 - _ZN6opencc19ZipResourceProviderC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.4.1+ds1 - _ZN6opencc19ZipResourceProviderD0Ev@Base 1.4.1+ds1 - _ZN6opencc19ZipResourceProviderD1Ev@Base 1.4.1+ds1 - _ZN6opencc19ZipResourceProviderD2Ev@Base 1.4.1+ds1 + _ZN6opencc17ConvertDictionaryERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EERKS6_SC_SC_@Base 1.4.1 + _ZN6opencc19ZipResourceProvider8Internal5IndexEv@Base 1.4.1 + _ZN6opencc19ZipResourceProviderC1ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.4.1 + _ZN6opencc19ZipResourceProviderC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.4.1 + _ZN6opencc19ZipResourceProviderD0Ev@Base 1.4.1 + _ZN6opencc19ZipResourceProviderD1Ev@Base 1.4.1 + _ZN6opencc19ZipResourceProviderD2Ev@Base 1.4.1 _ZN6opencc20MaxMatchSegmentationC1ESt10shared_ptrINS_4DictEE@Base 1.3.1 _ZN6opencc20MaxMatchSegmentationC2ESt10shared_ptrINS_4DictEE@Base 1.3.1 _ZN6opencc24CreatePluginSegmentationERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt4pairIS5_S5_ESaISA_EE@Base 1.3.0 - _ZN6opencc24OpenSerializableFileUtf8ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc@Base 1.4.1+ds1 - _ZN6opencc26FilesystemResourceProviderC1ESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE@Base 1.4.1+ds1 - _ZN6opencc26FilesystemResourceProviderC2ESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE@Base 1.4.1+ds1 + _ZN6opencc24OpenSerializableFileUtf8ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc@Base 1.4.1 + _ZN6opencc26FilesystemResourceProviderC1ESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE@Base 1.4.1 + _ZN6opencc26FilesystemResourceProviderC2ESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE@Base 1.4.1 _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.2.0 _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKc@Base 1.2.0 - _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKcRKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 - _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1+ds1 - _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 + _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EEPKcRKNS_17ConfigLoadOptionsE@Base 1.4.1 + _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1 + _ZN6opencc6Config11NewFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1 _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EE@Base 1.2.0 - _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 + _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EERKNS_17ConfigLoadOptionsE@Base 1.4.1 _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_@Base 1.2.0 - _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1+ds1 - _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1+ds1 + _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEE@Base 1.4.1 + _ZN6opencc6Config13NewFromStringERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt10shared_ptrINS_16ResourceProviderEERKNS_17ConfigLoadOptionsE@Base 1.4.1 _ZN6opencc6ConfigC1Ev@Base 1.2.0 _ZN6opencc6ConfigC2Ev@Base 1.2.0 _ZN6opencc6ConfigD0Ev@Base 1.2.0 _ZN6opencc6ConfigD1Ev@Base 1.2.0 _ZN6opencc6ConfigD2Ev@Base 1.2.0 _ZN6opencc7Lexicon20ParseLexiconFromFileEP8_IO_FILE@Base 1.2.0 - _ZN6opencc7Lexicon20ParseLexiconFromFileEP8_IO_FILEc@Base 1.4.1+ds1 - (regex)"^_ZN6opencc7Lexicon22ParseLexiconFromBufferEPKc[mj]@Base$" 1.4.1+ds1 + _ZN6opencc7Lexicon20ParseLexiconFromFileEP8_IO_FILEc@Base 1.4.1 _ZN6opencc7Lexicon4SortEv@Base 1.2.0 _ZN6opencc7Lexicon8IsSortedEv@Base 1.2.0 _ZN6opencc7Lexicon8IsUniqueEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.2.0 _ZN6opencc8TextDict11NewFromDictERKNS_4DictE@Base 1.2.0 _ZN6opencc8TextDict11NewFromFileEP8_IO_FILE@Base 1.2.0 - _ZN6opencc8TextDict11NewFromFileEP8_IO_FILEc@Base 1.4.1+ds1 - (regex)"^_ZN6opencc8TextDict13NewFromBufferEPKc[mj]@Base$" 1.4.1+ds1 + _ZN6opencc8TextDict11NewFromFileEP8_IO_FILEc@Base 1.4.1 _ZN6opencc8TextDict17NewFromSortedFileEP8_IO_FILE@Base 1.2.0 _ZN6opencc8TextDictC1ERKSt10shared_ptrINS_7LexiconEE@Base 1.2.0 _ZN6opencc8TextDictC2ERKSt10shared_ptrINS_7LexiconEE@Base 1.2.0 @@ -155,7 +176,6 @@ libopencc.so.1.4 libopencc1.4 #MINVER# _ZN6opencc8internal19ContainsPunctuationERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZN6opencc9DartsDict11NewFromDictERKNS_4DictE@Base 1.2.0 _ZN6opencc9DartsDict11NewFromFileEP8_IO_FILE@Base 1.2.0 - (regex)"^_ZN6opencc9DartsDict13NewFromBufferEPKc[mj]@Base$" 1.4.1+ds1 _ZN6opencc9DartsDictC1Ev@Base 1.2.0 _ZN6opencc9DartsDictC2Ev@Base 1.2.0 _ZN6opencc9DartsDictD0Ev@Base 1.2.0 @@ -164,284 +184,294 @@ libopencc.so.1.4 libopencc1.4 #MINVER# _ZN6opencc9DictEntry12UPtrLessThanERKSt10unique_ptrIS0_St14default_deleteIS0_EES6_@Base 1.2.0 _ZN6opencc9DictGroup11NewFromDictERKNS_4DictE@Base 1.2.0 _ZN6opencc9DictGroupC1ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.2.0 - _ZN6opencc9DictGroupC1ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEENS_20DictGroupMatchPolicyE@Base 1.4.1+ds1 + _ZN6opencc9DictGroupC1ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEENS_20DictGroupMatchPolicyE@Base 1.4.1 _ZN6opencc9DictGroupC2ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEE@Base 1.2.0 - _ZN6opencc9DictGroupC2ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEENS_20DictGroupMatchPolicyE@Base 1.4.1+ds1 + _ZN6opencc9DictGroupC2ERKNSt7__cxx114listISt10shared_ptrINS_4DictEESaIS5_EEENS_20DictGroupMatchPolicyE@Base 1.4.1 _ZN6opencc9DictGroupD0Ev@Base 1.2.0 _ZN6opencc9DictGroupD1Ev@Base 1.2.0 _ZN6opencc9DictGroupD2Ev@Base 1.2.0 _ZNK6opencc10BinaryDict12KeyMaxLengthEv@Base 1.2.0 - (regex)"^_ZNK6opencc10BinaryDict15ConstructBufferERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt6vectorI[mj]SaI[mj]EER[mj]S7_SB_SC_@Base$" 1.4.1+ds1 _ZNK6opencc10BinaryDict15SerializeToFileEP8_IO_FILE@Base 1.2.0 _ZNK6opencc10Conversion15AppendConvertedEPKcPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.3.1 - _ZNK6opencc10Conversion15AppendConvertedESt17basic_string_viewIcSt11char_traitsIcEEPNSt7__cxx1112basic_stringIcS3_SaIcEEE@Base 1.4.1+ds1 + _ZNK6opencc10Conversion15AppendConvertedESt17basic_string_viewIcSt11char_traitsIcEEPNSt7__cxx1112basic_stringIcS3_SaIcEEE@Base 1.4.1 _ZNK6opencc10Conversion7ConvertB5cxx11EPKc@Base 1.2.0 - _ZNK6opencc10Conversion7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 + _ZNK6opencc10Conversion7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 _ZNK6opencc10Conversion7ConvertERKSt10shared_ptrINS_8SegmentsEE@Base 1.2.0 _ZNK6opencc10MarisaDict10GetLexiconEv@Base 1.2.0 - (regex)"^_ZNK6opencc10MarisaDict11MatchPrefixEPKc[mj]@Base$" 1.4.1+ds1 _ZNK6opencc10MarisaDict12KeyMaxLengthEv@Base 1.2.0 _ZNK6opencc10MarisaDict15SerializeToFileEP8_IO_FILE@Base 1.2.0 - (regex)"^_ZNK6opencc10MarisaDict16MatchAllPrefixesEPKc[mj]@Base$" 1.4.1+ds1 - (regex)"^_ZNK6opencc10MarisaDict16MatchPrefixValueEPKc[mj]@Base$" 1.4.1+ds1 - _ZNK6opencc10MarisaDict18ReconstructLexiconEv@Base 1.4.1+ds1 - (regex)"^_ZNK6opencc10MarisaDict5MatchEPKc[mj]@Base$" 1.4.1+ds1 - (regex)"^_ZNK6opencc11PrefixMatch11MatchPrefixEPKc[mj]@Base$" 1.3.1 - (regex)"^_ZNK6opencc11PrefixMatch15MatchPrefixViewEPKc[mj]@Base$" 1.4.1+ds1 - _ZNK6opencc12Segmentation7SegmentEPKc@Base 1.4.1+ds1 - _ZNK6opencc12Segmentation7SegmentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.4.1+ds1 + _ZNK6opencc10MarisaDict18ReconstructLexiconEv@Base 1.4.1 + _ZNK6opencc12Segmentation7SegmentEPKc@Base 1.4.1 + _ZNK6opencc12Segmentation7SegmentERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.4.1 _ZNK6opencc13PhraseExtract11ProbabilityERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZNK6opencc13PhraseExtract13PrefixEntropyERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZNK6opencc13PhraseExtract13SuffixEntropyERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZNK6opencc13PhraseExtract14LogProbabilityERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 - (regex)"^_ZNK6opencc13PhraseExtract16CalculateEntropyERKSt13unordered_mapINS_19UTF8StringSliceBaseIhEE[mj]NS3_6HasherESt8equal_toIS3_ESaISt4pairIKS3_[mj]EEE@Base$" 1.4.1+ds1 _ZNK6opencc13PhraseExtract17CalculateCohesionERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZNK6opencc13PhraseExtract3PMIERKNS_19UTF8StringSliceBaseIhEES4_S4_@Base 1.2.0 _ZNK6opencc13PhraseExtract6SignalERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZNK6opencc13PhraseExtract7EntropyERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZNK6opencc13PhraseExtract8CohesionERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 _ZNK6opencc13PhraseExtract9FrequencyERKNS_19UTF8StringSliceBaseIhEE@Base 1.2.0 - (regex)"^_ZNK6opencc14UnionDictGroup11MatchPrefixEPKc[mj]@Base$" 1.4.1+ds1 _ZNK6opencc15ConversionChain16ConvertWithTraceERKSt10shared_ptrINS_8SegmentsEE@Base 1.3.1 _ZNK6opencc15ConversionChain22AppendConvertedSegmentEPKcPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.3.1 - _ZNK6opencc15ConversionChain22AppendConvertedSegmentESt17basic_string_viewIcSt11char_traitsIcEEPNSt7__cxx1112basic_stringIcS3_SaIcEEE@Base 1.4.1+ds1 + _ZNK6opencc15ConversionChain22AppendConvertedSegmentESt17basic_string_viewIcSt11char_traitsIcEEPNSt7__cxx1112basic_stringIcS3_SaIcEEE@Base 1.4.1 _ZNK6opencc15ConversionChain7ConvertERKSt10shared_ptrINS_8SegmentsEE@Base 1.2.0 _ZNK6opencc15SimpleConverter7ConvertB5cxx11EPKc@Base 1.2.0 - (regex)"^_ZNK6opencc15SimpleConverter7ConvertB5cxx11EPKc[mj]@Base$" 1.4.1+ds1 - _ZNK6opencc15SimpleConverter7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 + _ZNK6opencc15SimpleConverter7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 _ZNK6opencc15SimpleConverter7ConvertEPKcPc@Base 1.2.0 - (regex)"^_ZNK6opencc15SimpleConverter7ConvertEPKc[mj]Pc@Base$" 1.4.1+ds1 _ZNK6opencc15SimpleConverter7ConvertERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE@Base 1.2.0 - _ZNK6opencc15SimpleConverter7InspectESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZNK6opencc16ResourceProvider11GetResourceESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 + _ZNK6opencc15SimpleConverter7InspectESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZNK6opencc16ResourceProvider11GetResourceESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 _ZNK6opencc16SerializedValues12KeyMaxLengthEv@Base 1.2.0 _ZNK6opencc16SerializedValues15ConstructBufferEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorItSaItEEPj@Base 1.2.0 _ZNK6opencc16SerializedValues15SerializeToFileEP8_IO_FILE@Base 1.2.0 - _ZNK6opencc17PipelineConverter15GetSegmentationEv@Base 1.4.1+ds1 - _ZNK6opencc17PipelineConverter7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZNK6opencc17PipelineConverter7InspectESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 + _ZNK6opencc17PipelineConverter15GetSegmentationEv@Base 1.4.1 + _ZNK6opencc17PipelineConverter7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZNK6opencc17PipelineConverter7InspectESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 _ZNK6opencc19MultiValueDictEntry8ToStringB5cxx11Ev@Base 1.2.0 - _ZNK6opencc19ZipResourceProvider11GetResourceESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZNK6opencc19ZipResourceProvider7ResolveB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZNK6opencc20MaxMatchSegmentation7SegmentESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZNK6opencc20SingleStageConverter7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZNK6opencc20SingleStageConverter7InspectESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - _ZNK6opencc26FilesystemResourceProvider7ResolveB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1+ds1 - (regex)"^_ZNK6opencc4Dict11MatchPrefixEPKc[mj]@Base$" 1.4.1+ds1 - (regex)"^_ZNK6opencc4Dict16MatchAllPrefixesEPKc[mj]@Base$" 1.4.1+ds1 + _ZNK6opencc19ZipResourceProvider11GetResourceESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZNK6opencc19ZipResourceProvider7ResolveB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZNK6opencc20MaxMatchSegmentation7SegmentESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZNK6opencc20SingleStageConverter7ConvertB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZNK6opencc20SingleStageConverter7InspectESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 + _ZNK6opencc26FilesystemResourceProvider7ResolveB5cxx11ESt17basic_string_viewIcSt11char_traitsIcEE@Base 1.4.1 _ZNK6opencc8TextDict10GetLexiconEv@Base 1.2.0 _ZNK6opencc8TextDict12KeyMaxLengthEv@Base 1.2.0 _ZNK6opencc8TextDict15SerializeToFileEP8_IO_FILE@Base 1.2.0 - (regex)"^_ZNK6opencc8TextDict5MatchEPKc[mj]@Base$" 1.4.1+ds1 _ZNK6opencc9DartsDict10GetLexiconEv@Base 1.2.0 - (regex)"^_ZNK6opencc9DartsDict11MatchPrefixEPKc[mj]@Base$" 1.4.1+ds1 _ZNK6opencc9DartsDict12KeyMaxLengthEv@Base 1.2.0 _ZNK6opencc9DartsDict15SerializeToFileEP8_IO_FILE@Base 1.2.0 - (regex)"^_ZNK6opencc9DartsDict16MatchPrefixValueEPKc[mj]@Base$" 1.4.1+ds1 - (regex)"^_ZNK6opencc9DartsDict5MatchEPKc[mj]@Base$" 1.4.1+ds1 _ZNK6opencc9DictGroup10GetLexiconEv@Base 1.2.0 - (regex)"^_ZNK6opencc9DictGroup11MatchPrefixEPKc[mj]@Base$" 1.4.1+ds1 _ZNK6opencc9DictGroup12KeyMaxLengthEv@Base 1.2.0 - (regex)"^_ZNK6opencc9DictGroup16MatchAllPrefixesEPKc[mj]@Base$" 1.4.1+ds1 - (regex)"^_ZNK6opencc9DictGroup5MatchEPKc[mj]@Base$" 1.4.1+ds1 _ZNSt17_Function_handlerIFbRKN6opencc13PhraseExtractERKNS0_19UTF8StringSliceBaseIhEEEPS8_E10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation@Base 1.2.0 _ZNSt17_Function_handlerIFbRKN6opencc13PhraseExtractERKNS0_19UTF8StringSliceBaseIhEEEPS8_E9_M_invokeERKSt9_Any_dataS3_S7_@Base 1.2.0 _ZSt19piecewise_construct@Base 1.3.0 _ZTIFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.2.0 - _ZTIN5Darts7Details9ExceptionE@Base 1.4.1+ds1 + _ZTIN5Darts7Details9ExceptionE@Base 1.4.1 _ZTIN6opencc10BinaryDictE@Base 1.2.0 _ZTIN6opencc10MarisaDictE@Base 1.2.0 _ZTIN6opencc11InvalidUTF8E@Base 1.2.0 - _ZTIN6opencc11PrefixMatch6Tables7MatcherE@Base 1.4.1+ds1 + _ZTIN6opencc11PrefixMatch6Tables7MatcherE@Base 1.4.1 _ZTIN6opencc12FileNotFoundE@Base 1.2.0 _ZTIN6opencc12SegmentationE@Base 1.2.0 _ZTIN6opencc13InvalidFormatE@Base 1.2.0 _ZTIN6opencc13PhraseExtractE@Base 1.2.0 - _ZTIN6opencc14UnionDictGroupE@Base 1.4.1+ds1 + _ZTIN6opencc14UnionDictGroupE@Base 1.4.1 _ZTIN6opencc15FileNotWritableE@Base 1.2.0 _ZTIN6opencc15ShouldNotBeHereE@Base 1.2.0 - _ZTIN6opencc16ResourceProviderE@Base 1.4.1+ds1 + _ZTIN6opencc16ResourceProviderE@Base 1.4.1 _ZTIN6opencc16SerializableDictE@Base 1.2.0 _ZTIN6opencc16SerializedValuesE@Base 1.2.0 - _ZTIN6opencc17PipelineConverterE@Base 1.4.1+ds1 + _ZTIN6opencc17PipelineConverterE@Base 1.4.1 _ZTIN6opencc19MultiValueDictEntryE@Base 1.2.0 - _ZTIN6opencc19ZipResourceProviderE@Base 1.4.1+ds1 + _ZTIN6opencc19ZipResourceProviderE@Base 1.4.1 _ZTIN6opencc20MaxMatchSegmentationE@Base 1.2.0 - _ZTIN6opencc20SingleStageConverterE@Base 1.4.1+ds1 + _ZTIN6opencc20SingleStageConverterE@Base 1.4.1 _ZTIN6opencc20SingleValueDictEntryE@Base 1.2.0 _ZTIN6opencc21InvalidTextDictionaryE@Base 1.2.0 - _ZTIN6opencc26FilesystemResourceProviderE@Base 1.4.1+ds1 + _ZTIN6opencc26FilesystemResourceProviderE@Base 1.4.1 _ZTIN6opencc4DictE@Base 1.2.0 _ZTIN6opencc6ConfigE@Base 1.2.0 _ZTIN6opencc8TextDictE@Base 1.2.0 - _ZTIN6opencc9ConverterE@Base 1.4.1+ds1 + _ZTIN6opencc9ConverterE@Base 1.4.1 _ZTIN6opencc9DartsDictE@Base 1.2.0 _ZTIN6opencc9DictEntryE@Base 1.2.0 _ZTIN6opencc9DictGroupE@Base 1.2.0 _ZTIN6opencc9ExceptionE@Base 1.2.0 - _ZTIN9rapidjson8internal16ISchemaValidatorE@Base 1.4.1+ds1 - _ZTIN9rapidjson8internal19ISchemaStateFactoryINS0_6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES8_EEEEEE@Base 1.4.1+ds1 + (arch=riscv64)_ZTIN9__gnu_cxx24__concurrence_lock_errorE@Base 1.4.1 + (arch=riscv64)_ZTIN9__gnu_cxx26__concurrence_unlock_errorE@Base 1.4.1 + (arch=riscv64)_ZTIN9__gnu_cxx7__mutexE@Base 1.4.1 + _ZTIN9rapidjson8internal16ISchemaValidatorE@Base 1.4.1 + _ZTIN9rapidjson8internal19ISchemaStateFactoryINS0_6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES8_EEEEEE@Base 1.4.1 _ZTIPFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.2.0 - _ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTS11LeafMatcher@Base 1.4.1+ds1 - _ZTS12GroupMatcher@Base 1.4.1+ds1 + (arch=riscv64)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=armhf)_ZTISt19_Sp_make_shared_tag@Base 1.4.1 + _ZTS11LeafMatcher@Base 1.4.1 + _ZTS12GroupMatcher@Base 1.4.1 _ZTSFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.2.0 - _ZTSN5Darts15DoubleArrayImplIvvivEE@Base 1.4.1+ds1 - _ZTSN5Darts7Details9ExceptionE@Base 1.4.1+ds1 + _ZTSN5Darts15DoubleArrayImplIvvivEE@Base 1.4.1 + _ZTSN5Darts7Details9ExceptionE@Base 1.4.1 _ZTSN6opencc10BinaryDictE@Base 1.2.0 _ZTSN6opencc10MarisaDictE@Base 1.2.0 _ZTSN6opencc11InvalidUTF8E@Base 1.2.0 - _ZTSN6opencc11PrefixMatch6Tables7MatcherE@Base 1.4.1+ds1 + _ZTSN6opencc11PrefixMatch6Tables7MatcherE@Base 1.4.1 _ZTSN6opencc12FileNotFoundE@Base 1.2.0 _ZTSN6opencc12SegmentationE@Base 1.2.0 _ZTSN6opencc13InvalidFormatE@Base 1.2.0 _ZTSN6opencc13PhraseExtractE@Base 1.2.0 - _ZTSN6opencc14UnionDictGroupE@Base 1.4.1+ds1 + _ZTSN6opencc14UnionDictGroupE@Base 1.4.1 _ZTSN6opencc15FileNotWritableE@Base 1.2.0 _ZTSN6opencc15ShouldNotBeHereE@Base 1.2.0 _ZTSN6opencc16NoValueDictEntryE@Base 1.2.0 - _ZTSN6opencc16ResourceProviderE@Base 1.4.1+ds1 + _ZTSN6opencc16ResourceProviderE@Base 1.4.1 _ZTSN6opencc16SerializableDictE@Base 1.2.0 _ZTSN6opencc16SerializedValuesE@Base 1.2.0 - _ZTSN6opencc17PipelineConverterE@Base 1.4.1+ds1 + _ZTSN6opencc17PipelineConverterE@Base 1.4.1 _ZTSN6opencc19MultiValueDictEntryE@Base 1.2.0 - _ZTSN6opencc19ZipResourceProviderE@Base 1.4.1+ds1 - _ZTSN6opencc20ConfigBasedConverterE@Base 1.4.1+ds1 + _ZTSN6opencc19ZipResourceProviderE@Base 1.4.1 + _ZTSN6opencc20ConfigBasedConverterE@Base 1.4.1 _ZTSN6opencc20MaxMatchSegmentationE@Base 1.2.0 - _ZTSN6opencc20SingleStageConverterE@Base 1.4.1+ds1 + _ZTSN6opencc20SingleStageConverterE@Base 1.4.1 _ZTSN6opencc20SingleValueDictEntryE@Base 1.2.0 _ZTSN6opencc21InvalidTextDictionaryE@Base 1.2.0 _ZTSN6opencc22StrMultiValueDictEntryE@Base 1.2.0 _ZTSN6opencc23StrSingleValueDictEntryE@Base 1.2.0 - _ZTSN6opencc26FilesystemResourceProviderE@Base 1.4.1+ds1 + _ZTSN6opencc26FilesystemResourceProviderE@Base 1.4.1 _ZTSN6opencc4DictE@Base 1.2.0 _ZTSN6opencc6ConfigE@Base 1.2.0 _ZTSN6opencc8TextDictE@Base 1.2.0 - _ZTSN6opencc9ConverterE@Base 1.4.1+ds1 + _ZTSN6opencc9ConverterE@Base 1.4.1 _ZTSN6opencc9DartsDictE@Base 1.2.0 _ZTSN6opencc9DictEntryE@Base 1.2.0 _ZTSN6opencc9DictGroupE@Base 1.2.0 _ZTSN6opencc9ExceptionE@Base 1.2.0 - _ZTSN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_EE@Base 1.4.1+ds1 - _ZTSN9rapidjson8internal16ISchemaValidatorE@Base 1.4.1+ds1 - _ZTSN9rapidjson8internal19ISchemaStateFactoryINS0_6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES8_EEEEEE@Base 1.4.1+ds1 + (arch=riscv64)_ZTSN9__gnu_cxx24__concurrence_lock_errorE@Base 1.4.1 + (arch=riscv64)_ZTSN9__gnu_cxx26__concurrence_unlock_errorE@Base 1.4.1 + (arch=riscv64)_ZTSN9__gnu_cxx7__mutexE@Base 1.4.1 + _ZTSN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_EE@Base 1.4.1 + _ZTSN9rapidjson8internal16ISchemaValidatorE@Base 1.4.1 + _ZTSN9rapidjson8internal19ISchemaStateFactoryINS0_6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES8_EEEEEE@Base 1.4.1 _ZTSPFbRKN6opencc13PhraseExtractERKNS_19UTF8StringSliceBaseIhEEE@Base 1.2.0 - _ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc10BinaryDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc10ConversionELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc10MarisaDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc11PrefixMatch6TablesELN9__gnu_cxx12_Lock_policyE2EE@Base 1.3.1 - _ZTSSt15_Sp_counted_ptrIPN6opencc11PrefixMatchELN9__gnu_cxx12_Lock_policyE2EE@Base 1.3.1 - _ZTSSt15_Sp_counted_ptrIPN6opencc14UnionDictGroupELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1+ds1 - _ZTSSt15_Sp_counted_ptrIPN6opencc15ConversionChainELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc16SerializedValuesELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc20ConfigBasedConverterELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1+ds1 - _ZTSSt15_Sp_counted_ptrIPN6opencc20MaxMatchSegmentationELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc20SingleStageConverterELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1+ds1 - _ZTSSt15_Sp_counted_ptrIPN6opencc26FilesystemResourceProviderELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1+ds1 - _ZTSSt15_Sp_counted_ptrIPN6opencc7LexiconELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc8SegmentsELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc8TextDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc9DartsDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPN6opencc9DictGroupELN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt15_Sp_counted_ptrIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1+ds1 - _ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.2.0 - _ZTSSt19_Sp_make_shared_tag@Base 1.4.1+ds1 - _ZTSSt23_Sp_counted_ptr_inplaceIN6opencc16ResourceProvider8ResourceESaIvELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1+ds1 + (arch=riscv64)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10BinaryDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc10BinaryDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10ConversionELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc10ConversionELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc10MarisaDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc10MarisaDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc11PrefixMatch6TablesELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc11PrefixMatch6TablesELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc11PrefixMatchELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc11PrefixMatchELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc14UnionDictGroupELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc14UnionDictGroupELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc15ConversionChainELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc15ConversionChainELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc16SerializedValuesELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc16SerializedValuesELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc20ConfigBasedConverterELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc20ConfigBasedConverterELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc20MaxMatchSegmentationELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc20MaxMatchSegmentationELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc20SingleStageConverterELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc20SingleStageConverterELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc26FilesystemResourceProviderELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc26FilesystemResourceProviderELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc7LexiconELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc7LexiconELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc8SegmentsELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc8SegmentsELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc8TextDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc8TextDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9DartsDictELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc9DartsDictELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPN6opencc9DictGroupELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPN6opencc9DictGroupELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt15_Sp_counted_ptrIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt15_Sp_counted_ptrIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + (arch=riscv64)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 + _ZTSSt19_Sp_make_shared_tag@Base 1.4.1 + (arch=riscv64)_ZTSSt23_Sp_counted_ptr_inplaceIN6opencc16ResourceProvider8ResourceESaIvELN9__gnu_cxx12_Lock_policyE1EE@Base 1.4.1 + (arch=armhf)_ZTSSt23_Sp_counted_ptr_inplaceIN6opencc16ResourceProvider8ResourceESaIvELN9__gnu_cxx12_Lock_policyE2EE@Base 1.4.1 _ZTVN6opencc10BinaryDictE@Base 1.2.0 _ZTVN6opencc10MarisaDictE@Base 1.2.0 _ZTVN6opencc13PhraseExtractE@Base 1.2.0 - _ZTVN6opencc14UnionDictGroupE@Base 1.4.1+ds1 - _ZTVN6opencc16ResourceProviderE@Base 1.4.1+ds1 + _ZTVN6opencc14UnionDictGroupE@Base 1.4.1 + _ZTVN6opencc16ResourceProviderE@Base 1.4.1 _ZTVN6opencc16SerializedValuesE@Base 1.2.0 - _ZTVN6opencc17PipelineConverterE@Base 1.4.1+ds1 + _ZTVN6opencc17PipelineConverterE@Base 1.4.1 _ZTVN6opencc19MultiValueDictEntryE@Base 1.2.0 - _ZTVN6opencc19ZipResourceProviderE@Base 1.4.1+ds1 + _ZTVN6opencc19ZipResourceProviderE@Base 1.4.1 _ZTVN6opencc20MaxMatchSegmentationE@Base 1.2.0 - _ZTVN6opencc20SingleStageConverterE@Base 1.4.1+ds1 - _ZTVN6opencc26FilesystemResourceProviderE@Base 1.4.1+ds1 + _ZTVN6opencc20SingleStageConverterE@Base 1.4.1 + _ZTVN6opencc26FilesystemResourceProviderE@Base 1.4.1 _ZTVN6opencc4DictE@Base 1.2.0 _ZTVN6opencc6ConfigE@Base 1.2.0 _ZTVN6opencc8TextDictE@Base 1.2.0 _ZTVN6opencc9DartsDictE@Base 1.2.0 _ZTVN6opencc9DictGroupE@Base 1.2.0 + _ZZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEixIS5_EERS6_RKNS0_IS2_T_EEE6buffer@Base 1.2.0 + _ZZN9rapidjson21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES5_E15HandleRefSchemaERKNS_14GenericPointerIS7_S5_EEPPKNS_8internal6SchemaIS8_EERKS7_SK_E10kRefString@Base 1.4.1 + _ZZN9rapidjson21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES5_E15HandleRefSchemaERKNS_14GenericPointerIS7_S5_EEPPKNS_8internal6SchemaIS8_EERKS7_SK_E9kRefValue@Base 1.4.1 + _ZZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E14GetNullHandlerEvE11nullHandler@Base 1.4.1 + _ZZN9rapidjson8internal12GetDigitsLutEvE10cDigitsLut@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE11GetTypelessEvE8typeless@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE12GetNotStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE12GetNotStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetEnumStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetEnumStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetNullStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetNullStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetTypeStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetTypeStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAllOfStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAllOfStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAnyOfStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAnyOfStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetArrayStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetArrayStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetItemsStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetItemsStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetOneOfStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetOneOfStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetNumberStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetNumberStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetObjectStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetObjectStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetStringStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetStringStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetBooleanStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetBooleanStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetIntegerStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetIntegerStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMaximumStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMaximumStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMinimumStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMinimumStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetPatternStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetPatternStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMaxItemsStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMaxItemsStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMinItemsStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMinItemsStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetRequiredStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetRequiredStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMaxLengthStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMaxLengthStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMinLengthStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMinLengthStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetMultipleOfStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetMultipleOfStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetPropertiesStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetPropertiesStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE20GetUniqueItemsStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE20GetUniqueItemsStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE21GetDependenciesStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE21GetDependenciesStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMaxPropertiesStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMaxPropertiesStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMinPropertiesStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMinPropertiesStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE24GetAdditionalItemsStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE24GetAdditionalItemsStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMaximumStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMaximumStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMinimumStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMinimumStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE26GetPatternPropertiesStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE26GetPatternPropertiesStringEvE1v@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE29GetAdditionalPropertiesStringEvE1s@Base 1.4.1 + _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE29GetAdditionalPropertiesStringEvE1v@Base 1.4.1 + _ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag@Base 1.4.1 + (c++)"non-virtual thunk to opencc::DartsDict::SerializeToFile(_IO_FILE*) const@Base" 1.3.1 (c++)"non-virtual thunk to opencc::MarisaDict::SerializeToFile(_IO_FILE*) const@Base" 1.3.1 (c++)"non-virtual thunk to opencc::TextDict::SerializeToFile(_IO_FILE*) const@Base" 1.3.1 - (c++)"non-virtual thunk to opencc::DartsDict::SerializeToFile(_IO_FILE*) const@Base" 1.3.1 - _ZZN9rapidjson12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEixIS5_EERS6_RKNS0_IS2_T_EEE6buffer@Base 1.2.0 - _ZZN9rapidjson21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES5_E15HandleRefSchemaERKNS_14GenericPointerIS7_S5_EEPPKNS_8internal6SchemaIS8_EERKS7_SK_E10kRefString@Base 1.4.1+ds1 - _ZZN9rapidjson21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES5_E15HandleRefSchemaERKNS_14GenericPointerIS7_S5_EEPPKNS_8internal6SchemaIS8_EERKS7_SK_E9kRefValue@Base 1.4.1+ds1 - _ZZN9rapidjson22GenericSchemaValidatorINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES6_EENS_17BaseReaderHandlerIS4_vEES6_E14GetNullHandlerEvE11nullHandler@Base 1.4.1+ds1 - _ZZN9rapidjson8internal12GetDigitsLutEvE10cDigitsLut@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE11GetTypelessEvE8typeless@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE12GetNotStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE12GetNotStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetEnumStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetEnumStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetNullStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetNullStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetTypeStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE13GetTypeStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAllOfStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAllOfStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAnyOfStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetAnyOfStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetArrayStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetArrayStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetItemsStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetItemsStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetOneOfStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE14GetOneOfStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetNumberStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetNumberStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetObjectStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetObjectStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetStringStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE15GetStringStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetBooleanStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetBooleanStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetIntegerStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetIntegerStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMaximumStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMaximumStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMinimumStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetMinimumStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetPatternStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE16GetPatternStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMaxItemsStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMaxItemsStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMinItemsStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetMinItemsStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetRequiredStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE17GetRequiredStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMaxLengthStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMaxLengthStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMinLengthStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE18GetMinLengthStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetMultipleOfStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetMultipleOfStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetPropertiesStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE19GetPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE20GetUniqueItemsStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE20GetUniqueItemsStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE21GetDependenciesStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE21GetDependenciesStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMaxPropertiesStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMaxPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMinPropertiesStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE22GetMinPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE24GetAdditionalItemsStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE24GetAdditionalItemsStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMaximumStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMaximumStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMinimumStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE25GetExclusiveMinimumStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE26GetPatternPropertiesStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE26GetPatternPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE29GetAdditionalPropertiesStringEvE1s@Base 1.4.1+ds1 - _ZZN9rapidjson8internal6SchemaINS_21GenericSchemaDocumentINS_12GenericValueINS_4UTF8IcEENS_19MemoryPoolAllocatorINS_12CrtAllocatorEEEEES7_EEE29GetAdditionalPropertiesStringEvE1v@Base 1.4.1+ds1 - _ZZNSt19_Sp_make_shared_tag5_S_tiEvE5__tag@Base 1.4.1+ds1 opencc_close@Base 1.2.0 opencc_convert_utf8@Base 1.2.0 opencc_convert_utf8_free@Base 1.2.0 diff --git a/packaging/debian/debian/opencc-jieba-data.install b/packaging/debian/debian/opencc-jieba-data.install new file mode 100644 index 000000000..0da4fd4b7 --- /dev/null +++ b/packaging/debian/debian/opencc-jieba-data.install @@ -0,0 +1,2 @@ +usr/share/opencc/jieba_dict/ +usr/share/opencc/*_jieba.json diff --git a/packaging/debian/debian/opencc-jieba.install b/packaging/debian/debian/opencc-jieba.install index 91f72b61e..c3b536d94 100644 --- a/packaging/debian/debian/opencc-jieba.install +++ b/packaging/debian/debian/opencc-jieba.install @@ -1,9 +1 @@ -usr/lib/*/opencc/plugins -usr/share/opencc/jieba_dict -usr/share/opencc/hk2sp_jieba.json -usr/share/opencc/s2hk_jieba.json -usr/share/opencc/s2hkp_jieba.json -usr/share/opencc/s2t_jieba.json -usr/share/opencc/s2tw_jieba.json -usr/share/opencc/s2twp_jieba.json -usr/share/opencc/tw2sp_jieba.json +usr/lib/*/opencc/plugins/ diff --git a/packaging/debian/debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch b/packaging/debian/debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch index 00239d14c..2962da482 100644 --- a/packaging/debian/debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch +++ b/packaging/debian/debian/patches/0009-setup.py-Handle-python-binding-instead-of-cmake.patch @@ -2,9 +2,18 @@ From: Boyuan Yang Date: Tue, 13 Jan 2026 18:04:57 -0500 Subject: setup.py: Handle python binding instead of cmake +Link the extension against the libopencc.so built by the cmake pass in +$OPENCC_BUILD_DIR/src. Only -L (library_dirs) is set on purpose: adding +runtime_library_dirs would bake the (build-time-only) build directory into +DT_RUNPATH, and even deleting that entry afterwards leaves the build path +behind in .dynstr (lintian: file-references-package-build-path). The +installed extension resolves libopencc.so.1.4 through the regular linker +search path instead; debian/rules sets LD_LIBRARY_PATH for the test run. + +Forwarded: not-needed --- - setup.py | 22 +++++++++++++++++----- - 1 file changed, 17 insertions(+), 5 deletions(-) + setup.py | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) Index: opencc/setup.py =================================================================== @@ -19,7 +28,7 @@ Index: opencc/setup.py _this_dir = os.path.dirname(os.path.abspath(__file__)) _build_dir = os.path.join(_this_dir, 'build', 'python') -@@ -148,10 +150,13 @@ class OpenCCExtension(setuptools.Extensi +@@ -148,10 +150,12 @@ class OpenCCExtension(setuptools.Extensi class BuildExtCommand(setuptools.command.build_ext.build_ext, object): def build_extension(self, ext): @@ -33,7 +42,6 @@ Index: opencc/setup.py + ext.include_dirs.append(pybind11.get_include()) + ext.include_dirs.append('src') + ext.library_dirs = [lib_path] -+ ext.runtime_library_dirs = [lib_path] if isinstance(ext, OpenCCExtension): build_libopencc(output_path) else: diff --git a/packaging/debian/debian/patches/0010-fix-git-version-fallback.patch b/packaging/debian/debian/patches/0010-fix-git-version-fallback.patch index 3be6ba534..88d274bbc 100644 --- a/packaging/debian/debian/patches/0010-fix-git-version-fallback.patch +++ b/packaging/debian/debian/patches/0010-fix-git-version-fallback.patch @@ -9,7 +9,7 @@ present (as is always the case for Debian source tarballs). The fallback was left at 1.4.0 in the 1.4.1 release, so builds from the released tarball report version 1.4.0 instead of 1.4.1. -Forwarded: not-yet +Forwarded: not-needed Last-Update: 2026-07-15 Index: opencc/cmake/GitVersion.cmake =================================================================== diff --git a/packaging/debian/debian/patches/0011-drop-python-cli-entry-point.patch b/packaging/debian/debian/patches/0011-drop-python-cli-entry-point.patch index a2b71a94f..6e1c7d179 100644 --- a/packaging/debian/debian/patches/0011-drop-python-cli-entry-point.patch +++ b/packaging/debian/debian/patches/0011-drop-python-cli-entry-point.patch @@ -11,7 +11,7 @@ dependency. Drop the entry point; the compiled CLI tool remains the one and only /usr/bin/opencc, and the python3-opencc bindings (import opencc) are unaffected. -Forwarded: not-yet +Forwarded: no Last-Update: 2026-07-15 Index: opencc/setup.py =================================================================== diff --git a/packaging/debian/debian/patches/0012-fix-legacy-dict-detection-on-big-endian.patch b/packaging/debian/debian/patches/0012-fix-legacy-dict-detection-on-big-endian.patch new file mode 100644 index 000000000..1ae7c2343 --- /dev/null +++ b/packaging/debian/debian/patches/0012-fix-legacy-dict-detection-on-big-endian.patch @@ -0,0 +1,119 @@ +From: Frank Lin +Date: Tue, 4 Aug 2026 13:02:41 -0700 +Subject: Fix legacy 64-bit OCD layout detection on big-endian platforms + +The BinaryDict and DartsDict deserializers detected the legacy 64-bit +layout by checking whether probe bytes [4..7] are zero, which only holds +on little-endian hosts; on big-endian platforms (s390x, ppc64, sparc64, +hppa) legacy files were misread as fixed-width and loaded as empty +dictionaries. Replace the byte-offset idiom at all three sites with a +shared LooksLikeLegacy64Field() helper that loads the probe as a native +uint64_t and checks its high 32 bits, which is correct on both byte +orders and compiles to the same behavior on little-endian. Verified with +BinaryDictTest and DartsDictTest on arm64 and on emulated s390x. + +This fixes the following test failures on all big-endian Debian +architectures (s390x, powerpc, ppc64, sparc64, hppa): + + BinaryDictTest.AcceptsLegacy64BitLayout + BinaryDictTest.RejectsHugeValueTotalLength + DartsDictTest.LoadsLegacy64bitFormat + DartsDictTest.Legacy64PrefixSearchBeyond64Matches + DartsDictTest.Legacy64SerializeToFileThrows + +Applied-Upstream: https://github.com/BYVoid/OpenCC/commit/8aeb5e69cbd9c7938f02989f68766723a749242c +Last-Update: 2026-08-04 +--- +diff --git a/src/BinaryDict.cpp b/src/BinaryDict.cpp +--- a/src/BinaryDict.cpp ++++ b/src/BinaryDict.cpp +@@ -71,14 +71,12 @@ uint64_t ReadField(const char* data, size_t size, size_t* offset, + // non-zero whenever the dictionary has entries, and an empty dictionary + // is exactly 12 bytes long. + // - Legacy 64-bit layout: the first field is an 8-byte numItems whose high +-// 4 bytes are zero for any realistic dictionary. ++// 32 bits are zero for any realistic dictionary. + size_t DetectFieldWidth(const char* data, size_t size) { + if (size < 8) { + return sizeof(uint32_t); + } +- const bool highBytesZero = +- data[4] == 0 && data[5] == 0 && data[6] == 0 && data[7] == 0; +- if (highBytesZero && size != 3 * sizeof(uint32_t)) { ++ if (LooksLikeLegacy64Field(data) && size != 3 * sizeof(uint32_t)) { + return sizeof(uint64_t); + } + return sizeof(uint32_t); +diff --git a/src/BinaryDict.hpp b/src/BinaryDict.hpp +--- a/src/BinaryDict.hpp ++++ b/src/BinaryDict.hpp +@@ -18,10 +18,28 @@ + + #pragma once + ++#include ++#include ++ + #include "Common.hpp" + #include "SerializableDict.hpp" + + namespace opencc { ++// Returns true if the 8 bytes at `bytes` look like an 8-byte integer field ++// from the legacy 64-bit OCD layout rather than two fixed-width uint32_t ++// fields. Legacy files were written with native size_t fields in native byte ++// order, so the probe is loaded as a native uint64_t: a legacy field has ++// zero high 32 bits, while for a fixed-width file the high half is one of ++// the two uint32 fields (or the start of the darts array), non-zero for any ++// realistic dictionary. Works on both little- and big-endian hosts; legacy ++// files themselves remain readable only on hosts of the byte order that ++// wrote them. ++inline bool LooksLikeLegacy64Field(const void* bytes) { ++ uint64_t word; ++ std::memcpy(&word, bytes, sizeof(word)); ++ return (word >> 32) == 0; ++} ++ + /** + * Binary dictionary for faster deserialization + * @ingroup opencc_cpp_api +diff --git a/src/DartsDict.cpp b/src/DartsDict.cpp +--- a/src/DartsDict.cpp ++++ b/src/DartsDict.cpp +@@ -234,20 +234,19 @@ DartsDictPtr DartsDict::NewFromFile(FILE* fp) { + ? static_cast(fileEnd - currentOffset) + : 0; + +- // Detect the dartsSize field width by reading 8 bytes and checking +- // whether bytes [4..7] are all zero. ++ // Detect the dartsSize field width by reading 8 bytes. + // - Old 64-bit build: dartsSize field is uint64_t (8 bytes); high 32 bits +- // are zero for any realistic file size → bytes [4..7] == 0. ++ // are zero for any realistic file size. + // - Current build (any word size) or old 32-bit build: dartsSize field is +- // uint32_t (4 bytes); bytes [4..7] are the first 4 bytes of the darts +- // array (non-zero for any valid array whose root unit has a non-zero +- // offset). ++ // uint32_t (4 bytes); the other half of the probe is either the first ++ // 4 bytes of the darts array (non-zero for any valid array whose root ++ // unit has a non-zero offset) or dartsSize itself, so the native ++ // uint64_t load has non-zero high bits. + uint8_t probe[8]; + if (fread(probe, 1, 8, fp) != 8) { + throw InvalidFormat("Invalid OpenCC dictionary header (dartsSize)"); + } +- bool is64bit = +- (probe[4] == 0 && probe[5] == 0 && probe[6] == 0 && probe[7] == 0); ++ bool is64bit = LooksLikeLegacy64Field(probe); + + if (is64bit) { + uint64_t dartsSize64; +@@ -340,8 +339,7 @@ DartsDictPtr DartsDict::NewFromBuffer(const char* data, size_t size) { + uint8_t probe[8]; + memcpy(probe, data + offset, 8); + offset += 8; +- bool is64bit = +- (probe[4] == 0 && probe[5] == 0 && probe[6] == 0 && probe[7] == 0); ++ bool is64bit = LooksLikeLegacy64Field(probe); + + if (is64bit) { + uint64_t dartsSize64; diff --git a/packaging/debian/debian/patches/series b/packaging/debian/debian/patches/series index cc0974b02..44a74cd2e 100644 --- a/packaging/debian/debian/patches/series +++ b/packaging/debian/debian/patches/series @@ -4,3 +4,4 @@ 0009-setup.py-Handle-python-binding-instead-of-cmake.patch 0010-fix-git-version-fallback.patch 0011-drop-python-cli-entry-point.patch +0012-fix-legacy-dict-detection-on-big-endian.patch diff --git a/packaging/debian/debian/rules b/packaging/debian/debian/rules index 8162ee71a..acd9d2a55 100755 --- a/packaging/debian/debian/rules +++ b/packaging/debian/debian/rules @@ -51,12 +51,14 @@ execute_after_dh_auto_build: dh_auto_build -O--buildsystem=pybuild -- -s pyproject execute_after_dh_auto_test: - # The testsuite needs the package to be installed - -dh_auto_test -O--buildsystem=pybuild -- -s pyproject + # The testsuite needs the package to be installed. + # The python extension carries no RPATH on purpose (see patch 0009), + # so point it at the freshly built libopencc for the test run. + -LD_LIBRARY_PATH=$(CURDIR)/$(OPENCC_BUILD_DIR)/src$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH} \ + dh_auto_test -O--buildsystem=pybuild -- -s pyproject execute_after_dh_auto_install: dh_auto_install -O--buildsystem=pybuild -- -s pyproject - chrpath --delete debian/tmp/usr/lib/*/dist-packages/opencc/clib/*.so for i in debian/tmp/usr/lib/*/dist-packages/opencc/clib/; do \ mkdir -p $$i/share/; \ ln -sf ../../../../../../share/opencc $$i/share/; \ diff --git a/packaging/debian/debian/tests/CMakeLists.txt b/packaging/debian/debian/tests/CMakeLists.txt index 9df7dbc28..ab513f2d1 100644 --- a/packaging/debian/debian/tests/CMakeLists.txt +++ b/packaging/debian/debian/tests/CMakeLists.txt @@ -3,6 +3,12 @@ project (opencc-integration CXX) include (CTest) enable_testing() set(CTEST_OUTPUT_ON_FAILURE ON) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# The test includes private headers (src/Common.hpp) from the top-level +# source tree, which autopkgtest provides as the working tree. +include_directories(${CMAKE_SOURCE_DIR}/../..) find_package(PkgConfig REQUIRED) find_program (OPENCC_TOOL opencc REQUIRED) diff --git a/packaging/debian/debian/tests/CommandLineConvertTest.cpp b/packaging/debian/debian/tests/CommandLineConvertTest.cpp index 148ccb2d8..c896a8f6d 100644 --- a/packaging/debian/debian/tests/CommandLineConvertTest.cpp +++ b/packaging/debian/debian/tests/CommandLineConvertTest.cpp @@ -81,7 +81,8 @@ class CommandLineConvertTest : public ::testing::Test { #ifdef BAZEL return ""; #else - return CMAKE_SOURCE_DIR "/data/config/"; + // Use the configurations installed by libopencc-data. + return "/usr/share/opencc/"; #endif } @@ -96,9 +97,11 @@ class CommandLineConvertTest : public ::testing::Test { std::string TestCommand(const std::string& config, const std::string& inputFile, const std::string& outputFile) const { - std::string cmd = OpenccCommand() + " -i " + inputFile + " -o " + - outputFile + " -c " + ConfigurationDirectory() + config + - ".json"; + // testcases.json is written against conversions with the tofu-risk + // dictionaries enabled, matching the upstream ConvertFromJson test. + std::string cmd = OpenccCommand() + " --include-tofu-risk-dictionaries" + + " -i " + inputFile + " -o " + outputFile + " -c " + + ConfigurationDirectory() + config + ".json"; #ifdef BAZEL cmd += " --path " + runfiles_->Rlocation("_main/data/dictionary") + "/" + " --path " + runfiles_->Rlocation("_main/data/config") + "/"; @@ -134,7 +137,8 @@ CasesByConfig LoadCases(const std::string& jsonPath) { } rapidjson::Document doc; - doc.Parse(content.c_str()); + doc.Parse(content.c_str()); if (doc.HasParseError() || !doc.IsObject() || !doc.HasMember("cases") || !doc["cases"].IsArray()) { throw std::runtime_error("Invalid testcases.json format"); @@ -164,7 +168,10 @@ TEST_F(CommandLineConvertTest, ConvertFromJson) { const std::string casesPath = runfiles_->Rlocation("_main/test/testcases/testcases.json"); #else - const std::string casesPath = CMAKE_SOURCE_DIR "/test/testcases/testcases.json"; + // CMAKE_SOURCE_DIR is debian/tests; the testcases live in the top-level + // source tree, which autopkgtest provides as the working tree. + const std::string casesPath = + CMAKE_SOURCE_DIR "/../../test/testcases/testcases.json"; #endif const CasesByConfig cases = LoadCases(casesPath); diff --git a/packaging/debian/debian/tests/README.md b/packaging/debian/debian/tests/README.md index 12d6cec95..5fb127b6b 100644 --- a/packaging/debian/debian/tests/README.md +++ b/packaging/debian/debian/tests/README.md @@ -1,3 +1,13 @@ -Fork from ../../test, please refresh this file if source has changed. +CommandLineConvertTest.cpp is a fork of the ConvertFromJson test in +../../test/CommandLineConvertTest.cpp, trimmed down and adjusted to run +against the installed packages (binary and configurations from +/usr/bin and /usr/share/opencc) instead of the build tree. Please +refresh it when the upstream test or testcases.json format changes. -Test with installed opencc tool and library. +Tests: +- cli-smoke: quick conversion checks with the installed opencc CLI. +- integration: builds the forked gtest against libopencc-dev via + pkg-config and runs every entry of ../../test/testcases/testcases.json + through the installed opencc tool and configurations. +- jieba-plugin: checks that the opencc-jieba plugin loads and the + *_jieba.json configurations produce segmentation-aware output. diff --git a/packaging/debian/debian/tests/cli-smoke b/packaging/debian/debian/tests/cli-smoke new file mode 100755 index 000000000..7b3c78f83 --- /dev/null +++ b/packaging/debian/debian/tests/cli-smoke @@ -0,0 +1,24 @@ +#!/bin/sh +# Smoke-test the installed opencc CLI with the installed configurations. + +set -eu + +check() { + config="$1" + input="$2" + expected="$3" + actual="$(printf '%s\n' "$input" | opencc -c "$config")" + if [ "$actual" != "$expected" ]; then + echo "FAIL: $config: '$input' -> '$actual', expected '$expected'" >&2 + exit 1 + fi + echo "PASS: $config: '$input' -> '$actual'" +} + +opencc --version + +check s2t.json '汉字转换' '漢字轉換' +check t2s.json '漢字轉換' '汉字转换' +check s2twp.json '为什么你要学习编程?因为软件开发的信道很宽。' \ + '為什麼你要學習程式設計?因為軟體開發的通道很寬。' +check s2hk.json '内地与香港' '內地與香港' diff --git a/packaging/debian/debian/tests/control b/packaging/debian/debian/tests/control new file mode 100644 index 000000000..a2e0a38c5 --- /dev/null +++ b/packaging/debian/debian/tests/control @@ -0,0 +1,17 @@ +Tests: cli-smoke +Depends: opencc +Restrictions: allow-stderr, + +Tests: integration +Depends: + build-essential, + cmake, + googletest, + pkgconf, + rapidjson-dev, + @, +Restrictions: allow-stderr, + +Tests: jieba-plugin +Depends: opencc-jieba +Restrictions: allow-stderr, diff --git a/packaging/debian/debian/tests/control.disabled b/packaging/debian/debian/tests/control.disabled deleted file mode 100644 index a23db756f..000000000 --- a/packaging/debian/debian/tests/control.disabled +++ /dev/null @@ -1,9 +0,0 @@ -#Tests: integration -#Depends: -# build-essential, -# cmake, -# googletest, -# pkgconf, -# rapidjson-dev, -# @, -#Restrictions: allow-stderr, diff --git a/packaging/debian/debian/tests/integration b/packaging/debian/debian/tests/integration index c08799240..73888c1bd 100755 --- a/packaging/debian/debian/tests/integration +++ b/packaging/debian/debian/tests/integration @@ -1,14 +1,12 @@ #!/bin/sh +# Build the forked CommandLineConvertTest against the installed +# libopencc-dev/opencc/libopencc-data packages and run it via ctest. -set -ex +set -eu -cd "$(dirname "$0")" -mkdir -p build -cd build -cmake .. -make -make test || true -echo $AUTOPKGTEST_TMP -cat ${AUTOPKGTEST_TMP}/../*/src/debian/tests/build/Testing/Temporary/LastTest.log -cd .. -rm -rf build +srcdir="$(pwd)" +builddir="${AUTOPKGTEST_TMP:-$(mktemp -d)}/integration-build" + +cmake -S "$srcdir/debian/tests" -B "$builddir" +cmake --build "$builddir" +ctest --test-dir "$builddir" --output-on-failure diff --git a/packaging/debian/debian/tests/jieba-plugin b/packaging/debian/debian/tests/jieba-plugin new file mode 100755 index 000000000..eb518912c --- /dev/null +++ b/packaging/debian/debian/tests/jieba-plugin @@ -0,0 +1,27 @@ +#!/bin/sh +# Smoke-test the opencc-jieba segmentation plugin: the *_jieba.json +# configurations only work when the plugin and its dictionary load. + +set -eu + +check() { + config="$1" + input="$2" + expected="$3" + actual="$(printf '%s\n' "$input" | opencc -c "$config")" + if [ "$actual" != "$expected" ]; then + echo "FAIL: $config: '$input' -> '$actual', expected '$expected'" >&2 + exit 1 + fi + echo "PASS: $config: '$input' -> '$actual'" +} + +test -e /usr/lib/*/opencc/plugins/libopencc-jieba.so + +check s2twp_jieba.json '为什么你要学习编程?因为软件开发的信道很宽。' \ + '為什麼你要學習程式設計?因為軟體開發的通道很寬。' +check s2twp_jieba.json '鼠标里面有内存条吗?还有硬盘和数据库。' \ + '滑鼠裡面有記憶體條嗎?還有硬碟和資料庫。' +check s2t_jieba.json '着重号用在这里。' '着重號用在這裏。' +# Without segmentation, plain s2twp mangles 的士兵 into 計程車兵. +check s2twp_jieba.json '城堡里的士兵' '城堡裡的士兵'